1

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

不幸的是,ffmpeg 和更准确地说是 avcodec 没有很好的文档记录。我需要知道一个帧是 I 帧还是 B 帧来维护记录,那么我该怎么做呢?

提前致谢。

4

2 回答 2

1

图片类型由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;

}
于 2009-10-01T18:51:33.180 回答
0

曼努埃尔,

你试过FF-probe吗?它是一个多媒体流分析器,可让您查看每个帧的类型。您可以从SourceForget.net下载它。要编译它,您需要 Gnu autoconf、C 编译器和 FFmpeg 的工作安装。让我知道这是否有帮助。

于 2009-09-25T19:25:12.150 回答