制作视频缩略图

制作视频缩略图

如何从视频中进行简单的捕获?最好通过命令行?

想法:在时间线上的 9 个均匀放置的时间拍摄 9 张快照,并将它们保存为 JPG

例子:

Movie length = 10 min
T1= snapshot of 1 min
T2= snapshot of 2 min
......
T9= snapshot of 9 min
   |   |
 T1| T2| T3
---+---+---
 T4| T5| T6
---+---+---
 T7| T8| T9
   |   |

最好的程序是什么?有开源程序吗?

答案1

ffmpeg是一款出色的开源视频处理工具,包括提取帧。

要从特定时间戳中提取单帧,可以使用如下命令

ffmpeg -i video.avi -r 1  -t 00:01:00 -f image2 image%05d.png

-r 是帧速率。您还可以使用类似以下命令

ffmpeg -i video.avi -r 1/1440 -f image2 image%05d.png

每一分钟获取一帧(假设视频为 24FPS)。%05d 表示每个缩略图的序数应使用 5 位数字进行格式化。

如果您想将图像组合成蒙太奇(您的网格),您可以在使用 ffmpeg 提取帧后使用 imagemagick。

答案2

它不是一个命令行程序,但你也可以使用帧捕捉器

对于 ubuntu/debian,要求是:sudo apt-get install libqt4-dev libxine-dev build-essential

wget http://download.berlios.de/qframecatcher/qframecatcher-0.4.1.tar.gz
tar xzf qframecatcher-0.4.1.tar.gz
cd qframecatcher/src
qmake
make
./qframecatcher

来源:http://blog.radevic.com/2008/06/how-to-create-movie-or-video-frame.html

答案3

虚拟存储接口是一个用 Python 编写的命令行工具,可用于使用以下命令创建 3 x 3 的快照网格:

vcsi -g 3x3 video.mkv -o output.jpg

答案4

我的用例只是视频中的一个缩略图,只是一个用作<video>标签海报的单个文件。那么,有什么快速的方法可以做到这一点呢?

使用ffmpeg,您可以执行以下操作:

ffmpeg -ss 123 -y -i video.mp4 -r 1 -updatefirst 1 -frames 1 poster.jpg

123这将为您提供保存video.mp4为的第二个附近的帧poster.jpg

正如你所看到的,问题是我们需要知道哪一秒是正确的。

为了保持较低的依赖性,我们将使用 ffmpeg 本身来实现此目的:

# Get the time as h:m:s (non-padded)
l=$(ffmpeg -i video.mp4 2>&1 | grep Duration: | sed -r 's/\..*//;s/.*: //;s/0([0-9])/\1/g')
# Convert that into seconds
s=$((($(cut -f1 -d: <<< $l) * 60 + $(cut -f2 -d: <<< $l)) * 60 + $(cut -f3 -d: <<< $l)))
# Get frame at 25% as the thumbnail
ffmpeg -ss $((s / 4)) -y -i video.mp4 -r 1 -updatefirst 1 -frames 1 poster.jpg

25% 的视频似乎是一个常见的选择,但您也可以将其设置为 33% 或 50%。

下面是执行此操作的脚本

相关内容