要从视频中途的图像中获取缩略图,我可以执行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有办法自己处理这件事,那会更有效率。
发布于 2019-06-02 10:25:44
它不是很漂亮,但是:
ffmpeg -y -i徽标-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徽标-13748357.mp4) -n 1))“-vframes 1 out_img.png
上面的命令是获取视频中的帧数并将其传递给"shuf“命令https://linux.die.net/man/1/shuf的一个示例,该命令随机选择帧范围内的一个数,并将其结果传递给FMPEG.
因此,上面能够从只有一行的视频中随机选择一帧。
您也许能够根据您的特定目标调整此方法。当然,假设七年后它仍然很重要。
https://stackoverflow.com/questions/41610167
复制相似问题