이 페이지에서

Linux에서 Android용 FFmpeg 소스 코드 빌드

이 페이지에서는 Android용 FFmpeg을 구성하고 빌드하는 방법을 설명합니다. Android용 컴파일은 크로스 컴파일이며, 호스트 시스템으로 Linux를 사용한다고 가정합니다. 필요한 단계는 다음과 같습니다:

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

FFmpeg 소스 코드 구하기

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

  • FFmpeg 다운로드 페이지에서 다운로드합니다.
  • Git에서 클론합니다. 예를 들어, 다음 명령어는 FFmpeg 소스 코드 버전 9.0.1을 ~/ffmpeg 로 클론합니다.
    git clone --branch n9.0.1 https://git.ffmpeg.org/ffmpeg.git ffmpeg

Qt Multimedia 메인 페이지에 명시된 것과 동일한 FFmpeg 버전을 사용하는 것이 권장됩니다.

다음 내용에서는 FFmpeg 소스 코드를 ~/ffmpeg 에 저장한 것으로 가정합니다.

필수 조건

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

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

또한 Android NDK, SDK 및 JDK가 설치되고 구성되어 있어야 합니다. 설정에 대한 자세한 정보는 ‘Qt for Android 시작하기’에서 확인할 수 있습니다.

패키지 설치

필요한 패키지(FFmpeg용 Yasm 포함)를 설치하려면 다음 명령을 실행하십시오:

apt-get install yasm

또한, 보안 백엔드를 활성화하는 경우 해당 개발자 패키지가 필요합니다. 예를 들면 다음과 같습니다:

apt-get install libssl-dev

다른 백엔드의 경우, 관련 패키지를 설치하십시오:

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

환경 변수 설정

이 부분은 꼭 필요한 것은 아니지만, configure 명령을 좀 더 깔끔하고 간결하게 만드는 데 도움이 됩니다.

다음 명령은 Android SDK가 ~/Android/sdk 에 설치되어 있고 Android NDK 버전이 26.1.10909125라고 가정합니다.

export ANDROID_NDK_ROOT=~/Android/sdk/ndk/26.1.10909125

'Qt for Android 시작하기' 문서에 명시된 것과 동일한 NDK 버전을 사용하는 것이 좋습니다.

빌드해야 할 아키텍처는 대상 기기에 따라 다릅니다.

  • aarch64 (ARM64-v8a): 대부분의 최신 Android 기기에서 사용됩니다(64비트).
  • armv7 (armeabi-v7a): 구형 32비트 ARM 기기용입니다.
  • x86: 주로 인텔 프로세서에서 실행되는 Android 에뮬레이터용입니다.
  • x86_64: 64비트 인텔 기반 에뮬레이터 또는 특수 기기를 위한 아키텍처입니다.

아키텍처별 변수 설정

  • aarch64
    export ARCH=aarch64
    export TOOLCHAIN_ARCH=aarch64-linux-android
    export CPU=armv8-a
  • armv7
    export ARCH=armv7
    export TOOLCHAIN_ARCH=armv7a-linux-androideabi
    export CPU=armv7-a
  • x86
    export ARCH=x86
    export TOOLCHAIN_ARCH=i686-linux-android
    export CPU=i686
  • x86_64
    export ARCH=x86_64
    export TOOLCHAIN_ARCH=x86_64-linux-android
    export CPU=x86-64

FFmpeg 구성 및 빌드

~/ffmpeg 디렉터리 내에 build-android 디렉터리를 생성하고 해당 디렉터리로 이동합니다:

mkdir ~/ffmpeg/build-android
cd ~/ffmpeg/build-android

FFmpeg을 구성하려면 다음 명령을 실행하십시오:

../configure --prefix=../install-android --disable-doc --enable-network --enable-shared \
    --host-os=linux-x86_64 --target-os=android \
    --enable-cross-compile --arch=${ARCH} --cpu=${CPU} \
    --enable-jni --enable-mediacodec \
    --sysroot=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot \
    --sysinclude=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/ \
    --cc=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/${TOOLCHAIN_ARCH}24-clang \
    --cxx=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/${TOOLCHAIN_ARCH}24-clang++ \
    --strip=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip

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

보안 백엔드를 사용하여 FFmpeg를 빌드하는 경우, 4가지 옵션 중에서 선택할 수 있습니다(Linux용 빌드 시와 동일). 하지만 현재 QtMultimedia 유지보수 담당자가 테스트한 것은 OpenSSL뿐입니다. 적절한 옵션을 선택하여 FFmpeg 구성 단계에서 추가하십시오:

--enable-openssl # For OpenSSL
--enable-gnutls # For GnuTLS
--enable-libtls # For LibreSSL (libtls)
--enable-mbedtls # For MbedTLS

OpenSSL을 사용하는 경우, FFmpeg 구성 시 다음 옵션도 추가해야 합니다. <ANDROID_OPENSSL_INCLUDE_DIR> 와 <ANDROID_OPENSSL_LIBS_DIR> 를 실제 경로로 대체하는 것을 잊지 마십시오.

--extra-cflags=-I<ANDROID_OPENSSL_INCLUDE_DIR> --extra-ldflags=-L<ANDROID_OPENSSL_LIBS_DIR>

보안 백엔드가 포함된 경우, 대상 플랫폼에 올바른 라이브러리가 설치되었는지 확인하거나 스텁을 사용하여 직접 배포에 주의를 기울여야 합니다. 링크된 OpenSSL 라이브러리는 버전 접미사 없이 libssl.so 및 libcrypto.so 로 명명되어야 합니다. 사용자는 라이브러리가 FFmpeg 컴파일 시 사용된 OpenSSL 헤더와 동일한 ABI 버전을 갖도록 보장해야 합니다. 자세한 내용은 ‘Android용 OpenSSL 지원 추가’를 참조하십시오.

Google Play는 16KB 페이지 크기를 요구하므로, 호환되는 FFmpeg 바이너리를 빌드하려면 FFmpeg에 다음 구성 옵션을 추가하십시오.

--extra-ldflags=-Wl,-z,max-page-size=16384

Google Play 요구 사항에 대해서는 'Google Play 16KB 페이지 크기 호환성 요구 사항'을 참조하십시오.

configure 명령이 완료되면, make 명령을 사용하여 FFmpeg를 빌드하고 설치하십시오.

make -j install

오류 없이 빌드가 완료되면 FFmpeg 개발 라이브러리가 ../install-android 디렉터리에 설치됩니다. Qt Multimedia 를 빌드하는 경우, 이 경로는 Qt Multimedia 를 구성할 때 사용되는 FFMPEG_DIR 변수에 저장됩니다.

© 2026 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.