我想要做的是设置一个脚本,检查高度与宽度的比率,然后确定要缩放哪个尺寸以适合高清 (1920x1080)。使用标准 FFMPEG 命令可以做到这一点吗?
如果结果尺寸分别大于 1080 或 1920,我还需要裁剪高度或宽度。
我已经读过了 使用 ffmpeg 将不同宽度的视频调整为固定高度并保持宽高比
所以如果您事先知道源视频的哪个尺寸较大,我就知道如何缩放。
答案1
我将使用 ffprobe 读取现有视频的宽度和高度,并在 bash 中进行计算以找出哪个是限制因素。
(您提到您想要设置一个“脚本”,所以我希望这意味着 bash 是可以接受的。)
#!/bin/bash
W=$( ffprobe input.mp4 -show_streams |& grep width )
W=${W#width=}
H=$( ffprobe input.mp4 -show_streams |& grep height )
H=${H#height=}
# Target a 1920x1080 output video.
TARGETW=1920
TARGETH=1080
# I'm not familiar with the resizing parameters to ffmpeg,
# so I'm writing the below code based on the question you linked to.
if [ $(( $W * $TARGETH )) -gt $(( $H * $TARGETW" )) ]; then
# The width is larger, use that
SCALEPARAM="scale=$TARGETW:-1"
else
# The height is larger, use that
SCALEPARAM="scale=-1:$TARGETH"
fi
ffmpeg -i input.mp4 -vf $SCALEPARAM output.mp4