运行ffmpeg一次但获取多个屏幕截图

时间:2017-11-09 09:30:42

标签: linux video ffmpeg thumbnails

我使用ffmpeg从远程视频文件中获取屏幕截图,其中包含ffmpeg -ss $TIME -i $URL -frames:v 1 -filter:v $FILTER file.jpg之类的命令(-ss出现在-i之前,用于快速搜索https://trac.ffmpeg.org/wiki/Seeking)。 $FILTER是我想要转换屏幕截图的方式,例如裁剪/调整大小。在这种情况下,它是"crop=iw-5:ih-5, scale=100:100:force_original_aspect_ratio=increase, crop=100:100"

如果我想获得3个截图,分别是3秒,5秒和14秒,我需要分别运行此命令3次,将{3}和第3次传递为$TIME。但是可以运行一次命令但是在不同时间输出多个屏幕截图文件吗?

并且ffmpeg会以这样的方式做到这一点,它会使往返远程请求只有1次而不是3次?在那种情况下,它会更有效率。如果没有,那么分别提出3个请求可能会更好,因为我可以并行完成。

1 个答案:

答案 0 :(得分:2)

对于相等间隔的屏幕截图,请参阅wiki

对于特定的时间戳,您可以使用select过滤器一次性完成:

ffmpeg -i <input> -filter:v "select='0-eq(t,3)-eq(t,5)-eq(t,14)',<other filters>" -vsync vfr file%01d.png

其中t是以秒为单位的演示文稿时间戳。

您还可以使用betweenpict_type PICT_TYPE_I在特定时间间隔内搜索I帧。