我使用ffmpeg从远程视频文件中获取一个屏幕截图,命令类似于ffmpeg -ss $TIME -i $URL -frames:v 1 -filter:v $FILTER file.jpg-ss在快速搜索https://trac.ffmpeg.org/wiki/Seeking之前)。-i是我想要转换屏幕截图的方式,比如裁剪/调整大小。在这种情况下是$FILTER
如果我想在3秒、5秒和14秒时获得3个屏幕截图,我需要运行这个命令3次,分别传递3、5和14作为"crop=iw-5:ih-5, scale=100:100:force_original_aspect_ratio=increase, crop=100:100"。但是,是否可以运行一次该命令,但让它为不同的时间输出多个屏幕截图文件?
ffmpeg会不会这样做,使得往返远程请求只需要1次而不是3次?那样会更有效率。如果没有,那么最好单独提出这3个请求,因为我可以并行处理。

最佳答案

有关相等间隔的屏幕截图,请参见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_typePICT_TYPE_I按特定间隔搜索I帧。

关于linux - 运行ffmpeg一次,但获得多个屏幕截图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47198241/

10-12 20:56