FFMPEG と入力ビデオ - 高さと幅を動的に取得する方法はありますか?

FFMPEG と入力ビデオ - 高さと幅を動的に取得する方法はありますか?

私がやろうとしているのは、高さと幅の比率をチェックし、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

関連情報