快速生成命令行缩略图视频库的工具


15

我使用gframecatcher生成缩略图视频画廊,即像这样的东西:

在此处输入图片说明

但是,这是一个GUI工具,我想为目录结构中的每个视频递归创建一个图库,因此我正在寻找一种快速的命令行工具来做到这一点。

Answers:


28

拉出图像捕获(这些图像高100像素,并保持宽高比),速率(-r)是每秒(每〜5分钟产生一帧),这还会为输出图像添加时间戳。

ffmpeg  -i MOVIE.mp4 -r 0.0033 -vf scale=-1:120 -vcodec png capture-%002d.png

然后使用ImageMagick来构建您的画廊图像:

montage -title "Movie Name\nSubtitle" -geometry +4+4 capture*.png output.png

7
您可以使用分数作为比率(-r)。这样可以更轻松,更准确地指定时间。5分钟= 300秒ffmpeg -i MOVIE.mp4 -r 1/300 -vf scale=-1:120 -vcodec png capture-%02d.png
DutGRIFF 2014年

avconv万一您不可ffmpeg用(某些Ubuntu版本),其工作方式相同。
肯·夏普

2
这可行,但是需要遍历整个视频文件。superuser.com/questions/538112/…提供了一些示例,这些示例尝试查找有意义的缩略图,并且避免必须坐下来处理整个视频以获取几帧。
Skrylar '16

这不会将时间戳添加到图像。
felwithe '17

对于目录中的一堆视频,您将如何进行批量处理?
保罗·琼斯

13

我喜欢使用称为VCS-Video Contact Sheet的易于使用的UNIX命令行bash脚本。他们的官方页面:http : //p.outlyer.net/vcs/

它比GUI更容易使用甚至更容易

``这是一个bash脚本,旨在创建视频联系表(预览),也称为视频的缩略图或预览。该脚本可以使用mplayer和ffmpeg支持的任何视频。''您将需要在系统上安装ffmpegmplayer

用法:

vcs input-filename -U0 -i 1m -c 3 -H 200 -a 300/200 -o save-filename.jpg

命令的工作方式

将input-filname编辑为视频文件的名称!

  • -U0(页脚中没有名称-否则显示主机名-请注意,该名称为零而不是字母O

  • -i 1m(以分钟为单位设置捕获时间间隔-在这种情况下,它是每分钟-您也可以-n改用设置捕获次数的方法,例如-n 21将创建21张图像,但不要同时使用两者)

  • -c 设置列数(这里是3列)

  • -H 200 -a 300/200 (设置大小和纵横比,以使文件不太大-似乎您必须同时做这两项)

  • -o filename.jpg.jpg默认设置.png太大,将其更改为您选择的文件名!)


7

这似乎很合适,它是免费的开放源代码,甚至可以在Windows上使用:)

它甚至具有高级的功能,例如可以选择足够接近但看起来不太模糊的帧,而不是盲目地按特定的时间间隔拾取任何帧,因此可以这样做:

屏幕截图

您可以向其传递参数(-D6),以便执行此操作:

更好的截图

另外,我真的很喜欢没有边界,因此图像可以稍大一些。


7

ffmpeg论坛提供了一个解决方案。

要制作多个屏幕截图并将其放置到单个图像文件中(创建图块),可以使用FFmpeg的图块视频过滤器,如下所示:

ffmpeg -ss 00:00:10 -i movie.avi -vf 'select=not(mod(n\,1000)),scale=320:240,tile=2x3' out.png

这将在电影中搜索10秒,选择第1000帧,将其缩放为320x240像素,并在输出图像out.png中创建2x3瓦片。

原始文章在这里-http://ffmpeg.gusari.org/viewtopic.php?f=25&t=597


而且,ffmpeg似乎支持使用相同语法的“ crop”。
一些想法

4

这就是我在Mac上使用AWS EC2处理简单联系表的方式。

步骤#1:在Amazon Web Services上创建EC2实例

我用了:

Amazon Linux AMI 2015.03.1 (HVM), SSD Volume Type - ami-0d4cfd66
t2.medium

