Linux에서 소스에서 FFmpeg 빌드하기

이 페이지는 Linux에서 FFmpeg를 구성하고 빌드하는 방법을 설명합니다. 여기에는 다음이 포함됩니다:

  • FFmpeg 소스 코드를 가져옵니다.
  • 필요한 종속성을 설치합니다.
  • 명령줄에서 FFmpeg를 구성합니다.
  • 개발 라이브러리를 빌드합니다.

FFmpeg 소스 코드 가져오기

다음과 같은 방법으로 FFmpeg 소스 코드를 얻을 수 있습니다:

  • FFmpeg 다운로드 페이지에서 다운로드합니다.
  • git에서 복제. 예를 들어, 이 명령은 FFmpeg 소스 버전 7.1을 ~/ffmpeg 에 복제합니다.
    $ git clone --branch n7.1 https://git.ffmpeg.org/ffmpeg.git ffmpeg

Qt Multimedia 메인 페이지에 설명된 것과 동일한 FFmpeg 버전을 사용하는 것이 좋습니다.

다음 단락에서는 FFmpeg 소스 코드를 ~/ffmpeg 에 저장한다고 가정합니다.

전제 조건

FFmpeg를 빌드하려면 다음 도구와 패키지가 필요합니다:

  • Yasm
  • 선택한 보안 백엔드용 개발자 패키지(아래 참조).

패키지 설치하기

필요한 패키지(FFmpeg용 Yasm 포함)를 설치하려면 실행합니다:

$ apt-get install yasm

또한 보안 백엔드를 활성화하는 경우 해당 개발자 패키지가 필요합니다:

$ apt-get install libssl-dev

다른 백엔드의 경우 관련 패키지를 설치합니다:

  • OpenSSL의 경우: libssl-dev.
  • GnuTLS의 경우: libgnutls-dev.
  • LibreSSL(libtls): libtls-dev.
  • MbedTLS의 경우: libmbedtls-dev.

FFmpeg 구성 및 빌드

~/ffmpeg 디렉터리 내에 build 디렉터리를 생성하고 그 안으로 이동합니다:

$ mkdir ~/ffmpeg/build
$ cd ~/ffmpeg/build

FFmpeg를 구성하려면 실행합니다:

$ ../configure --prefix=/usr/local/ffmpeg --disable-doc --enable-network --enable-shared

--prefix 인수는 빌드 후 FFmpeg 개발 라이브러리가 설치되는 경로를 지정합니다. 설명서가 필요하지는 않지만 네트워크 기능이 활성화되어 있어야 합니다. FFmpeg를 정적 라이브러리로 빌드하려면 --enable-shared 옵션을 생략하세요.

보안 백엔드가 있는 FFmpeg를 빌드하는 경우 적절한 옵션을 선택하세요:

$ ../configure --enable-openssl # For OpenSSL
$ ../configure --enable-gnutls # For GnuTLS
$ ../configure --enable-libtls # For LibreSSL (libtls)
$ ../configure --enable-mbedtls # For MbedTLS

앞서 언급한 대로 해당 개발자 패키지가 설치되어 있는지 확인하세요.

하드웨어 가속

기본적으로 FFmpeg는 적절한 패키지가 설치되어 있지 않으면 하드웨어 가속 없이 빌드됩니다. 특히 GPU를 지원하는 시스템에서 성능을 향상시키려면 VAAPI 개발 패키지를 설치하는 것이 좋습니다:

$ apt-get install libva-dev

이렇게 하면 FFmpeg가 구성 중에 VAAPI 지원을 감지할 수 있습니다.

FFmpeg를 NVIDIA 그래픽 카드와 함께 사용할 경우 NVIDIA 코덱 헤더를 설치해야 합니다. 다음 리포지토리에서 다운로드할 수 있습니다: GitHub의 NVIDIA 코덱 헤더.

헤더를 빌드하고 설치하려면 다음 명령을 실행하세요:

$ mkdir ~/nv-codec-headers
$ cd ~/nv-codec-headers
$ git clone https://github.com/FFmpeg/nv-codec-headers.git
$ mkdir build
$ cd build
$ make -j install

최신 nv-codec-headers 은 이전 드라이버 버전과 호환되지 않을 수 있으므로 사용 중인 NVIDIA 드라이버 버전과 nv-codec-headers 의 호환성을 확인해야 합니다. 자세한 내용은 공식 문서를 참조하세요.

자동 감지 비활성화하기

기본적으로 FFmpeg는 빌드 시스템에서 사용 가능한 종속성을 자동으로 감지하려고 시도합니다. 여기에는 하드웨어 가속 및 보안 백엔드가 포함됩니다. 자동 감지를 비활성화하려면(예: 불필요한 종속성 컴파일을 피하기 위해) 다음을 사용할 수 있습니다:

$ ../configure --disable-autodetect

보안 백엔드 또는 하드웨어 가속과 같은 추가 종속성이 있는 FFmpeg를 빌드하는 경우 대상 시스템에 필요한 라이브러리가 설치되어 있는지 확인하세요. 이를 처리하는 방법에는 여러 가지가 있습니다:

  • 종속 요소의 바이너리를 FFmpeg와 함께 제공합니다.
  • 대상 시스템에 필요한 바이너리가 설치되어 있는지 확인합니다.
  • 실제 라이브러리를 조회하고 실제 라이브러리를 찾을 수 없는 경우 오류 코드를 반환할 수 있는 라이브러리 스텁을 구현합니다.

Linux의 RPATH 및 RUNPATH

Linux에서 FFmpeg는 라이브러리 경로를 관리하기 위해 RPATH 및 RUNPATH 메타데이터 섹션을 모두 사용합니다. 올바른 실행 경로를 설정하려면 patchelf 유틸리티를 사용하는 것이 좋습니다:

$ patchelf --set-rpath "new/runpath" lib.so

기본적으로 patchelf 은 RPATH를 수정하는데, Linux에서는 RPATH가 더 이상 사용되지 않는 것으로 간주되기 때문입니다. 상대 실행 경로를 설정하려면 $ORIGIN 변수를 사용하여 실행 파일의 위치에 상대적인 경로를 만들 수 있습니다:

$ patchelf --set-rpath "$ORIGIN/../lib" lib.so

이 접근 방식은 상대적 위치에 따라 라이브러리를 연결하여 이식성을 보장합니다.

FFmpeg 빌드

원하는 옵션으로 FFmpeg를 구성했으면 빌드하고 설치할 수 있습니다:

$ make -j install

빌드가 오류 없이 완료되면 /usr/local/ffmpeg 디렉터리에 FFmpeg 개발 라이브러리가 설치됩니다. 그런 다음 FFMPEG_DIR 변수를 설정하여 Qt Multimedia 을 구성할 때 이 경로를 참조할 수 있습니다.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.