指定ffmpeg的百分比而不是时间

时间:2017-01-12 10:02:24

标签: image video image-processing ffmpeg thumbnails

要在视频中途从图像中获取缩略图,我可以ffmpeg -ss 100 -i /tmp/video.mp4 -frames:v 1 -s 200x100 image.jpg。通过使用-ss 100,它会在100秒获得一个缩略图(假设视频的长度为200秒,则会在视频的中间位置)。

但如果我不知道视频的确切长度,在我的应用程序代码中,我需要使用类似ffprobe的内容来首先确定视频的长度,然后将其除以2获取缩略图时间。

有没有办法让ffmpeg以你想要的视频百分比来获取缩略图?因此,不要指定-ss 100,而是使用-ss 50%-ss 20%来将缩略图从中途或20%放入文件中?

我知道我可以通过应用程序代码执行此操作,但如果有一种方法可以让ffmpeg自行处理它,那将会更有效。

1 个答案:

答案 0 :(得分:0)

这不漂亮,但是:

ffmpeg -y -i logo-13748357.mp4 -vf“ select = gte(n \,$(shuf -i 1-$(ffprobe -v error -select_streams v:0 -show_entries stream = nb_frames -of default = nokey = 1:noprint_wrappers = 1 logo-13748357.mp4)-n 1))“ -vframes 1 out_img.png

上面的命令是一个衬纸的示例,该衬纸获取视频中的帧数并将其传递给“ shuf”命令https://linux.die.net/man/1/shuf,该命令会随机选择帧范围内的数字和传递给ffmpeg。

因此,上面的方法能够从视频中随机选择一帧。

您也许可以使此方法适应您的特定目标。当然,这仍然需要七年的时间。