每XX秒为视频创建一个图像

每XX秒为视频创建一个图像

截屏:电影胶片

我试过ffmpeg -i video.mkv -vf fps=1 out%d.png

但是它正在逐张生成图像。我需要将所有缩略图合并到一张图片中。如上面的屏幕截图所示。

答案1

在此处输入图片描述

ffmpeg -i input -filter_complex \
"select='not(mod(n,30))',scale=120:-1,tile=layout=3x2" \
-vframes 1 -q:v 2 output.jpg
  • 选择每 30 秒一帧
  • 规模每帧缩小到更小的尺寸(或者你也可以在平铺后缩放)
  • 将每一帧合并为一张图片。默认网格大小为 6x5,因此您可能需要layout根据要显示的图片数量进行调整。

该过程可能需要一些时间,具体取决于您的输入时间和格式。

答案2

你可以使用类似

ffmpeg -i video.mkv -filter:v "select=not(mod(n\,10)),setpts=N/((25)*TB)" -qscale:v 2 frame%03d.jpg
  • 控制select抓取的帧(本例中为每 10 个帧中的一个)
  • 控制setps帧速率,取决于你的源 - 25PAL 或30000/1001NTSC 视频
  • qscale控制输出帧的质量(量化比例),范围从 2(最佳)到 31(最差)

刚刚注意到你上面的编辑,如果这给了你想要使用的框架,那么作为起点应该没问题

然后你需要使用类似以下工具将图像拼接成单个资产图像魔术师

montage -background "transparent" -depth 8 -type TrueColorMatte frame??.jpg \
    -geometry 50x50 -tile 10x10 -matte -transparent "transparent" \
    -type TrueColorMatte -depth 8 allframes.jpg

相关内容