整体流程参考:
这里记录一下期间的遇到的问题:
下载的ffmpeg,将ffmpeg的bin目录添加到系统环境变量,然后将SDL的dll动态库拷贝到ffmpeg的bin目录下或将其所在的目录也添加到环境变量,不一定非要将相关文件拷贝到Windows目录下。而且SysWOW64目录是Windows下64位系统用于适配32位动态库的目录,如果ffmpeg是64位的,那么将动态库放到SysWOW64中根本毫无意义。所以最好还是添加环境变量,把bin目录拷贝到C:/Windows目录下不是很主流的做法。
QT中的msvc编译器,必须要安装对应版本的VS才可以正常使用,否则即使安装了sdk和mscv也没用。而且还要注意编译器和调试器的选择,如果选择不对也会导致无法使用。
注意,在使用QT调用ffmpeg的api时,需要将ffmpeg-7.0文件夹放到与.c/.cpp文件同一目录下。
在运行msys2-mingw64时,不能直接双击,要在命令行中通过:msys2_shell.cmd -mingw64的方式打开,详情参考:which: no cl in... help needed · Issue #92 · microsoft/FFmpegInterop (github.com)。
编译ffmpeg时,要仔细对比路径的准确性,很容易坑。至于 pkg-config无法找到的情况,直接将其对应的lib/pkgconfig添加到PKG_CONFIG_PATH环境变量中参考:libfdk-aac 找不到-CSDN博客。
ffmpeg编译好了之后,需要将其lib目录下的.def文件通过
lib /machine:X64 /def:libxxx.def
命令,生成对应的.lib文件(64位),这样才能在QT中调用ffmpeg的api。