我正在GNU / Linux上用C开发视频服务器,我正在使用ffmpeg来管理每个视频文件的数据。所以,我打开文件,获取有关其容器的所有信息,然后对其编解码器执行相同操作并逐个开始读取框架。
不幸的是,ffmpeg以及更精确的avcodec并没有很好地记录。我需要知道帧何时是I帧或B帧以保持记录,所以我怎么能这样做?
提前致谢。
答案 0 :(得分:1)
图片类型由 pict_type
的 struct AVFrame
字段提供。您有FFMPEG中定义的4种类型。对于I帧,pict_type
设置为FF_I_TYPE
。
例如,我的调试代码的一部分给了我一封在调试消息中设置的字母:
/* _avframe is struct AVFrame* */
switch(_avframe->pict_type)
{
case FF_I_TYPE:
return "I";
break;
case FF_P_TYPE:
return "P";
break;
case FF_S_TYPE:
return "S";
break;
case FF_B_TYPE:
return "B";
break;
}
答案 1 :(得分:0)
曼努埃尔,
您是否尝试过FF-probe?它是一个多媒体流分析器,允许您查看每个帧的类型。您可以从SourceForget.net下载。要编译它,您将需要Gnu autoconf,C编译器和FFmpeg的工作安装。如果有帮助,请告诉我。