「パンアンドスキャン」トリミングで動画のサイズを一括変更


8

VLCプレーヤーで再生し、DIY電子音楽イベント中に低解像度(1024 x 768)のプロジェクターに投影するための〜120ビデオクリップのコレクションを準備しています。ソースクリップはすべて、それぞれ約4GBの.mov形式の超高解像度の抽象的なビジュアルです。アスペクト比はさまざまです。一部は4:3、その他は16:9、その他は1:1(正方形)などです。

それぞれの元のアスペクト比を維持しながら、すべてのクリップを1024x768にトリミング/スケーリングしたいと思います。そして、私はそれらレターボックス化せずに上/下または左/右に黒いバーを残さにそうしたいと思います。基本的に私がやりたいのは、それらを1024x768の画面いっぱいに表示し、それ以上縮小しないようにすることです。それは本質的に「パンアンドスキャン」技術だと思いますか?

(画像の一部がプロセスで削除されているかどうかは関係ありません-それらは単に幾何学的形状などを回転させているだけです。)

単一のFFMPEGコマンドを使用して、すべての〜120ビデオを一括でサイズ変更できる方法はありますか?または、WindowsまたはLinuxで機能する別のツールはありますか?どんな出力フォーマットでもかまわない-VLCが途切れることなく再生できるものだけだ。

回答:


3

4:3と16:9のビデオしかない場合は、次のことをお勧めします。

ffmpeg -i input.mov -filter:v 'scale=-1:768,crop=1024:ih' \
-c:v libx264 -crf 23 -preset veryfast output.mp4

これにより、ビデオを高さ768に拡大縮小し、幅を拡大縮小してアスペクト比を維持します。次に、幅を1024にトリミングし、高さを768に保ちます。1:1のビデオを使用しているという事実も複雑です。3000x3000ビデオは768x768にスケーリングされ、ffmpegは1024x768にトリミングしようとしますが、作物は入力よりも大きくなることができないため、これは明らかに機能しません...

これを機能させるために私が考えることができる唯一の方法は、すべてのビデオをトリミングすることです。これにより、出力の幅が入力の高さと同じになるようにトリミングされ、出力の高さが入力の高さの3/4になります。次に、ビデオを縦横比を維持しながら768の高さに縮小します。

ffmpeg -i input.mov -filter:v 'crop=ih:3/4*ih,scale=-1:768' \
-c:v libx264 -crf 23 -preset veryfast output.mp4

これは、元のファイルの高さが1024以上の場合にのみ機能します。x264は幅または高さの偶数のみを受け入れるため、問題が発生する可能性があることに注意してください(ただし、この場合は必要ありません)。

ディレクトリ内のすべての.movを変換するには、forループを使用できます。

for f in *.mov; \
do ffmpeg -i "$f" -filter:v 'crop=ih:3/4*ih,scale=-1:768' \
-c:v libx264 -crf 23 -preset veryfast "${f/%mov/mp4}"; \
done

これを再帰的に行うには、以下を使用できますfind

find . -type f -name *.mov -exec bash -c \
'ffmpeg -i "$0" -filter:v "crop=ih:3/4*ih,scale=-1:768" \
-c:v libx264 -crf 23 -preset veryfast "${0/%mov/mp4}"' {} \;

これらすべてには、ffmpegの最新バージョンが必要です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.