3

我正在尝试编写一个 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 中有一个简单的布尔值。如果它是关键帧,则为真

4

1 回答 1

2

av_seek_frame具有寻找视频文件中某个时间戳的能力。它有 4 个参数:指向AVFormatContext的指针、流索引、要查找的时间戳以及用于选择方向和查找模式的标志。

然后该函数将寻找给定时间戳之前的第一个关键帧。

查看该函数的文档以获取更多信息

于 2011-06-11T14:33:14.913 回答