我想做的是設定一個腳本來檢查高度與寬度的比率,然後確定縮放哪個尺寸以適合高清(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