vs2012调试ffmpeg.c

0、为什么要在vs中编译ffmpeg.c

用ffmpeg有很多的用途,比如可以用来转码,也可以用来解码,光是通过上一章的博文,得到几个对应的dll,其实作用并不大,你可以通过在vs中编译ffmpeg.c来看看,是如何使用这些dll的,当然,也可以通过编译ffplay.c来看看一个播放器是如何做成的



1、先把ffmpeg.c加入在vs中

创建一个空的工程,然后把ffmpeg.c加进来,尝试一下编译,看看都需要加入些什么


2、修改ffmpeg.c

注释掉40行,然后把对应的头文件拷过来

 

因为我是通过mingw来编译的,所以在当时生成出来dll的时候,也顺便把头文件给拷贝出来了,所以这里可以直接放到vs的这个工程中:



然后在工程设置中,给他包含进来

 

还缺少的头文件,可以去ffmpeg的源代码里面搜索:





3、解决一些别的问题

这里的34行注释掉,类似的后面遇到#include 的也都注释掉



提示“error C2054: 在“inline”之后应输入“(””这个错误的,全都去掉incline即可



在刚才加入的config.h文件的最前面加入:



这样就解决了下面的问题



100行的HAVE_STRUCT_POLLFD修改成POLLIN





4、在继续添加需要的文件

然后看到下面的错误



其实是这个错:


把所有用到这个宏的地方都修改成:

AVRationalr= {1,AV_TIME_BASE };

用r这个变量来替代这个宏

 

使用_read,凡是提示这样的错误,都是这么解决



遇到这个错误:


用以下语句替换:

char error_[1024];

av_make_error_string(error_,1024,ret);

error_

 

这个语句


用以下语句替换:

AVRationalr2= {1,1000 };


还需要改这里:



1874行还需要修改这里:



3226添加下面几行



第一个if(debug_ts){}应该这么样修改:



最后一个if(debug_ts){}应该这么样修改:




4、其他的一些问题

比如snprintf修改成_snprintf、read修改成_read等,这些都容易解决


5、测试使用一下生成出来的ffmpeg.exe

在工程目录中放一个测试视频文件video.mp4,设置调试的命令行为-i video.mp4 -vframes 300 -y -f gif a.gif

这个命令行的意思是,把video.mp4的前300帧做成一个a.gif(一些另外的使用命令,可以参考ffmpeg官网或者google、baidu)




这就是得到的a.gif:



6、整个测试工程csdn下载


或许还需要到x264、x265的dll:http://download.csdn.net/detail/zengraoli/9461306

改动比较多,花了大概一个晚上解决的问题,所以收取的下载分比较高,请尽量自己动手修改!
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值