一个有关使用ffmpeg提取媒体信息的问题
这里请教熟悉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总是能正确析出)?
如果这个办法始终行不通,我想找个替代的办法,请问有什么地方可以得到某个媒体流的大小吗?