我正在 GNU/Linux 上用 C 语言开发视频服务器,并且我正在使用 ffmpeg 来管理每个视频文件的数据。因此,我打开文件,获取有关其容器的所有信息,然后对其编解码器执行相同操作并开始一帧一帧地读取。
不幸的是,ffmpeg 和更准确地说是 avcodec 没有很好的文档记录。我需要知道一个帧是 I 帧还是 B 帧来维护记录,那么我该怎么做呢?
提前致谢。
图片类型由pict_type
字段给出struct AVFrame
。您在 FFMPEG 中定义了 4 种类型。pict_type
设置FF_I_TYPE
为 I 帧。
例如,我的调试代码的一部分给了我一个要在调试消息中设置的字母:
/* _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;
}
曼努埃尔,
你试过FF-probe吗?它是一个多媒体流分析器,可让您查看每个帧的类型。您可以从SourceForget.net下载它。要编译它,您需要 Gnu autoconf、C 编译器和 FFmpeg 的工作安装。让我知道这是否有帮助。