多年前在/fengbingchun/article/details/40951403 中对FFmpeg在windows下的编译过程做过说明,那时FFmpeg版本用的2.4.3, VS是,现在FFmpeg最新稳定版为4.1.3,通过VS进行编译,较之前有了些不同,这里再次介绍下:
一、编译x86库:
1. 从/projects/mingw/releases/ 下载mingw-get-setup.exe,更新日期为9月6日;点击右键以管理员身份安装到C:/MinGW,安装的Package有mingw-developer-toolkit-bin, mingw32-base-bin, mingw32-gcc-g++-bin, msys-base-bin;
2. 从/Download.html 下载yasm-1.3.0-win64.exe,注意一定不要下载vsyasm-1.3.0-win64.zip,否则后面make的时候会有error,并拷贝到C:\MinGW\msys\1.0\bin并重命名为yasm.exe;
3. 下载pkg-config,处理” WARNING: pkg-config not found, library detection may fail.”,从/pub/gnome/binaries/win32/dependencies/ 下载pkg-config_0.26-1_win32.zip,解压缩并将pkg-config.exe拷贝到C:\MinGW\bin目录下;从/pub/gnome/binaries/win32/glib/2.28/ 下载pkg-config的依赖库glib_2.28.8-1_win32.zip,解压缩并将libglib-2.0-0.dll拷贝到C:\MinGW\bin目录下;从/pub/gnome/binaries/win32/dependencies/ 下载gettext-runtime_0.18.1.1-2_win32.zip,解压缩并将intl.dll拷贝到C:\MinGW\bin目录下;注意:此步可省略;
4. 将目录C:\MinGW\bin和C:\MinGW\msys\1.0\bin添加到系统环境变量PATH中;
5. 将C:\MinGW\msys\1.0下的msys.bat复制一份并改名为msys_vs.bat,并在msys_vs.bat的开头加上一句” call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"”;
6. 重命名C:\MinGW\msys\1.0\bin下的link.exe为link_msys.exe,这是为了防止此link.exe与vs中的link.exe发生冲突,编译完FFmpeg后可再次修改回来;
7. 从/FFmpeg/FFmpeg/releases 下载FFmpeg-n4.1.3.zip并解压缩到E:\FFmpeg-n4.1.3;
8. Fix error C2440: libavcodec/dxva2.c<524>, “初始化”:无法从”GUID”转换为”unsigned long”:将libavcodec/dxva2.c的第519行由.DecodeProfile = decoder_guid,调整为.DecodeProfile = decoder_guid.Data1,;
9. 双击运行msys_vs.bat,使用cd命令将其定位到E:\FFmpeg-n4.1.3\build_x86_release目录下,此build_x86_release目录需要自己手动创建,执行如下命令:
.././configure --prefix=./install --toolchain=msvcmake -j4make install
二、编译x86_64位库:
1.如果还没有配置好环境,则需先按照上面编译x86库中的步骤1,2,3,4,6,7,8操作一遍;
2. 将以上第5步中的” call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"”调整为” call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\vcvars64.bat"”
3. 双击运行msys_vs.bat,使用cd命令将其定位到E:\FFmpeg-n4.1.3\build_x86_64_release目录下,此build_x86_64_release目录需要自己手动创建,执行如下命令:
.././configure --prefix=./install --target-os=win64 --arch=x86_64 --toolchain=msvcmake -j4make install
执行完make install后install目录下会产生4个目录,分别为:bin、include、lib、share:
1. bin目录下有ffmpeg.exe和ffprobe.exe两个文件,通过命令提示符执行:ffmpeg.exe --help结果如下:
2. lib目录下有libavcodec.a, libavdevice.a, libavfilter.a, libavformat.a, libavutil.a, libswresample.a, libswscale.a七个静态库;
3. include目录下包含了对应上面七个静态库的头文件;
4. share目录下有一些samples。
三、说明:
1. configure文件中的编译选项较多,可通过执行:$ .././configure --help > help.txt 来查看编译选项说明;
2. 默认编译的是静态库,若编译动态库,可增加编译选项参数--enable-shared --disable-static;
3. 默认编译的是release库,若编译debug库,可增加编译选项参数--enable-debug;
4. 如果不想自己通过源码编译,也可以直接从/builds/# 下载现成的库和执行文件。
GitHub:/fengbingchun/OpenCV_Test