Askthewind’s diary

個人的なメモ

FFmpegで動画をリサイズする

f:id:Askthewind:20190304203544j:plain

With ffmpeg Resize the movie while keeping the aspect ratio

FFmpegアスペクト比を保ったまま動画をリサイズする

FFmpegでプレビュー

ffmpeg -i input.mp4 -vf "scale=1280:-1" -f matroska - | ffplay -i -

FFmpegエンコード

ffmpeg -i input.mp4 -vf "scale=1280:-1" -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 20 "output.mp4"

 FFmpegでプレビュー

ffmpeg -i input.mp4 -vf "scale=1280:ow/a" -f matroska - | ffplay -i -

FFmpegエンコード

ffmpeg -i input.mp4 -vf "scale=1280:ow/a" -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 20 "output.mp4"

 

ffmpegアスペクト比を保ったまま動画をリサイズするにはリサイズしたい横幅のサイズが1280pxの場合、scale=1280:-1のように記述します。1280:-1で横幅1280px、縦幅をアスペクト比を保ったまま自動計算してくれます。

又はscale=1280:ow/aと記述しても横幅1280px、縦幅をアスペクト比を保ったまま自動計算してくれます。

アスペクト比を保ったまま動画をリサイズするコマンド

scale=1280:-1
scale=1280:ow/a

エラーが出る場合:

height not divisible by 2 (1280x853)
このようなエラーが出る場合は、縦幅が奇数のため(2の倍数でない場合)FFmpegはエラーを吐き出します。
その場合は、scale=1280:-2のように記述します。1280:-2で横幅1280px、縦幅をアスペクト比を保ったまま端数を切りあげて丸め処理をして自動計算(2の倍数へ自動調節)してくれます。

又は、scale=1280:trunc(ow/a/2)*2のように記述します。1280:trunc(ow/a/2)*2で横幅1280px、縦幅をアスペクト比を保ったまま端数を切り捨てて丸め処理をして自動計算(2の倍数へ自動調節)してくれます。

その他では、scale=1280:ceil(ow/a/2)*2のように記述します。1280:ceil(ow/a/2)*2で横幅1280px、縦幅をアスペクト比を保ったまま端数を切りあげて丸め処理をして自動計算(2の倍数へ自動調節)してくれます。

アスペクト比を保ったまま動画をリサイズするコマンド((height not divisible by 2)というエラーが出る場合)

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

FFmpeg keeps the aspect ratio and fits height Resize video

FFmpegアスペクト比を保ったまま縦幅に合わせて動画をリサイズする

FFmpegでプレビュー

ffmpeg -i input.mp4 -vf "scale=-1:720" -f matroska - | ffplay -i -

FFmpegエンコード

ffmpeg -i input.mp4 -vf "scale=-1:720" -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 20 "output.mp4"

FFmpegでプレビュー

ffmpeg -i input.mp4 -vf "scale=oh*a:720" -f matroska - | ffplay -i -

FFmpegエンコード

ffmpeg -i input.mp4 -vf "scale=oh*a:720" -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 20 "output.mp4"

 

リサイズしたい動画を縦幅に合わせたい場合、縦幅のサイズが720pxの場合、scale=-1:720のように記述します。-1:720で縦幅720px、横幅をアスペクト比を保ったまま自動計算してくれます。

又はscale=oh*a:720と記述しても縦幅720px、横幅をアスペクト比を保ったまま自動計算してくれます。

アスペクト比を保ったまま縦幅に合わせて動画をリサイズするコマンド

scale=-1:720
scale=oh*a:720

エラーが出る場合:
width not divisible by 2 (1279x720)
このようなエラーが出る場合は、横幅が奇数のため(2の倍数でない場合)FFmpegはエラーを吐き出します。
その場合は、scale=-2:720のように記述します。-2:720で縦幅720px、横幅をアスペクト比を保ったまま端数を切りあげて丸め処理をして自動計算(2の倍数へ自動調節)してくれます。

又は、scale=trunc(oh*a/2)*2:720のように記述します。trunc(oh*a/2)*2:720で縦幅720px、横幅をアスペクト比を保ったまま端数を切り捨てて丸め処理をして自動計算(2の倍数へ自動調節)してくれます。

その他では、scale=ceil(oh*a/2)*2:720のように記述します。ceil(oh*a/2)*2:720で縦幅720px、横幅をアスペクト比を保ったまま端数を切りあげて丸め処理をして自動計算(2の倍数へ自動調節)してくれます。

アスペクト比を保ったまま動画をリサイズするコマンド((width not divisible by 2)というエラーが出る場合)

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

Resize the movie in half while keeping the aspect ratio with FFmpeg

FFmpegアスペクト比を保ったまま動画を半分にリサイズする

FFmpegでプレビュー

ffmpeg -i input.mp4 -vf "scale=iw/2:-1" -f matroska - | ffplay -i -

FFmpegエンコード

ffmpeg -i input.mp4 -vf "scale=iw/2:-1" -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 20 "output.mp4"

 

