将视频转换为相同分辨率然后合并

将视频转换为相同分辨率然后合并

我有一堆剪辑,想把它们合并成一个视频。问题是每个剪辑的分辨率和宽高比都不同(有时 SAR 和 DAR 也不同)。我试图让所有内容都变成 1920x1080 16:9(相同的 SAR 和 DAR),并用黑色背景填充额外的空间。以下是我目前拥有的内容:

ffmpeg  -i input.mp4 -vf "scale=(iw*sar)*max(1920/(iw*sar)\,1080/ih):ih*max(1920/(iw*sar)\,1080/ih), crop=1920:1080,setsar=1:1" -c:v mpeg4 -vtag XVID -q:v 4 -c:a libmp3lame -q:a 4 output.avi

这将使所有内容达到 1920x1080,但它会裁剪非 16:9 的视频。我希望非 16:9 的视频有延长的黑条。

这是我用来合并所有剪辑并调整其大小的方法。

ffmpeg -i input1.avi -i input2.avi ... input14.avi -filter_complex "[0:v] [0:a] [1:v] [1:a] [2:v] [2:a] ... [14:v] [14:a] concat=n=15:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output.mkv

在当前形式下,它可以毫无问题地合并视频。过去,当第一个脚本“正确”转换垂直视频时,此脚本会出现问题。通常它会抱怨 SAR 和/或 DAR 错误。

总之,我该如何修改第一个命令,以使用相同的 SAR 和 DAR 将任何/所有分辨率/宽高比正确调整为 1920x1080 16:9?然后(如果需要)我该如何修改第二个脚本来合并转换后的视频?

答案1

比例滤镜有一些定制选项,用于按比例调整大小。之后使用 pad 滤镜添加黑条。

ffmpeg -i input.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:-1:-1,setsar=1" -c:v mpeg4 -vtag XVID -q:v 4 -c:a libmp3lame -q:a 4 output.avi

(我建议使用默认编解码器将这些中间文件输出为 MP4/MOV。AVI 中的 MPEG-4 第 2 部分已经过时了。)

相关内容