FFMPEG阅读关键帧

时间:2011-06-11 14:19:16

标签: c++ ffmpeg keyframe

我正在尝试编写一个c ++程序,它将使用ffmpeg从视频文件中读取关键帧。 到目前为止,我设法使用av_read_frame来顺序读取所有帧 一帧一帧。

但是我在使用av_seek_frame时遇到了一些问题(如果我是正确的话)应该为关键帧做技巧。

int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags);

我有FormatContext但是有哪些其他正确的参数才能顺序获取所有关键帧?

我可以使用其他功能吗?

由于

编辑:在av_read_frame我正在获取AVPacket,我可以使用它来获取帧数据,但我如何使用av_seek_frame获取数据包?

解决方案:好的,AVFrame-> key_frame中有一个简单的布尔值。如果是关键帧,则为真

1 个答案:

答案 0 :(得分:2)

av_seek_frame 能够在视频文件中寻找特定时间戳。它需要4个参数:指向 AVFormatContext 的指针,流索引,要搜索的时间戳标记选择方向和寻找模式。

然后,该函数将在给定时间戳之前搜索第一个关键帧。

Check the documentation of that function for more information