ffmpeg在Windows 10上生成缩略图的最有效方法是什么?

3

我通常使用ThumbnailMe制作缩略图联系表。 我的默认设置是15行x 5列,因此视频中有75个图像,视频长度从45分钟到约90分钟不等。 ThumbnailMe几乎立即生成这种大小的联系表。 最近需要为许多视频制作大量联系表,因此我正在寻找命令行选项,以便可以批量处理它们。 我尝试了几种不同的方法来从命令行生成缩略图:

ffmpeg -ss 300 -i myvideo.avi -vf fps=1/300 %d.jpg

或者

ffmpeg -i myvideo.avi -vf fps=1/60 %d.jpg

无论我使用哪种方法,制作16张截图大约需要一分钟时间(然后我会使用ImageMagick制作联系表)。如上所述,ThumbnailMe只需按下一个按钮即可制作15x5的图像网格。ThumbnailMe是建立在较旧的命令行程序Movie Thumbnailer之上的,我认为它使用了旧版本的ffmpeg,或者至少是codec libavcodec。
如果这些其他程序可以如此快速地创建缩略图,为什么ffmpeg对我来说需要这么长时间才能制作它们?即使我将截图输出为非常小的尺寸,比如50x50,每个图像仍然需要大约2秒钟才能被创建。
2个回答

3

fps滤镜不是一个高效的选择,使用select过滤器更好。如果需要的话,FFmpeg也有一个生成网格的过滤器。

ffmpeg -i in.mp4 -vf select=not(mod(n\,800)),scale=200:-1,tile=15x5 -vsync 0 in-grid.jpg

这会选择每800帧,将选定的帧按比例缩放到200像素宽度,然后在15x5布局中平铺前75个选定的帧。如果需要,平铺滤镜有外边框和帧内填充的选项
为了使其尽可能高效,应选择选择间隔(800)以使选择过滤器不输出超过网格所需的帧数。此外,您可以通过省略缩放和平铺并在其他地方执行来节省FFmpeg中的一些时间。

1
这确实创建了网格,并且相对而言比我之前使用的方法更快。然而,接下来我在高清视频(比特率为5000 Kbps,AVC格式,分辨率为1280x720)上尝试了一下,生成网格花费了超过60秒的时间。 - gregm

1
我使用 mt https://github.com/mutschler/mt/releases 来生成我的联系表,它非常快速并且应该提供了你所需要的一切。

我刚刚进行了一个快速测试,在默认模式下,我花费了约27秒钟来生成一个15x5网格。在快速模式下,仅花费约4秒钟。(在6300Kbp/s、1280x720、h264 AVC文件上测试)

快速模式和默认模式之间的主要区别是,在快速前进到下一个捕获位置时,它会有点不太准确。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接