Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1480499
  • 博文数量: 181
  • 博客积分: 3308
  • 博客等级: 中校
  • 技术积分: 2227
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-03 12:03
个人简介

我是zoro

文章分类

全部博文(181)

文章存档

2015年(1)

2013年(35)

2012年(39)

2011年(50)

2010年(56)

分类: LINUX

2013-12-05 15:42:45

这几天使用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://my.oschina.net/zhangxu0512/blog/181758

阅读(15009) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~