-1

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

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 代码来捕获不需要很长时间的帧

4

2 回答 2

1

ffmpeg wiki关于快速搜索的状态:

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

ffmpeg -ss 00:03:00 -i Underworld.Awakening.avi -frames:v 1 out1.jpg

此示例将在影片开始后的第三分钟左右生成一个图像帧 (out1.jpg)。输入将使用关键帧进行解析,速度非常快。缺点是它也会在某个关键帧完成搜索,不一定是在指定时间(00:03:00),所以搜索不会像预期的那么准确。

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

如果您想在 C/C++ 中实现此功能,请参阅docs/examplesffmpeg 目录以开始使用av_seek_frame.

我最近自己编写了一些 C 代码来制作缩略图,它有效地使用了混合模式。可能对你有帮助,也可能没有。

于 2013-11-11T12:06:46.203 回答
0

你好,安德森先生

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

  1. 虚拟配音
  2. 卡姆塔西亚
  3. 帧镜头
于 2013-11-11T08:40:00.860 回答