web-dev-qa-db-ja.com

Ffmpegの高級感とレターボックスのビデオ

解像度が480x36の動画がありますが、この動画を1280:72にアップスケールし、元の動画のアスペクト比を失うことはありません(左側のレターボックスと右側)

だから私は人々がffmpegでこのタスクを達成できることを知っていますが、今のところ私はそうすることができません

だから誰かがffmpegを共有して私と称賛することはできますか?

手伝ってくれてありがとうございます

7
Levan
ffmpeg -i input.mp4 -vf "scale=(iw*sar)*min(1280/(iw*sar)\,720/ih):ih*min(1280/(iw*sar)\,720/ih), pad=1280:720:(1280-iw*min(1280/iw\,720/ih))/2:(720-ih*min(1280/iw\,720/ih))/2" output.mp4

このコマンドを分解してみましょう。

ffmpeg -i input.mp4

これはffmpegの標準的な入力方法です。 「input.mp4」を入力ファイルの名前に置き換えます。

-vf

コマンドでいくつかのビデオフィルターが続くことを指定します。指定されたビデオフィルターは、各フレームに順番に適用されます。

scale=(iw*sar)*min(1280/(iw*sar)\,720/ih):ih*min(1280/(iw*sar)\,720/ih)

最初のフィルターはスケールフィルターです。スケールフィルターは、値の置換と計算を実行できるため、強力です。この場合、数学は新しいスケーリングされた幅と高さを計算します。画像を歪めることなく、入力画像を目的の出力形式の幅や高さに合わせて拡大縮小します。 「iw」、「sar」、「ih」の実際の値が自動的に置き換えられるため、スケールパラメータを変更する必要はありません。あなたの場合、入力ビデオは4x3であるため、計算は高さ720、幅1280未満にスケーリングすることがわかっています。詳細: https://ffmpeg.org/ ffmpeg-filters.html#scale-1

pad=1280:720:(1280-iw*min(1280/iw\,720/ih))/2:(720-ih*min(1280/iw\,720/ih))/2

2番目のフィルターはパッドフィルターです。スケール機能と同じ数学/置換機能があります。だからそれはあなたのために正確な数を把握します。それを機能させるために何も変更する必要はありません。パラメータは、出力を720x1280にし、入力画像をフレームの中央に配置するようにパッドフィルタに指示します。パッドフィルターは、入力画像がカバーしていない場所では、出力画像を黒で塗りつぶします。入力の場合、スケールフィルターが高さを720にスケーリングしたことはわかっていますが、幅は1280に満たないため、違いを補うために側面に黒いバーが追加されます。詳細: https://ffmpeg.org/ffmpeg-filters.html#pad

output.mp4

これは、ffmpegが結果を配置する出力ファイルを指定します。正確なニーズを満たすために、フォーマット、ビットレートなどのすべての種類のパラメータを追加する必要がある場合があります。

19
Brian