如何从视频中快速提取帧内(在C ++或Python中)

how to rapidly extract intraframe from a video (in c++ or python)

本文关键字:Python 视频 提取      更新时间:2023-10-16

我想从视频中捕获一些帧,所以我使用了这样的命令:

ffmpeg -i MyVideo.mp4 -ss 1:20:12 -vframes 1 test-pic.jpg

但是FFMPEG从视频开始处理帧,所以这个命令太慢了。 我研究并找到了一些关于关键帧的文章,所以我尝试通过这样的命令提取关键帧

ffmpeg -vf select="eq(pict_type,PICT_TYPE_I)" -i MyVideo.mp4 -vsync 2 -s 160x90 -f image2 thumbnails-%02d.jpeg

但此命令也是减慢和捕获太多帧。我需要 linux 命令或 c++ 或 python 代码来捕获不需要很长时间的帧

ffmpeg wiki 关于快速搜索的声明:

-ss 参数需要在 -i 之前指定

ffmpeg -ss 00:03:00 -i 冥界.觉醒.avi -帧:v 1 out1.jpg

此示例将在某个地方生成一个图像帧 (out1.jpg) 电影开头的第三分钟。输入将是 使用关键帧解析,速度非常快。缺点是它 还将在某些关键帧处完成搜索,不一定位于 在指定时间 (00:03:00),因此搜索不会那么准确 不出所料。

您还可以使用混合模式,将快速搜索和慢速(解码)查找相结合,这是一种中间立场。

如果要在 C/C++ 中实现这一点,请参阅 ffmpeg 的docs/examples目录以开始使用和av_seek_frame

我最近破解了一些C代码来自己做缩略图,它有效地使用了混合模式。可能对您有帮助,也可能没有帮助。

你好,安德森先生。

我不熟悉使用C++或Python来做这样的事情。 我确信这是可能的(如果我研究了一个小时,我可能会很好地了解如何做到这一点),但是实施完整解决方案所需的时间可能超过寻找更好的帧捕获程序的时间成本。 经过一番谷歌搜索,我想出了:

  1. 虚拟配音
  2. 卡姆塔西亚
  3. 帧拍摄