ffmpeg的centos、msys2、msvc编译
msys2 和 centos
https://ffmpeg.org/download.html https://ffmpeg.zeranoe.com/builds/ Windows MSYS2准备 1)安装MSYS2 http://www.msys2.org/ http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20161025.exe // http://repo.msys2.org/distrib/i686/msys2-i686-20161025.exe 2)进入msys2的mingw64 C:\> C:\msys64\msys2_shell.cmd -mingw64 -full-path -here // 编译64位(x86_64-w64-mingw32) C:\> C:\msys64\msys2_shell.cmd -mingw32 -full-path -here // 编译32位(i686-w64-mingw32),在configure后需要加入--host=i686-w64-mingw32 3)安装开发工具 编译x264, x265 和 ffplay,需要安装mingw工具链、nasm等: ### msys2 ### $ pacman -S base-devel git mercurial cvs wget curl p7zip nasm yasm perl ruby python2 $ pacman -S mingw-w64-x86_64-toolchain // mingw-w64-i686-toolchain $ pacman -S mingw-w64-x86_64-cmake // mingw-w64-i686-cmake $ pacman -S mingw-w64-x86_64-qt-creator // mingw-w64-i686-qt-creator,或者安装cmake推荐的mingw-w64-x86_64-qt5可选包 注:qt5的大小超过了1GB,在编译x265时候作为cmake的配置,虽然是cmake的可选项,但是建议安装。 ### centos ### $ sudo yum group install "Development Tools" $ sudo yum install wget curl git $ sudo yum install glibc-static libstdc++-static $ vim /etc/yum.repos.d/nasm.repo // repo没有2.13版本的nasm,因此手动安装;debian 需要手动下载deb:https://packages.debian.org/sid/nasm [nasm] name=The Netwide Assembler baseurl=http://www.nasm.us/pub/nasm/stable/linux/ enabled=1 gpgcheck=0 [nasm-testing] name=The Netwide Assembler (release candidate builds) baseurl=http://www.nasm.us/pub/nasm/testing/linux/ enabled=0 gpgcheck=0 [nasm-snapshot] name=The Netwide Assembler (daily snapshot builds) baseurl=http://www.nasm.us/pub/nasm/snapshots/latest/linux/ enabled=0 gpgcheck=0 $ sudo yum install nasm $ sudo yum install cmake 下载和编译x264: $ git clone http://git.videolan.org/git/x264.git $ cd x264 $ git checkout -b stable remotes/origin/stable ### msys2 ### $ make clean // git reset --hard // git clean -xf // rm -rf /usr/local/x264 $ ./configure --prefix=/usr/local/x264 --enable-static --enable-strip --enable-pic // --host=i686-w64-mingw32 $ make -j8 $ make install // $ ldd /usr/local/x264/bin/x264.exe | grep -v /c/WINDOWS | sort // 将依赖复制到bin下,就可以在CMD里直接运行x264.exe程序了 // liblsmash-2.dll => /mingw64/bin/liblsmash-2.dll (0x64e40000) // i686不需要复制 // $ cp /mingw64/bin/liblsmash-2.dll /usr/local/x264/bin $ cd .. ### centos ### $ ./configure --prefix=/usr/local/x264 --enable-static --enable-strip --enable-pic $ sudo make -j8 $ sudo make install $ cd .. 下载SDL2(生成ffplay必要): $ curl -L http://www.libsdl.org/release/SDL2-2.0.8.tar.gz > SDL2-2.0.8.tar.gz $ tar xzvf SDL2-2.0.8.tar.gz 编译SDL2(生成ffplay必要): ### msys2 ### $ cd SDL2-2.0.8 // $ make distclean // rm -rf /usr/local/sdl2 $ ./configure --prefix=/usr/local/sdl2 --enable-static // --host=i686-w64-mingw32 $ make -j8 $ make install // $ ldd /usr/local/sdl2/bin/SDL2.dll | grep -v /c/WINDOWS | sort // ??? => ??? (0x180000) // 不需要复制 $ cd .. ### centos ### $ cd SDL2-2.0.8 // $ sudo make distclean // sudo rm -rf /usr/local/sdl2 $ ./configure --prefix=/usr/local/sdl2 --enable-static $ sudo make -j8 $ sudo make install $ cd .. 下载x265源码: $ curl -L http://ftp.videolan.org/pub/videolan/x265/x265_2.7.tar.gz > x265_2.7.tar.gz $ tar xzvf x265_2.7.tar.gz 或者 $ hg clone https://bitbucket.org/multicoreware/x265 编译x265: ### msys2 ### $ cd x265_2.7/build/msys 编辑toolchain-x86_64-w64-mingw32.cmake文件,全部替换x86_64-w64-mingw32-为空: $ vim toolchain-x86_64-w64-mingw32.cmake :%s/x86_64-w64-mingw32-//g $ ./make-x86_64-w64-mingw32-Makefiles.sh // 注意:32位也调用此处 出现CMake配置窗口,编辑CMAKE_INSTALL_PREFIX为c:/msys64/usr/local/x265(请一定指定盘符), 勾选ENABLE_PIC,去掉勾选ENABLE_SHARED 然后一次点击Configure和Generate按钮,关闭CMake窗口 $ make -j8 $ make install // $ ldd /usr/local/x265/bin/x265.exe | grep -v /c/WINDOWS | sort // libgcc_s_seh-1.dll => /mingw64/bin/libgcc_s_seh-1.dll (0x61440000) // libstdc++-6.dll => /mingw64/bin/libstdc++-6.dll (0x6fc40000) // libwinpthread-1.dll => /mingw64/bin/libwinpthread-1.dll (0x64940000) // 然后在CMD里单独执行,如果没任何提示就失败了,用Dependency Walker检查,发现需要LIBSTDC++-6.DLL等库: // $ cp /mingw64/bin/libstdc++-6.dll \ // /mingw64/bin/libgcc_s_seh-1.dll \ // /mingw64/bin/libwinpthread-1.dll \ // /usr/local/x265/bin // i868的情况: // $ cp /mingw32/bin/libstdc++-6.dll \ // /mingw32/bin/libwinpthread-1.dll \ // /mingw32/bin/libgcc_s_dw2-1.dll \ // /usr/local/x265/bin $ cd ../../.. ### centos ### $ cd x265_2.7/build/linux $ ./make-Makefiles.bash 编辑CMAKE_INSTALL_PREFIX为/usr/local/x265,勾选ENABLE_PIC(默认勾选),去掉勾选ENABLE_SHARED,输入c,g退出 $ sudo make -j8 $ sudo make install $ cd ../../.. 下载fdk-aac https://sourceforge.net/projects/opencore-amr/ https://github.com/mstorsjo/fdk-aac $ tar xzvf fdk-aac-0.1.6.tar.gz 编译fdk-aac $ cd fdk-aac-0.1.6 $ rm -rf /usr/local/fdk-aac ### msys2 ### $ ./configure --prefix=/usr/local/fdk-aac --enable-static // --host=i686-w64-mingw32 $ make -j8 $ make install // $ ldd /usr/local/fdk-aac/bin/libfdk-aac-1.dll | grep -v /c/WINDOWS | sort // 无依赖 $ cd .. ### centos ### $ sudo ./configure --prefix=/usr/local/fdk-aac --enable-static $ sudo make -j8 $ sudo install $ cd .. centos更新openssl 下载openssl $ yum info openssl // 查看下版本信息是否未1.1.x,若是,跳过更新openssl这步 $ wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz $ tar xvzf openssl-1.1.0g.tar.gz $ cd openssl-1.1.0g $ ./config --prefix=/usr/local/openssl $ sudo make -j8 $ sudo make install 编译ffmpeg 注:ffmpeg v3.4 的 ffplay.c 有个不支持SDL2的BUG,可以将 v3.4.1 的 fftools/ffplay.c 替换过来。 ### msys2 ### 检查PKG配置 PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/x265/lib/pkgconfig:/usr/local/x264/lib/pkgconfig:/usr/local/sdl2/lib/pkgconfig:/usr/local/fdk-aac/lib/pkgconfig" pkg-config --exists --print-errors x264 x265 sdl2 fdk-aac 直接返回表示成功。如果失败,会返回错误提示。 // 静态库配置 $ cd ffmpeg3.4 // $ rm -rf /usr/local/ffmpegstatic // make distclean // make clean // git reset --hard // git clean -xf 注:这里没有使用msvc工具链,而是msys的。 $ PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/x265/lib/pkgconfig:/usr/local/x264/lib/pkgconfig:/usr/local/sdl2/lib/pkgconfig:/usr/local/fdk-aac/lib/pkgconfig" ./configure \ --prefix=/usr/local/ffmpegstatic --enable-static --disable-shared \ --pkg-config-flags="--static" --extra-ldflags="-static -static-libgcc -static-libstdc++" \ --enable-gpl --enable-small --disable-doc --enable-nonfree \ --enable-libfdk-aac --enable-libx264 --enable-libx265 --enable-openssl \ --enable-pic --disable-debug $ make -j8 $ make install 下面是加入--extra-ldflags="-static -static-libgcc -static-libstdc++"的情况: $ ldd /usr/local/ffmpegstatic/bin/ffmpeg.exe | grep -v /c/WINDOWS | sort 然后在CMD里单独执行,如果没任何提示就失败了,用Dependency Walker检查,发现需要的库: $ cp /mingw64/bin/libwinpthread-1.dll \ /mingw64/bin/libgcc_s_seh-1.dll \ /usr/local/ffmpegstatic/bin i868的情况: //$ cp /mingw32/bin/libwinpthread-1.dll \ /mingw32/bin/libgcc_s_dw2-1.dll \ /usr/local/ffmpegstatic/bin 下面是未加--extra-ldflags="-static -static-libgcc -static-libstdc++"的情况: $ ldd /usr/local/ffmpegstatic/bin/ffmpeg.exe | grep -v /c/WINDOWS | sort libbz2-1.dll => /usr/local/ffmpegstatic/bin/libbz2-1.dll (0x626c0000) LIBEAY32.dll => /usr/local/ffmpegstatic/bin/LIBEAY32.dll (0x63080000) libiconv-2.dll => /usr/local/ffmpegstatic/bin/libiconv-2.dll (0x66000000) liblzma-5.dll => /usr/local/ffmpegstatic/bin/liblzma-5.dll (0x63cc0000) libwinpthread-1.dll => /usr/local/ffmpegstatic/bin/libwinpthread-1.dll (0x64940000) SDL2.dll => /usr/local/ffmpegstatic/bin/SDL2.dll (0x6c740000) zlib1.dll => /usr/local/ffmpegstatic/bin/zlib1.dll (0x62e80000) 然后在CMD里单独执行,如果没任何提示就失败了,用Dependency Walker检查,发现需要LIBSTDC++-6.DLL等库: $ cp /mingw64/bin/libwinpthread-1.dll \ /mingw64/bin/libbz2-1.dll \ /mingw64/bin/libiconv-2.dll \ /mingw64/bin/LIBEAY32.dll \ /mingw64/bin/liblzma-5.dll \ /mingw64/bin/zlib1.dll \ /usr/local/fdk-aac/bin/libfdk-aac-1.dll \ /usr/local/sdl2/bin/sdl2.dll \ /mingw64/bin/libstdc++-6.dll \ /mingw64/bin/libgcc_s_seh-1.dll \ /usr/local/ffmpegstatic/bin i868的情况: //$ cp /mingw32/bin/libbz2-1.dll \ /mingw32/bin/libiconv-2.dll \ /mingw32/bin/liblzma-5.dll \ /mingw32/bin/zlib1.dll \ /usr/local/fdk-aac/bin/libfdk-aac-1.dll \ /usr/local/sdl2/bin/sdl2.dll \ /mingw32/bin/libstdc++-6.dll \ /mingw32/bin/libgcc_s_dw2-1.dll \ /mingw32/bin/libwinpthread-1.dll \ /mingw32/bin/libeay32.dll \ /usr/local/ffmpegstatic/bin ### centos ### 检查PKG配置 PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/x265/lib/pkgconfig:/usr/local/x264/lib/pkgconfig:/usr/local/sdl2/lib/pkgconfig:/usr/local/fdk-aac/lib/pkgconfig:/usr/local/openssl/lib/pkgconfig" pkg-config --exists --print-errors x264 x265 sdl2 fdk-aac openssl 直接返回表示成功。如果失败,会返回错误提示。 $ cd ffmpeg3.4 // 静态库配置 // $ sudo rm -rf /usr/local/ffmpegstatic // $ sudo make distclean // $ sudo make clean $ PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/x265/lib/pkgconfig:/usr/local/x264/lib/pkgconfig:/usr/local/sdl2/lib/pkgconfig:/usr/local/fdk-aac/lib/pkgconfig:/usr/local/openssl/lib/pkgconfig" ./configure \ --prefix=/usr/local/ffmpegstatic --enable-static --disable-shared \ --pkg-config-flags="--static" --extra-ldflags="-static -static-libgcc -static-libstdc++" \ --enable-gpl --enable-small --disable-doc --enable-nonfree \ --enable-libfdk-aac --enable-libx264 --enable-libx265 --enable-openssl \ --enable-pic --disable-debug $ sudo make -j8 $ sudo make install // 测试 $ /usr/local/ffmpegstatic/bin/ffmpeg -version ffmpeg version e40fcb1 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-16) configuration: ... libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100 ----------------------------------------------------------- MSVC方式:(未包含外部库x264、sdl2、x265、fdk-aac等) 动态 $ ./configure --toolchain=msvc --arch=x86 --enable-shared --disable-static 静态 $ ./configure --toolchain=msvc --arch=x86 --enable-yasm --enable-asm --enable-static 等待配置完成,日志查看ffbuild/config.log MAKE前,如果是中文版VS提示符,请打开config.h文件,将文件字符编码更改为UTF-8,检查其中的开关,比如CONFIG_FFPLAY是否被设置等。 $ make 如果make有警告C4828,检查提示文件(如config.h)的代码页,更改为UTF-8, 其他警告可忽略 $ make install 编译生产的执行文件ffmpeg.exe和DLL文件在目录C:\msys64\usr\local\bin中,开发头文件在C:\msys64\usr\local\include中
msvc(不支持openssl)
用msvc工具链编译ffmpeg 准备工作参考ffmepg.txt,下面是具体步骤: 1. 先将需要编译的文件放到一个英文目录下,比如E:\ffmpeg 2. 打开用 VS 的 VC 命令提示符 x86: x86 Native Tools Command Prompt for VS 2017 适用于 VS 2017 的 x86 本机工具命令提示 x64: x64 Native Tools Command Prompt for VS 2017 适用于 VS 2017 的 x64 本机工具命令提示 3. 进入目录,然后启动mingw64 C:\> cd /d E:\ffmpeg E:\> c:\msys64\msys2_shell.cmd -mingw32 -here -full-path // x86 本机工具命令提示 E:\> c:\msys64\msys2_shell.cmd -mingw64 -here -full-path // x64 本机工具命令提示 4. 分别编译x264、SDL2、x265、fdk-aac、openssl和ffmpeg 4.1 编译x264 $ cd x264 $ CC=cl ./configure --prefix=/usr/local/msvc/x264 --enable-static --enable-shared --enable-strip --enable-pic $ make $ make install 4.2 编译SDL2 用VS打开E:\ffmpeg\SDL2-2.0.8\VisualC\SDL.sln,如果没有安装Visual Studio 2010 (Platform Toolset = 'v100'),选择不要升级。 VS打开解决方案后,只要分别对SDL (Visual Studio 2010)项目和SDL2main (Visual Studio 2010)项目编译即可。 对于需要升级的情况,先选择编译方案Release|Win32或者Release|x64,然后分别右键SDL和SDL2main项目,属性, 修改“平台工具集”为靠近VS2010的版本,直接选择VS2017也是可以编译的;下面的配置类型(dll或者lib)是不需要修改的。 $ mkdir -p /usr/local/msvc/sdl2/lib $ cp /e/ffmpeg/SDL2-2.0.8/VisualC/Win32/Release/* /usr/local/msvc/sdl2/lib //拷贝32位版本 $ cp /e/ffmpeg/SDL2-2.0.8/VisualC/x64/Release/* /usr/local/msvc/sdl2/lib //拷贝64位版本 $ mkdir /usr/local/msvc/sdl2/include $ cp -r /e/ffmpeg/SDL2-2.0.8/include /usr/local/msvc/sdl2/ $ mkdir /usr/local/msvc/sdl2/lib/pkgconfig $ cp /e/ffmpeg/SDL2-2.0.8/sdl2.pc.in /usr/local/msvc/sdl2/lib/pkgconfig/sdl2.pc $ vim /usr/local/msvc/sdl2/lib/pkgconfig/sdl2.pc 2dd 删除前面的行注释和空行 :%s/@prefix@/\/usr\/local\/msvc\/sdl2/g :%s/@exec_prefix@/$\{prefix\}\/bin/g :%s/@libdir@/$\{prefix\}\/lib/g :%s/@includedir@/$\{prefix\}\/include/g :%s/@SDL_VERSION@/2\.0\.8/g :%s/@SDL_RLD_FLAGS@//g :%s/@SDL_LIBS@/-lSDL2/g :%s/@SDL_STATIC_LIBS@//g :%s/@SDL_CFLAGS@//g :%s/${includedir}\/SDL2/$\{includedir\}/g $ cat /usr/local/msvc/sdl2/lib/pkgconfig/sdl2.pc /---------------------------------------------\ prefix=/usr/local/msvc/sdl2 exec_prefix=${prefix}/bin libdir=${prefix}/lib includedir=${prefix}/include Name: sdl2 Description: Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. Version: 2.0.8 Requires: Conflicts: Libs: -L${libdir} -lSDL2 Libs.private: Cflags: -I${includedir} \---------------------------------------------/ 4.3 编译x265 *** 编译32位版本 *** 打开 x86 Native Tools Command Prompt for VS 2017 适用于 VS 2017 的 x86 本机工具命令提示 C:\> cd /d E:\ffmpeg\x265_2.7\build\vc15-x86 // vc15 指 VS2017 E:\> set PATH=%PATH%;C:\msys64\mingw32\bin E:\> make-solutions.bat // 由于 build-all.bat 中的 MSBuild 命令未指定 /p:Platform="Win32",因此将手动MSbuild编译 出现CMake配置窗口,编辑CMAKE_INSTALL_PREFIX为c:/msys64/usr/local/msvc/x265(请一定指定盘符), 勾选ENABLE_PIC 然后一次点击Configure和Generate按钮,关闭CMake窗口 E:\> MSBuild /p:Configuration="Release" /p:Platform="Win32" x265.sln E:\> MSBuild /p:Configuration="Release" /p:Platform="Win32" INSTALL.vcxproj *** 编译64位版本 *** 打开 x64 Native Tools Command Prompt for VS 2017 C:\> cd /d E:\ffmpeg\x265_2.7\build\vc15-x86_64 E:\> set PATH=%PATH%;C:\msys64\mingw64\bin E:\> build-all.bat 出现CMake配置窗口,编辑CMAKE_INSTALL_PREFIX为c:/msys64/usr/local/msvc/x265(请一定指定盘符), 勾选ENABLE_PIC 然后一次点击Configure和Generate按钮,关闭CMake窗口 等待完成。 E:\> MSBuild /p:Configuration="Release" /p:Platform="x64" INSTALL.vcxproj 4.4 编译fdk-aac *** 编译32位版本 *** 打开 x86 Native Tools Command Prompt for VS 2017 C:\> cd /d E:\ffmpeg\fdk-aac-0.1.6 E:\> nmake -f Makefile.vc E:\> nmake -f Makefile.vc prefix=C:\msys64\usr\local\msvc\fdk-aac install *** 编译64位版本 *** 打开 x64 Native Tools Command Prompt for VS 2017 C:\> cd /d E:\ffmpeg\fdk-aac-0.1.6 E:\> nmake -f Makefile.vc E:\> nmake -f Makefile.vc prefix=C:\msys64\usr\local\msvc\fdk-aac install 制作fdk-aac.pc E:\> mkdir C:\msys64\usr\local\msvc\fdk-aac\lib\pkgconfig E:\> notepad C:\msys64\usr\local\msvc\fdk-aac\lib\pkgconfig\fdk-aac.pc (UTF-8) /-------------------------------------\ prefix=/usr/local/msvc/fdk-aac exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include Name: Fraunhofer FDK AAC Codec Library Description: AAC codec library Version: 0.1.6 Libs: -L${libdir} -lfdk-aac Libs.private: Cflags: -I${includedir} \-------------------------------------/ 4.5 编译openssl (可忽略,暂未找到msvc方式编译ffmpeg带--enable-openssl成功的方法) 先安装perl: http://www.activestate.com/ActivePerl http://downloads.activestate.com/ActivePerl/releases/5.24.3.2404/ActivePerl-5.24.3.2404-MSWin32-x64-404865.exe 注:如果您的操作系统不是64位的,只能安装较旧的perl:http://downloads.activestate.com/ActivePerl/releases/5.22.4.2205/ActivePerl-5.22.4.2205-MSWin32-x86-64int-403863.exe 安装后会自动加入环境变量PATH,默认位置C:\Perl64\bin *** 编译32位版本 *** 打开 x86 Native Tools Command Prompt for VS 2017 C:\> set PATH=%PATH%;C:\msys64\mingw32\bin C:\> cd /d E:\ffmpeg\openssl-1.1.0g E:\> perl Configure --prefix=C:\msys64\usr\local\msvc\openssl VC-WIN32 // 可选 VC-WIN32 | VC-WIN64A | VC-WIN64I | VC-CE 不必在意安装dmake提示(ppm install dmake),因为VS2017包含了nmake,它没检测出来而已。 E:\> nmake E:\> nmake install *** 编译64位版本 *** 打开 x64 Native Tools Command Prompt for VS 2017 C:\> set PATH=%PATH%;C:\msys64\mingw64\bin C:\> cd /d E:\ffmpeg\openssl-1.1.0g E:\> perl Configure --prefix=C:\msys64\usr\local\msvc\openssl VC-WIN64A E:\> nmake E:\> nmake install 创建pc文件(UTF-8):openssl.pc、libssl.pc、libcrypto.pc E:\> mkdir C:\msys64\usr\local\msvc\openssl\lib\pkgconfig E:\> notepad C:\msys64\usr\local\msvc\openssl\lib\pkgconfig\openssl.pc /-------------------------------------\ prefix=/usr/local/msvc/openssl exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include Name: OpenSSL Description: Secure Sockets Layer and cryptography libraries and tools Version: 1.1.0g Requires: libssl libcrypto \-------------------------------------/ E:\> notepad C:\msys64\usr\local\msvc\openssl\lib\pkgconfig\libssl.pc /-------------------------------------\ prefix=/usr/local/msvc/openssl exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include Name: OpenSSL-libssl Description: Secure Sockets Layer and cryptography libraries Version: 1.1.0g Requires.private: libcrypto Libs: -L${libdir} -lssl Libs.private: -lws2_32 -lgdi32 -lcrypt32 Cflags: -I${includedir} \-------------------------------------/ E:\> notepad C:\msys64\usr\local\msvc\openssl\lib\pkgconfig\libcrypto.pc /-------------------------------------\ prefix=/usr/local/msvc/openssl exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include enginesdir=${libdir}/engines-1.1 Name: OpenSSL-libcrypto Description: OpenSSL cryptography library Version: 1.1.0g Libs: -L${libdir} -lcrypto Libs.private: -lws2_32 -lgdi32 -lcrypt32 Cflags: -I${includedir} \-------------------------------------/ 4.6 编译ffmpeg *** 编译32位版本 *** 打开 x86 Native Tools Command Prompt for VS 2017 C:\> cd /d E:\ffmpeg\ffmpeg3.4 E:\> c:\msys64\msys2_shell.cmd -mingw32 -here -full-path *** 编译64位版本 *** 打开 x64 Native Tools Command Prompt for VS 2017 C:\> cd /d E:\ffmpeg\ffmpeg3.4 E:\> c:\msys64\msys2_shell.cmd -mingw64 -here -full-path 然后执行: $ vim /usr/local/msvc/x264/lib/pkgconfig/x264.pc 将 Libs: -L${exec_prefix}/lib -lx264 更改 为 Libs: -L${exec_prefix}/lib -llibx264 $ vim /usr/local/msvc/x265/lib/pkgconfig/x265.pc 将 Libs: -L${libdir} -lx265 更改 为 Libs: -L${libdir} -llibx265 $ PKG_CONFIG_PATH="/usr/local/msvc/x265/lib/pkgconfig:/usr/local/msvc/x264/lib/pkgconfig:/usr/local/msvc/sdl2/lib/pkgconfig:/usr/local/msvc/fdk-aac/lib/pkgconfig:/usr/local/msvc/openssl/lib/pkgconfig" pkg-config --exists --print-errors x264 x265 sdl2 fdk-aac openssl *** 编译32位版本 *** $ PKG_CONFIG_PATH="/usr/local/msvc/x265/lib/pkgconfig:/usr/local/msvc/x264/lib/pkgconfig:/usr/local/msvc/sdl2/lib/pkgconfig:/usr/local/msvc/fdk-aac/lib/pkgconfig:/usr/local/msvc/openssl/lib/pkgconfig" ./configure \ --toolchain=msvc --arch=x86 \ --prefix=/usr/local/msvc/ffmpegstatic --enable-static --disable-shared \ --pkg-config-flags="--static --msvc-syntax" \ --enable-gpl --enable-small --disable-doc --enable-nonfree \ --enable-libfdk-aac --enable-libx264 --enable-libx265 \ --enable-pic --disable-debug 注:--enable-openssl会失败,因此未加入。 *** 编译64位版本 *** $ PKG_CONFIG_PATH="/usr/local/msvc/x265/lib/pkgconfig:/usr/local/msvc/x264/lib/pkgconfig:/usr/local/msvc/sdl2/lib/pkgconfig:/usr/local/msvc/fdk-aac/lib/pkgconfig:/usr/local/msvc/openssl/lib/pkgconfig" ./configure \ --toolchain=msvc --arch=amd64 \ --prefix=/usr/local/msvc/ffmpegstatic --enable-static --disable-shared \ --pkg-config-flags="--static --msvc-syntax" \ --enable-gpl --enable-small --disable-doc --enable-nonfree \ --enable-libfdk-aac --enable-libx264 --enable-libx265 \ --enable-pic --disable-debug 注:--enable-openssl会失败,因此未加入。 $ make -j8 $ make install $ cp /usr/local/msvc/sdl2/lib/SDL2.dll /usr/local/msvc/ffmpegstatic/bin/ $ cp /usr/local/msvc/x265/lib/libx265.dll /usr/local/msvc/ffmpegstatic/bin/ 编译32位版本 $ cp /usr/local/msvc/x265/bin/libx265.dll /usr/local/msvc/ffmpegstatic/bin/ 编译64位版本