关于avformat_open_input的问题记录

    这几天使用ffmpeg的库遇到了一些问题,其中主要是avformat_open_input()造成的。有些问题暂未解决,先记录一下吧,待以后有时间继续解决。    


环境:centos6.2_64, ffmpeg1.1

1. 发现用avformat_open_input()解析网络流时间较长,例如HTTP或RTMP协议的网络直播流。

这个问题使用ffmpeg命令行工具也可以复现,若是本地文件,瞬间就解析完毕,但网络流一般需要好几秒。

现在对解析时间的需求不高,暂不修改,日后需要对解析时间进行优化。


2. avformat_open_input()解析错误的网络流,该函数长时间不返回。

网上关于ffmpeg问题的资料不怎么多啊,只有一些源码分析类的。。。还是特别老的代码。

没办法,看代码吧, 发现ffplay.c中对AVFormatContext的interrupt_callback设置了回调函数。

OK,找到突破点了,我也写了个回调函数,作用是错误计时,超时后让avformat_open_input()返回,

并根据回调函数中设置的标志位判断是否超时。


3. av_read_frame()网络直播流间隔返回AVERROR_EOF

这个问题好奇怪,一直没找到原因。出现该问题的时候是我修改了问题2,设置了回调函数。

不设置回调函数,就跟以前一样正常了。项目催得紧,没深挖该问题,先记一下吧。

最后,对问题2和问题3暂做了折中方案,使用问题2的方式设置回调函数,用来判断流是否正常,

防止阻塞。然后,释放ctx,使用老方法(不设置回调函数)进行流解析。


最后,同步一下,http://blog.chinaunix.net/uid-24567872-id-4025061.html

转载于:https://my.oschina.net/zhangxu0512/blog/181758

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值