使用FFMPEG创建与视频比例成比例的缩略图。

24

我正在使用以下命令使用FFMPEG创建缩略图:

ffmpeg -itsoffset -1 -i video.avi -vcodec mjpeg -vframes 1 -an -f rawvideo -s 240x180 image.png

它可以正常工作。但是,如果视频不是4:3的比例,它仍然会创建一个240x180像素的图像,并且额外的空间将被涂成黑色。是否有一种命令的变体可以防止这种情况并给我一个与视频比例成比例的图像?换句话说,我希望240x180是缩略图的最大尺寸,但不是最小尺寸。

如果该命令在视频小于240x180时创建一个更小的图像,则得到额外的积分。


在我有多个视频的同一个dir中,我创建了一个ss/文件夹。然后,为了创建所有视频的900x600缩略图并保持宽高比:for i in *.mp4; do ffmpeg -y -loglevel error -i "$i" -ss 00:00:02 -frames:v 1 -filter:v "scale=min(900\,iw):min(600\,ih):force_original_aspect_ratio=decrease" "ss/${i}.jpg"; done - Roko C. Buljan
1个回答

47

使用缩放过滤器scale

ffmpeg -itsoffset -1 -i video.avi -vframes 1 -filter:v scale="280:-1"  image.png

这将保持宽高比以实现280像素的宽度。 要将宽度增加到最大280像素但保持比例,请使用:

scale='min(280\, iw):-1'

在这里,我们假设您的视频是横向格式,因此我们可以将最大宽度设置为280,并忘记高度,对于3:2的视频高度应该为180,对于16:9的内容高度应该为158。

注:

  • -vcodec mjpeg 在写入PNG文件时没有意义
  • -f rawvideo 在这里也不起作用
  • -an 不需要,因为FFmpeg无法将音频写入PNG文件中

谢谢你的回答和建议!我之前是从别处复制了这个命令,对其中大部分参数的含义并不是很理解,所以就直接保留了它们。 - Sophivorus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接