【发布时间】:2020-07-28 10:58:24
【问题描述】:
我正在尝试在我的库中生成多种视频变体(Mp4 格式),并计划提供从 1080p 到 240p 以及介于两者之间的流行尺寸的版本。为此,我正在拍摄具有 AxB 分辨率的视频,然后运行代码(在 bash 上),将它们缩放到所需的以下尺寸 - 426x240 640x360 842x480 1280x720 1920x1080,当然码率不同,然后再另存为Mp4。
现在,如果源视频的高度和宽度都可以被 2 整除,这将正常工作,但是对于具有奇数宽度和高度的视频,以下行的代码会中断:
-vf scale=w=${width}:h=${height}:force_original_aspect_ratio=decrease"
'width' 和 'height' 是每次迭代的期望(和硬编码):例如“426x240”和“640x360”
错误:
[libx264 @ 00000187da2a1580] width not divisible by 2 (639x360)
Error initializing output stream 1:0 -- Error while opening encoder for output stream #1:0 - maybe incorrect parameters such as bit_rate, rate, width or height
现在,由于我正在缩放,所以在这个方法中解释的方法对我不起作用 - FFMPEG (libx264) "height not divisible by 2"
而且,我也试过这个,但似乎所有品质都变得相同 -ffmpeg : width not divisible by 2 (when keep proportions)
- 这就是我尝试使用这个的方法:
scale='bitand(oh*dar,65534)':'min(${height},ih)'
请建议如何解决此问题,请注意: 1.我有一个非常大的库,我不能对每个视频都进行手动更改 2. 我需要缩放视频并保持宽高比
谢谢!
PS:[编辑] 我可以看到的一种方法是预先使用第二个脚本填充所有奇怪的身高/体重视频。然而,这使我的工作时间和工作量增加了一倍。我宁愿将其保留在单个脚本中。这是我看到的可用于填充的脚本: ```ffmpeg -r 24 -i -vcodec libx264 -y -an -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2"``(来自:FFMPEG (libx264) "height not divisible by 2")
【问题讨论】: