Baa*_*rud 4 video images animation
是否有任何程序可以让我指定视频文件的一部分(avi、mpeg、mp4 等)并每隔一秒/分钟拍摄一次“快照”,并将其存储为一系列图像文件(例如 jpeg)?例如,在 0h45m 和 1h00m 之间选择电影的一部分,并每 30 秒拍摄一次“快照”。
它可能是视频播放器(例如 VLC)的一部分或插件......关键是我需要一些自动拍摄快照的东西,而不是手动拍摄。
此外,有没有什么好的程序可以将这样一系列的图像文件转换为动画 GIF 或 PNG 文件?(如果快照程序可以选择将快照保存为动画 GIF/PNG,这当然是一个奖励。)
您可以使用它ffmpeg来执行此操作。ffmpeg 网站上有几个例子。
这里有几个:
这将每分钟创建一个缩略图,命名为img001.jpg, img002.jpg, img003.jpg, ... (%03d意味着每个缩略图的序号应使用 3 位数字进行格式化)
$ ffmpeg -i myvideo.avi -f image2 -vf fps=fps=1/60 img%03d.jpg
Run Code Online (Sandbox Code Playgroud)这将每 10 分钟创建一个缩略图,命名为thumb0001.bmp, thumb0002.bmp, thumb0003.bmp, ...
$ ffmpeg -i test.flv -f image2 -vf fps=fps=1/600 thumb%04d.bmp
Run Code Online (Sandbox Code Playgroud)如果您想将它们制作成短片,您可以再次寻求ffmpeg. 在他们网站的这个页面上讨论过。
以下是更多示例:
在这里,每个图像的持续时间为 5 秒(每秒 1/5 帧的倒数)。通过告诉 FFmpeg 将输入文件的 FPS 选项(每秒帧数)设置为某个非常低的值,我们在输出处制作了 FFmpeg 重复帧,从而实现了在屏幕上显示每个图像一段时间:
$ ffmpeg -f image2 -r 1/5 -i img%03d.png -c:v libx264 -r 30 out.mp4
Run Code Online (Sandbox Code Playgroud)如果您没有按系列 ( img001.jpg, img002.jpg, img003.jpg)编号和排序的图像,而是随机一堆图像,则 ffmpeg 还支持 bash 样式的通配符(* 表示任意数量的任何字符):
$ ffmpeg -f image2 -r 1 -pattern_type glob -i '*.jpg' -c:v libx264 out.mp4
Run Code Online (Sandbox Code Playgroud)或对于 png 图像:
$ ffmpeg -f image2 -r 1 -pattern_type glob -i '*.png' -c:v libx264 out.mp4
Run Code Online (Sandbox Code Playgroud)
要将生成的视频制作成 gif 动画,您可以使用其题为“如何使用 ffmpeg 从 avi 生成 gif ”的 SO Q&A 中概述的步骤。:
$ ffmpeg -i video.avi -t 10 out%02d.gif
Run Code Online (Sandbox Code Playgroud)
然后:
$ gifsicle --delay=10 --loop *.gif > anim.gif
Run Code Online (Sandbox Code Playgroud)
这是该工具的链接gifsicle。