问题描述
|
我正在尝试编写一个C ++程序,该程序将使用ffmpeg从视频文件中读取关键帧。
到目前为止,我设法使用
av_read_frame
来获取所有帧,您依次读取
一帧一帧。
但是我在使用ѭ1时遇到了一些问题(如果我是正确的话),这应该可以解决关键帧的问题。
int av_seek_frame(AVFormatContext *s,int stream_index,int64_t timestamp,int flags);
我有FormatContext
,但依次只获取所有关键帧的其他正确参数是什么?
还有其他我可以使用的功能吗?
谢谢
编辑:在ѭ0中,我正在获取AVPacket,可以用来获取帧数据,但是如何使用av_seek_frame获取数据包?
解决方案:好的,在AVFrame-> key_frame中有一个简单的布尔值。如果关键帧为真
解决方法
av_seek_frame可以在视频文件中搜索特定的时间戳。它包含4个参数:指向AVFormatContext的指针,流索引,要搜索的时间戳和用于选择方向和搜索模式的标志。
然后,函数将搜索给定时间戳记之前的第一个关键帧。
查看该功能的文档以获取更多信息。