windows下编译ffmpeg
依赖环境安装
-
ffmpeg不支持vs直接编译,需要通过mingw64结合msvc环境一起编译,mingw64+msvc环境配置比较麻烦,本文通过安装msys2来配置依赖环境。
-
安装MSYS2,直接官网下载安装
MSYS2 -
安装完成后,打开终端,输入下面命令,安装mingw64+msvc环境
pacman -S mingw-w64-x86_64-toolchain
下载源码
- 通过ffmpeg官网下载并解压
编译安装
- 配置msvc编译环境
- 通过vs2019命令行启动msys2终端,windows编译过程需要用到cl.ex,link.exe,因此需要配置msvc编译环境,否则会编译会报错找不到cl.exe或者找不到libcmt.lib之类的错误
- 直接打开vs2019命令提示符工具,或者在cmd下运行vcvarsall.bat脚本,该脚本在vs的安装目录下,如:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat
- 在命令行工具下执行msys2安装目录下的msys2_shell.cmd脚本
C:\msys64\msys2_shell.cmd -use-full-path
- 编译&安装(configure、make、make install三件套)
- configure,使用如下配置,更多选项配置可以输入configure --help查看
./configure --prefix=windows --toolchain=msvc --enable-shared --enable-parsers --enable-ffprobe --enable-ffplay --enable-avdevice
- make -j4
- make install
- configure,使用如下配置,更多选项配置可以输入configure --help查看
- 编译完成后会在windows的目录下生成dll、lib、头文件等内容
引用案例
写了一个简单的提取指定帧图像的demo,运行时提示找不到avcodec-57.dll、avutil-55.dll、avformat-57.dll,但最新版本编译出来的
只有avutil-57.dll\avcodec-59.dll\avformat-59.dll,怀疑是demo当中引用了旧版本的接口导致的