步骤2:配置实例

为了方便起见,所有操作都从我的mac机运行,但是您也可以仅从EC2命令行运行命令“ sudu su ...”。

ssh -i "/local/path/to/key/your_ec2_key.pem" ec2-user@11.22.33.44 "sudo su root; curl -O http://ffmpeg.gusari.org/static/64bit/ffmpeg.static.64bit.latest.tar.gz"
ssh -i "/local/path/to/key/your_ec2_key.pem" ec2-user@11.22.33.44 "sudo su root; gunzip ffmpeg.static.64bit.latest.tar.gz"
ssh -i "/local/path/to/key/your_ec2_key.pem" ec2-user@11.22.33.44 "sudo su root; tar -xf ffmpeg.static.64bit.latest.tar"

用您的EC2 IP替换11.22.33.44。

步骤#3:处理视频

发送视频:

rsync -Pav -e 'ssh -i /local/path/to/key/your_ec2_key.pem pem' /Users/mdouma/Desktop/myVideo.mov ec2-user@11.22.33.44:/home/ec2-user/

将其处理为联系表:

ssh -i "/local/path/to/key/your_ec2_key.pem" ec2-user@11.22.33.44 "rm -f out.png ; ./ffmpeg -ss 00:00:00 -i myVideo.mov -vf 'select=not(mod(n\,1)),scale=113:111,crop=111:111,tile=18x36' out.png"

将/ Users / mdouma 更改为 本地根目录如果只希望每7帧一次,则将“,1”更改为其他数字,例如“,7”。将111更改为所需的大小

将其复制回我的mac:

rsync -Pav -e 'ssh -i /local/path/to/key/your_ec2_key.pem'  ec2-user@11.22.33.44:/home/ec2-user/out.png  /Users/mdouma/Desktop/out.png
open /Users/mdouma/Desktop/out.png

这是一个很好的提示。请注意,尽管那sudo su是没有目的的。
肯·夏普

2
为什么要将此发送到ec2?为什么不只在本地Mac上运行它呢?视频文件可能是GB大小...
尚未进行

4

该工具对我有所帮助(2019-02)-并且得到了维护。许多选项-网格,质量,字体,颜色,边框,间隔,...

https://github.com/amietn/vcsi

创建视频联系表。视频联系表是由排列在网格上的视频捕获缩略图组成的图像。

您只需要ffmpeg和python。


这非常好-谢谢!
阿什利


1

图腾-14.04和某些早期版本的Ubuntu的默认视频播放器-具有简单选项的菜单选项(在“编辑”菜单下,“创建屏幕截图库...”)。还有一个命令行等效项,称为“ totem-video-thumbnailer”,其中有一个手册页,告诉您如何使用它。我编写了一个简单的bash脚本,该脚本使用find命令的输出(注意不要将文件名中带有空格的文件分开)为特定文件上方的任何文件自动生成缩略图屏幕截图库(或上面提到的联系表)。目录中没有的大小。

如果有人想找它,我可以将其上传到〜jgbreezer下的我的github上。尽管使用ffmpeg等解决方案可能更灵活,更可靠;我似乎从图腾命令中得到了关于找不到特定帧的错误输出,但是它似乎在大多数情况下仍然有效。


0

我想要同样的东西,谷歌搜索最终使用ffmpeg和imagemagick。不是“快速”恕我直言。然后找到一个名为SlickSlice的bash脚本(最新更新为2008,但截至昨天为止运行良好)。使用配置文件和脚本本身安装并根据我的喜好对其进行了自定义。该脚本顺便使用了ImageMagick和MPlayer。

成功使用后,我对操作方法和自定义进行了详细说明。成功安装后,您可以使用以下命令生成视频时间轴缩略图:(
slickslice -x "InputFile.mp4"默认4列x 15行)或
slickslice -x "InputFile.mp4" -S 6x10(6列x 10行)。

它输出为as SLICKSLICED_InputFile.mp4.jpeg,我InputFile.mp4-screen.jpeg通过编辑bash脚本本身对其进行了定制。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.