ffmpeg的简单应用

编码:设置好编码时的codecContext,然后一帧一帧的往ffmpeg里面塞就行了,ffmpeg的强大性是毋庸置疑的,如果例子的ffmpeg工程里面的APIexample里面有,很容易编译过去。注:编码ffmpeg默认编译的时候是没有H264的,因此需要将X264的链接到ffmpeg中,编译命令也要修改一下。

解码:如果解码本地的文件的话,教程一大堆,不过要是想用APIexample中的方法去解码是不行的,很多时候只能跳着解出几帧,而且还是花的,本人尝试着自己去解包264然后将一帧数据送给avcodec_decode_video去解码,失败,错误有时返回-1,有时解出的图像就是全黑。猜测是因为没有初始化好结构AVcodecContext,打开文件的时候可以通过AVFormatContext去初始化好,AV_file_open中ffmpeg读取了头信息,并打开文件等等操作,尝试着去跟代码,不过由于对其结构不是很清楚所以找不明白。

网络串流的打开:曾将尝试自己写socket接受流送给ffmpeg,多种尝试都告失败;其实ffmpeg可以直接打开URL,TCP传输的直接用http://IP:port格式,UDP据说是 udp://ip?localport=prot的格式,ffmpeg太高深了,文档又没有,只能靠肯代码自己理解了。

另外链接ffmpeg动态库的时候VC设置成__cdecl (/Gd),std的有2019链接错误。

This is the default calling convention for C and C++ programs. Because the stack is cleaned up by the caller, it can do vararg functions. The __cdecl calling convention creates larger executables than __stdcall, because it requires each function call to include stack cleanup code. The following list shows the implementation of this calling convention.

Name-decoration convention

Underscore character (_) is prefixed to names, except when exporting __cdecl functions that use C linkage.

c link产生的DLL用c的方式去调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值