vs2017调试ffmpeg源码

ffmpeg只提供了gnu的编译方式,在windows下需要安装mingw编译出动态库或者静态库,在进行音视频的相关开发时,经常会出现各种问题,网上的例子也比较少,而ffmpeg提供的工具ffmpeg.exe确屡试不爽,故在windows下能够调试ffmpeg.exe无疑是很有必要的。

首先,编译debug版本的ffmpeg。
本人用的msys2(mingw环境)是从下面路径下载的。
https://repo.msys2.org/distrib/x86_64/
然后指定编译器为vs2017,编译了64位的ffmpeg,配置命令行如下:

./configure --toolchain=msvc --arch=x86_64 --enable-shared --disable-static --enable-gpl --enable-libx264 --extra-cflags="-I/usr/local/x264/include" --extra-ldflags=-LIBPATH:/usr/local/x264/lib --prefix=/home/ffmpeg_x264_debug_dll

编译好后,进行安装,对应的bin目录下的成果物如下所示:
在这里插入图片描述
可以看出这里面没有pdb符号文件,而pdb符号文件跟.o文件跟源码文件在一起,如下图所示:
在这里插入图片描述
将这8个pdb文件集合起来,并且将lib文件放到lib目录下,如下所示:
在这里插入图片描述

由于ffmpeg.exe会比较复杂一些,先写个简单例子来调试,里面只需要调用一些简单的函数即可,
在这里插入图片描述比如在av_opt_set_channel_layout打断点,然后可以按F11单独跟踪进去,
在这里插入图片描述
可以发现,能够跟踪进去,代码位于opt.c文件里面,并且opt.c文件所在路径即为编译ffmpeg时,源代码所在路径。

下面是ffmpeg.exe的编译,ffmpeg.exe的源文件ffmpeg.c位于fftools文件夹下面,如下所示:
在这里插入图片描述
本人最开始只将ffmpeg.c,ffmpeg.h,cmdutils.h,cmdutils.c四个文件拷贝到工程目录下,后面还依赖一些头文件,故干脆将整个ffmpeg文件夹拷贝过来,设置包含路径,如下所示:
在这里插入图片描述
在这里插入图片描述
下面是依赖的库文件
在这里插入图片描述
下面是需要添加的预处理器,_CRT_SECURE_NO_WARNINGS和_CRT_NONSTDC_NO_DEPRECATE,这两个宏定义的添加是我根据编译报错时,根据提示找到的,微软的编译器较gcc要严格一些。
在这里插入图片描述

然后编译,发现有一些链接错误,如下:
在这里插入图片描述
然后查找符号所在文件,需要添加下面三个文件到工程:
在这里插入图片描述
然后接着编译,报如下错误
在这里插入图片描述

这个设置SDL检查为false即可,如下所示:
在这里插入图片描述
然后编译就可以通过了,下面给个截图,记录下工程中的文件。
在这里插入图片描述
下面进行测试下,先录个系统声音,对应的ffmpeg命令如下:
ffmpeg -f dshow -i audio=“virtual-audio-capturer” audio-out.mp4

故在工程的调试参数中配置如下:
在这里插入图片描述
测试ok。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值