Windows에서 Android용 소스에서 FFmpeg 빌드하기

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

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

FFmpeg 소스 코드 가져오기

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

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

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

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

전제 조건

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

  • MinGW-w64 컴파일러.
  • MSYS2.
  • MSYS 패키지(make, yasm).

또한 Android NDK, SDK 및 JDK가 설치 및 구성되어 있어야 합니다. 이러한 설정에 대한 자세한 내용은 Android용 Qt 시작하기를 참조하십시오.

Qt에서 지원하는 권장 컴파일러는 Windows용 Qt - 소스에서 빌드를 참조하십시오. 지원되는 MinGW-w64 컴파일러는 Qt Online Installer 를 사용하여 설치할 수 있습니다.

MSYS2 설치하기

MSYS2를 설치하려면 다음과 같이 할 수 있습니다:

이 문서의 지침은 winget 을 사용할 때 기본 경로인 C:\msys64\ 에 설치된 MSYS2 를 기준으로 합니다.

설치가 완료되면 Windows 시작 메뉴에서 MSYS2 MINGW64 셸을 시작하고 이를 사용하여 필요한 라이브러리를 설치합니다.

$ pacman -S --noconfirm make yasm

FFmpeg를 빌드하기 전에 MSYS2의 PATH 에 컴파일러가 있어야 합니다. MinGW-w64가 C:\Qt\Tools\mingw1310_64\bin 에 설치되어 있는 경우 PATH 환경 변수를 내보내 PATH 에 추가할 수 있습니다.

$ export PATH=/c/Qt/Tools/mingw1310_64/bin:$PATH

pacman을 사용하여 MinGW-w64를 설치할 수도 있습니다.

$ pacman -S mingw-w64-x86_64-toolchain

환경 변수 설정

이 부분은 꼭 필요한 것은 아니지만 구성 명령을 좀 더 깔끔하고 짧게 유지하는 데 도움이 됩니다.

다음 명령은 안드로이드 SDK가 C:\Users\<USER>\AppData\Local\Android\Sdk 에 설치되어 있고 안드로이드 NDK 버전이 26.1.10909125 이라고 가정합니다. 경로의 <USER> 을 실제 사용자 이름으로 바꾸는 것을 잊지 마세요.

$ export ANDROID_NDK_ROOT=/c/Users/<USER>/AppData/Local/Android/Sdk/ndk/26.1.10909125

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

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

  • aarch64(ARM64-v8a): 대부분의 최신 안드로이드 기기(64비트)에서 사용됩니다.
  • ARMV7 (ARMABI-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 구성 및 빌드하기

준비된 MSYS2 셸에서 /c/FFmpeg 디렉토리로 이동합니다. 이 디렉터리에서 FFmpeg 빌드 아티팩트가 포함될 build-android 디렉터리를 생성하고 해당 디렉토리로 이동합니다.

$ cd /c/FFmpeg/build-android

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

$ ../ffmpeg/configure --prefix=../install-android --disable-doc --enable-network --enable-shared \
    --host-os=windows-x86_64 --target-os=android \
    --enable-cross-compile --arch=${ARCH} --cpu=${CPU} \
    --enable-jni --enable-mediacodec \
    --sysroot=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-x86_64/sysroot \
    --sysinclude=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/ \
    --cc=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-x86_64/bin/${TOOLCHAIN_ARCH}24-clang \
    --cxx=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-x86_64/bin/${TOOLCHAIN_ARCH}24-clang++ \
    --strip=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-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.solibcrypto.so 으로 호출해야 합니다. 사용자는 라이브러리가 FFmpeg가 컴파일된 OpenSSL 헤더와 동일한 ABI 버전인지 확인해야 합니다. 자세한 내용은 Android용 OpenSSL 지원 추가하기를 참조하세요.

configure 명령이 완료되면 make 명령을 사용하여 FFmpeg를 빌드하고 설치합니다.

$ make -j install

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

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