はじめに
FFmpegを使用して動画の解像度変更やパディング(黒帯追加)を行う際、コマンドが意図通りに機能しないことがあります。特に、フィルターを適用しても出力ファイルの解像度が変わらない場合、その原因は対象動画がアナモフィック動画である可能性が高いです。
本記事では、このアナモフィック動画の仕組みを解説し、FFmpegで正しくリサイズおよびパディングを行うための、確実なアプローチを紹介します。
アナモフィック動画とは何か?
アナモフィック動画とは、**記録されているピクセル数(ストレージ解像度)**と、**実際に表示されるべきアスペクト比(表示解像度)**が意図的に異なっている動画フォーマットです。
この不一致を再生時に正しく補正するため、動画ファイルにはSAR (Sample Aspect Ratio) と DAR (Display Aspect Ratio) というメタデータが埋め込まれています。
-
SAR (サンプルアスペクト比): ピクセル単体のアスペクト比を示します。
1:1
以外の場合、ピクセルが正方形ではないことを意味します。 - DAR (ディスプレイアスペクト比): 最終的に画面に表示されるべき、全体のアスペクト比を定義します。
再生プレイヤーはこれらのメタデータを読み取り、ストレージ解像度の映像を水平または垂直に伸縮させることで、制作者が意図した正しいアスペクト比で映像を表示します。
例えば、ffmpeg -i video.mp4
で以下のような情報が表示されたとします。
Stream #0:0: Video: h264 ..., 1920x1080 [SAR 1:2 DAR 1:1]
これは「ストレージ解像度は1920x1080だが、ピクセルが縦に2倍長いので、再生時は960x1080(アスペクト比1:1)で表示せよ」という意味になります。
FFmpegでパディングが機能しない理由
このアナモフィック動画の特性が、FFmpegでの処理を複雑にする原因です。
FFmpegのpad
やscale
といったビデオフィルターは、原則としてメタデータではなく、ファイルが持つ実際のピクセル数(ストレージ解像度)を基準に動作します。
そのため、ストレージ解像度が1920x1080のアナモフィック動画に対して、1920x1080のキャンバスへパディングする以下のコマンドを実行しても、FFmpegは「入力解像度と出力解像度が同じ」と判断します。
# このコマンドはアナモフィック動画には機能しない
ffmpeg -i input.mp4 -vf "pad=w=1920:h=1080:-1:-1" output.mp4
結果として、パディング処理はスキップされ、元のSAR/DARメタデータが引き継がれたままファイルが出力されるため、見た目上の変化が一切生じないのです。
正しい解決策:ピクセルデータの正規化とパディング
アナモフィック動画を正しく扱うには、メタデータに依存した表示を解消し、見た目通りのピクセルデータを持つ標準的な動画(正方形ピクセル)に変換するステップが必要です。これをピクセルデータの正規化と呼びます。
この正規化とパディングを、FFmpegのフィルターチェーンを用いて一度に行うのが最も効率的です。
-
scale
フィルターで、SARメタデータに基づきストレージ解像度を補正し、正方形ピクセルの映像に変換する。 -
pad
フィルターで、正規化された映像を目的の解像度のキャンバスに配置する。
これを実現するコマンドは以下の通りです。
ffmpeg -i input_anamorphic.mp4 \
-vf "scale='iw*sar':ih,pad=1920:1080:-1:-1:black" \
-c:v libx264 -pix_fmt y20p -c:a copy \
output_standard.mp4
コマンドの解説
このコマンドの核心は、-vf
オプション内のフィルターチェーンにあります。
-
scale='iw*sar':ih
FFmpegが持つ内部変数iw
(入力幅) とsar
(サンプルアスペクト比) を利用しています。iw*sar
により、表示されるべき正しい幅が自動的に計算され、映像がその解像度にリサイズされます。これにより、アナモフィックな特性が解消され、ピクセルが1:1
の標準的な映像データに変換されます。 -
,pad=1920:1080:-1:-1:black
scale
によって正規化された映像を、続けて1920x1080の黒いキャンバスの中央に配置します。この時点では映像は標準的な形式になっているため、pad
フィルターは意図通りに機能します。
まとめ
FFmpegで解像度関連の処理が期待通りに動作しない場合、ffmpeg -i
で入力ファイルのSAR/DARメタデータを確認することが問題解決の第一歩です。アナモフィック動画を扱う際は、メタデータを無視するのではなく、scale='iw*sar':ih
のような式を用いてピクセルデータ自体を正規化し、後続の処理を行うのが定石です。このアプローチにより、メタデータに依存しない、一貫性のある動画ファイルを生成することが可能になります。