ffmpegアスペクト比を保ったまま動画を半分にリサイズするには、scale=iw/2:-1のように記述します。scale=iw/2:-1で横幅を半分に縦幅をアスペクト比を保ったまま自動計算してくれます。

アスペクト比を保ったまま動画を半分にリサイズするコマンド

scale=iw/2:-1

エラーが出る場合:
height not divisible by 2 (640x479)
このようなエラーが出る場合は、縦幅が奇数のため(2の倍数でない場合)FFmpegはエラーを吐き出します。
その場合は、scale=iw/2:-2のように記述します。scale=iw/2:-2で横幅を半分に縦幅をアスペクト比を保ったまま端数を切りあげて丸め処理をして自動計算(2の倍数へ自動調節)してくれます。

アスペクト比を保ったまま動画を半分にリサイズするコマンド((height not divisible by 2)というエラーが出る場合)

scale=iw/2:-2

Resize video with FFmpeg

FFmpegで動画をリサイズする

FFmpegでプレビュー

ffmpeg -i input.mp4 -vf "scale=1280:720" -f matroska - | ffplay -i -

FFmpegエンコード

ffmpeg -i input.mp4 -vf "scale=1280:720" -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 20 "output.mp4"

ffmpegで動画をリサイズするには、リサイズしたい横幅のサイズが1280px、縦幅のサイズが720pxの場合、scale=1280:720のように記述します。出力サイズ1280px:720px

動画をリサイズするコマンド

scale=1280:720

Resize the video by specifying the scaling algorithm with FFmpeg

FFmpegでスケーリングアルゴリズムを指定して動画をリサイズする

ffmpegでプレビュー

ffmpeg -i input.mp4 -vf "scale=1280:720:flags=lanczos" -f matroska - | ffplay -i -

ffmpegエンコード

ffmpeg -i input.mp4 -vf "scale=1280:720:flags=lanczos" -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 20 "output.mp4"

ffmpegでスケーリングアルゴリズムを指定して動画をリサイズするには、リサイズしたい横幅のサイズが1280px、縦幅のサイズが720px、使用したいスケーリングアルゴリズムがlanczos(ランチョス)の場合、scale=1280:720:flags=lanczosのように記述します。

-vfを使うとデフォルトのスケーリングアルゴリズムはBicubic(バイキュービック)になります。
-filter_complex / -lavfiを使うとデフォルトのスケーリングフラグは適用されないため、デフォルトのスケーリングアルゴリズムはBilinear(バイリニア)になります。

スケーリングアルゴリズムを指定して動画をリサイズするコマンド

scale=1280:720:flags=lanczos

アスペクト比を保ったままスケーリングアルゴリズムを指定して動画をリサイズする場合は、scale=1280:-1:flags=lanczosのように記述します。

アスペクト比を保ったままスケーリングアルゴリズムを指定して動画をリサイズするコマンド

scale=1280:-1:flags=lanczos

Resize the video by specifying a high-precision scaling algorithm with FFmpeg

FFmpegで高精度なスケーリングアルゴリズムを指定して動画をリサイズする

ffmpegでプレビュー

ffmpeg -i input.mp4 -vf "scale=1280:720:flags=lanczos+accurate_rnd" -f matroska - | ffplay -i -

ffmpegエンコード

ffmpeg -i input.mp4 -vf "scale=1280:720:flags=lanczos+accurate_rnd" -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 20 "output.mp4"

ffmpegで高精度なスケーリングアルゴリズムを指定して動画をリサイズするには、リサイズしたい横幅のサイズが1280px、縦幅のサイズが720px、使用したいスケーリングアルゴリズムがlanczos(ランチョス)、高精度な丸め(端数)処理オプションaccurate_rndを使用する場合、scale=1280:720:flags=lanczos+accurate_rndのように記述します。

高精度なスケーリングアルゴリズムを指定して動画をリサイズするコマンド

scale=1280:720:flags=lanczos+accurate_rnd

アスペクト比を保ったままで高精度なスケーリングアルゴリズムを指定して動画をリサイズする場合は、scale=1280:-1:flags=lanczos+accurate_rndのように記述します。

アスペクト比を保ったまま高精度なスケーリングアルゴリズムを指定して動画をリサイズするコマンド

scale=1280:-1:flags=lanczos+accurate_rnd
メモ
iw : input width 入力した動画及び画像の横幅
ih : input height 入力した動画及び画像の縦幅
ow : output width 出力する動画及び画像の横幅
oh : output heigt 出力する動画及び画像の縦幅
a = iw / ih
ow = (iw * oh) / ih
ow = oh * a
oh = (ow * ih) / iw
oh = ow / a
dar = (iw / ih) * sar
ビデオサイズ
640:480 scale=vga
640:360 scale=nhd
960:540 scale=qhd
852:480 scale=hd480 
1280:720 scale=hd720
1920:1080 scale=hd1080
2048:1080 scale=2k
4096:2160 scale=4k 
3840:2160 scale=uhd2160
7680:4320 scale=uhd4320 
 

 参考にさせていただきました。Special Thanks

stackoverflow.com

stackoverflow.com

stackoverflow.com

stackoverflow.com

Also see

trac.ffmpeg.org

www.ffmpeg.org