一个有关使用ffmpeg提取媒体信息的问题

gogoDNA 2009-02-17 04:45:18

这里请教熟悉ffmpeg的专家们:
我想要获得某一个多媒体文件(如容器是mp4,3gp等)中的某个媒体流的码率(kbps)。
如一个mp4文件由一个avc(视频流)以及一个aac(音频流)构成。我想要分别获得这两个流的码率大小。

这里我已经以“正常流程”打开并解析了这个媒体文件:
av_register_all
av_open_input_file
av_find_stream_info

然后,分析得到的AVFormatContext *ctx,找其中的AVFormatContext.streams[i]->codec->bit_rate,不幸的事情发生了:在我test过的文件之中,除了mp3码流可以正常的获得这个值以外,其余的一律为0!!!

再分析、跟踪了av_find_stream_info的代码,这里我发现除了mp3流,其余的流的AVFormatContext.streams[i]->need_parsing的值一直是0,就是说,它们的av_parser_parse()一直都得不到执行,这是说明ffmpeg没有找到这些流的头?那为什么ffmpeg正确的解析出了这些流的codec(AVFormatContext.streams[i]->codec->codec_id总是能正确析出)?

如果这个办法始终行不通,我想找个替代的办法,请问有什么地方可以得到某个媒体流的大小吗?


...全文
611 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
arthurhi123 2011-07-19
  • 打赏
  • 举报
回复
我遇到了同样的问题,希望给出解决的办法啊。
FFMPEG读取的h.264的这些头信息到底放在哪里了呢?

这个是在extra_data里面,不过提取264的方法,可以在read frame之后,通过一个filter,可以得到nal的流数据
joole 2011-03-14
  • 打赏
  • 举报
回复
avcodec_register_all
csucbh 2009-09-29
  • 打赏
  • 举报
回复
我遇到了同样的问题,希望给出解决的办法啊。
FFMPEG读取的h.264的这些头信息到底放在哪里了呢?
gogoDNA 2009-02-19
  • 打赏
  • 举报
回复
谢啦,我去看看
sxcong 2009-02-19
  • 打赏
  • 举报
回复
你可以试试mplayer
播放文件的时候,在屏幕上输出各种码流信息。
然后,再看mplayer代码,看看实现情况
gogoDNA 2009-02-18
  • 打赏
  • 举报
回复
唉,可怜啊……现在都没有人做多媒体了么?
GoogleGeek 2009-02-18
  • 打赏
  • 举报
回复
Please visit our group:

欢迎参与NextPlayer讨论组,目前有212名成员!主要关注Chrome浏览器、FFmpeg、MPlayer、VideoLan的开发、学习与应用!

Focus on network & multimedia @ Chrome and NativeClient
http://ppnext.com
http://groups.google.com/group/nextplayer
jinlking 2009-02-17
  • 打赏
  • 举报
回复
mark

2,542

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