FFmpeg 컴파일
Msys2 설치 및 종속성
mingw-w64-ucrt-x86_64-{clang,lld,libc++,make,cmake,ninja,diffutils,pkg-config,pkgconf}
mingw-w64-x86_64-{lld,make,cmake,ninja,diffutils,pkg-config,pkgconf}
pacman -S mingw-w64-ucrt-x86_64-toolchain mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-vulkan-devel mingw-w64-ucrt-x86_64-vulkan-devel
pacman -S mingw-w64-x86_64-{angleproject,glfw,glew,egl-headers,gles-headers}
pacman -S mingw-w64-ucrt-x86_64-{angleproject,glfw,glew,egl-headers,gles-headers}
pacman -S mingw-w64-x86_64-{yasm,nasm,SDL2,fdk-aac,lame,x264,x265,libvpx,libvpl,svt-av1,dav1d}
pacman -S mingw-w64-ucrt-x86_64-{yasm,nasm,SDL2,fdk-aac,lame,x264,x265,libvpx,libvpl,svt-av1,dav1d}
pacman -S mingw-w64-x86_64-{sdl3,freetype,sdl3-image,sdl3-ttf,SDL2_image,SDL2_ttf,harfbuzz,fontconfig,fribidi}
pacman -S mingw-w64-ucrt-x86_64-{sdl3,freetype,sdl3-image,sdl3-ttf,SDL2_image,SDL2_ttf,harfbuzz,fontconfig,fribidi}
Msys2를 통한 컴파일
Linux에서 Mingw32로 크로스 컴파일 시에는 아래 옵션을 사용합니다:
--cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32
옵션: AV1 인코더
--enable-libsvtav1 --enable-libdav1d enable-libmfx
빌드 설정 예제
./configure --prefix=D://libffmpeg --pkg-config-flags=--static --enable-gpl --enable-version3 --enable-shared --enable-static --enable-sdl2 --enable-libx264 --enable-libx265 --enable-libmp3lame --enable-libfdk-aac --enable-libmfx --enable-nonfree --enable-libvpx --extra-ldflags="-static -static-libgcc -static-libstdc++" --extra-ldexeflags="-static -static-libgcc -static-libstdc++" --pkg-config-flags="--static"
옵션: drawtext 기능
--enable-libfreetype --enable-libharfbuzz --enable-libfontconfig --enable-libfribidi
Linux에서 컴파일
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-version3 --enable-shared --enable-static --enable-sdl2 --enable-libx264 --enable-libx265 --enable-libmp3lame --enable-libfdk-aac --enable-libmfx --enable-nonfree --enable-libvpx
Android용 컴파일
./configure \
--prefix=/home/build1 \
--enable-shared \
--enable-gpl \
--enable-neon \
--enable-hwaccels \
--enable-postproc \
--enable-jni \
--enable-small \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffplay \
--disable-avdevice \
--disable-debug \
--disable-static \
--disable-doc \
--disable-symver \
--pkg-config=pkg-config \
--enable-cross-compile \
--cc=/home/one/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android26-clang \
--cxx=/home/one/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android26-clang++ \
--cross-prefix=/home/one/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm- \
--sysroot=/home/one/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot \
--extra-cflags="-Os -fPIC -D__ANDROID_API__=26 -DANDROID" \
--target-os=android \
--arch=aarch64 \
--cpu=armv8-a