私がやろうとしているのは、高さと幅の比率をチェックし、HD(1920x1080)に合わせてどの寸法を拡大縮小するかを決定するスクリプトを 1 つ設定することです。これは標準の FFMPEG コマンドを使用して可能ですか?
また、結果の寸法がそれぞれ 1080 または 1920 より大きい場合は、高さまたは幅のいずれかをトリミングする必要があります。
私はすでにこれを読んだ ffmpeg を使用して、アスペクト比を維持しながら、幅の異なるビデオを固定の高さにサイズ変更します。
したがって、ソース ビデオのどの寸法が大きいかを事前に知っていれば、スケーリング方法がわかります。
答え1
私は ffprobe を使用して既存のビデオの幅と高さを読み取り、bash で計算を行って制限要因を特定します。
(1 つの「スクリプト」を設定したいとおっしゃっていたので、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