web-dev-qa-db-ja.com

FFmpegを使ってビデオを小さくする方法

FFmpegを使用してビデオを小さくしてサイズを小さくすることはできますか?

元のビデオサイズは1024 x 576ですが、今度は要件を満たすためにビデオのサイズを720 x 480に変更します。

これどうやってするの?

92
Alan

最も基本的な例は次のとおりです。

ffmpeg -i input.avi -s 720x480 -c:a copy output.mkv

scaleフィルター を使用すると、柔軟性が向上します。

ffmpeg -i input.avi -filter:v scale=720:-1 -c:a copy output.mkv

-1は、アスペクト比を維持するために、指定された幅に対して正しい高さを自動的に選択するようにffmpegに指示します。 -1は、特定の高さを指定する場合、幅にも使用できます。


libx264を使用する場合のスケールのマイナス面の1つは、このエンコーダーが偶数値を必要とし、スケールがエラーを引き起こす奇数値を自動的に選択する可能性があることです:width or height not divisible by 2。特定の高さ(この例では720)に対して偶数の値を選択するようにスケールを指示できます。

scale="trunc(oh*a/2)*2:720"

...または指定された幅(この例では1280):

scale="1280:trunc(ow/a/2)*2"

Ffmpegビルドは、-cまたは-filterオプションを認識しないと文句を言う可能性があることに注意してください。 scaleもサポートしていない場合があります。その場合、新しいffmpegを使用する必要があります。これは、静的ビルドとして ダウンロード可能 、または 自分でコンパイル です。

159
jimhark

私は以下のコマンドを使ってビデオや画像のリスケーリングをしています。幅と高さを固定した場合 -

ffmpeg -i input.avi -vf scale="720:480" output.avi

縦横比を維持したい場合は、高さを-1にするだけで、幅に基づいて自動的にサイズ変更されます -

ffmpeg -i input.avi -vf scale="720:-1" output.avi

あなたが入力サイズに基づいて拡大縮小したいなら、例えば。たとえば、幅/高さを半分に縮小するとしましょう。

ffmpeg -i input.avi -vf scale="iw/1:ih/2" output.avi

注意 :

iw : input width
ih : input height

静的ビルドは - https://johnvansickle.com/ffmpeg/ からダウンロードできます。

ドキュメント: https://ffmpeg.org/ffmpeg.html#filter_005foption

8
Aniket Thakur