识别视频容器中的I帧

时间:2009-09-25 12:06:11

标签: c linux ffmpeg

我正在GNU / Linux上用C开发视频服务器,我正在使用ffmpeg来管理每个视频文件的数据。所以,我打开文件,获取有关其容器的所有信息,然后对其编解码器执行相同操作并逐个开始读取框架。

不幸的是,ffmpeg以及更精确的avcodec并没有很好地记录。我需要知道帧何时是I帧或B帧以保持记录,所以我怎么能这样做?

提前致谢。

2 个答案:

答案 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的工作安装。如果有帮助,请告诉我。