我正在尝试编写一个 C++ 程序,该程序将使用 ffmpeg 从视频文件中读取关键帧。
到目前为止,我设法使用所有框架av_read_frame
你按顺序阅读的地方
一帧一帧。
但我在使用时遇到一些问题av_seek_frame
这(如果我是正确的)应该可以解决关键帧的问题。
int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags);
I have FormatContext
但是顺序获取所有关键帧的其他正确参数是什么?
我可以使用其他功能来代替吗?
Thanks
编辑:在av_read_frame
我正在获取 AVPacket,我可以用它来获取帧数据,但是如何使用 av_seek_frame 获取数据包?
解决方案:好的,AVFrame->key_frame 中有一个简单的布尔值。如果是关键帧则为 True
av_seek_frame http://dranger.com/ffmpeg/functions.html#av_seek_frame能够查找视频文件中的某个时间戳。它有 4 个参数: 一个指向AV格式上下文, a 流索引, the 时间戳寻求并flags选择方向和搜索模式。
然后,该函数将查找给定时间戳之前的第一个关键帧。
查看该函数的文档以获取更多信息 http://dranger.com/ffmpeg/functions.html#av_seek_frame.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)