AVIは1992年に登場した古いコンテナですが、古いビデオカメラのクリップ、DivX/Xvidでリッピングした動画、MJPEGのキャプチャ、古いツールの画面録画などが今も .avi のままハードディスクに残っています。こうしたファイルは、最近のスマホ・ブラウザ・編集ソフトではきれいに再生できないことがよくあります。AVIをMP4に変換すれば解決します。多くの場合はH.264 + AACへの再エンコードが最も安全ですが、中身によってはコンテナを差し替えるだけで済みます。

1. AVIの中身

AVIは単なるコンテナです。中身のコーデックは、時代や作成ツールによって大きく異なります。

よくある映像コーデック 時代・出所 MP4と互換性あり?
DivX / Xvid(MPEG-4 ASP) リッピング動画、2000年代 場合による(要注意)
MJPEG 古いカメラ・キャプチャカード コピーは可(再生できないプレーヤーが多い)
Cinepak、Indeo、MS-MPEG4 1990年代のクリップ 不可
AVI内のH.264(まれ) 一部のキャプチャツール 可(コピー可能)
よくある音声コーデック MP4と互換性あり?
MP3 可(コピー可能)
PCM(非圧縮) 再エンコード推奨(8ビット・μ-lawはコピー不可)
AC-3 MP4では可だが安全のため再エンコード推奨

組み合わせが予測しづらいため、基本はH.264 + AACへの再エンコードです。元のAVIの中身が何であれ、どこでも再生できるファイルを作れます。

2. ほぼすべてのAVIに使える1コマンド

映像も音声も再エンコードし、Web対応の形にします。

ffmpeg -i input.avi -c:v libx264 -crf 23 -pix_fmt yuv420p -c:a aac -b:a 192k -movflags +faststart output.mp4
  • -c:v libx264 … 映像をH.264でエンコード。最も互換性の高いコーデック
  • -crf 23 … 一定品質の目標値(小さいほど高画質・大容量)
  • -pix_fmt yuv420p … 色の形式を、ほとんどの機器で再生できる4:2:0にする。MJPEGやDVの素材の多くは、付けないと4:2:2のH.264(High 4:2:2)になり、スマホなどで再生できないことがある
  • -c:a aac -b:a 192k … 音声をAACに再エンコード。AVIに多いMP3音声に192kが適する
  • -movflags +faststart … moovアトムを先頭へ移動し即時ストリーミングに対応

DivX・Xvid・MJPEG・PCM・MP3のどの入力も同じように扱えます。

3. ストリームコピーが効くケースと効かないケース

AVIがすでにMP4互換のコーデック(最も確実なのは H.264映像 + MP3またはAAC音声)を含んでいれば、再エンコードせずにコンテナを差し替えられます。

ffmpeg -i input.avi -c:v copy -c:a copy -movflags +faststart output.mp4

これが効く場合、変換は1〜2秒で終わり、画質はまったく変わりません。

失敗する、または互換性の低いファイルになるのは次の場合です。

  • 映像がDivX/Xvid(MPEG-4 ASP)のとき:FFmpegはMP4へストリームコピー(mp4v として格納)できることが多いものの、最近のプレーヤーや端末では正しく扱えないことがよくあります。H.264に再エンコードするほうが確実です。
  • 映像がCinepak・Indeo・MS-MPEG4のとき:MP4にはコピーできません。MJPEGはコピーできますが、再生できないプレーヤーが多くあります。
  • 音声がPCMのとき:16/24ビットのPCMはMP4に入りますが(FFmpeg 8.1)、再生できないプレーヤーが多く、8ビットやμ-lawのPCMは入りません。

判断の前に中身を確認します。

ffprobe -hide_banner input.avi

Video: と Audio: の行を見ます。Video: h264 + Audio: mp3/aac が最もきれいにコピーできるケースです。DivX/Xvid(mpeg4)も mp4v としてコピーできることが多いですが、H.264への再エンコードの方が互換性は高いです。MJPEG・Cinepak・Indeo や PCM 音声の場合は第2節で再エンコードしてください。

よくある折衷案:映像はコピーし、音声だけ再エンコードします。

ffmpeg -i input.avi -c:v copy -c:a aac -b:a 192k -movflags +faststart output.mp4

これは映像がすでにH.264で、音声がPCMなど非互換な場合に有効です。

4. CRF値の選び方(画質と容量)

CRFは再エンコード時の画質と容量のバランスを決めます。

CRF 画質 主な用途 容量
18 視覚的にロスレス 貴重な映像の保存 大
20 非常に良い 残したい家族の動画 中〜大
23 とても良い(既定) 一般的な変換 中
26 良い 気軽に視聴 小

古いAVIは低解像度(640×480以下)が多く、低めのCRFでも小さいファイルになります。大切な映像にはCRF 18〜20がおすすめです。

ffmpeg -i input.avi -c:v libx264 -crf 18 -preset slow -pix_fmt yuv420p -c:a aac -b:a 192k -movflags +faststart output.mp4

H.264はMPEG-4 ASPより効率的ですが、再エンコードで容量が小さくなるとは限りません。ビットレートの低いDivX/Xvidの素材は、CRF 20で再エンコードすると元より大きくなることがあります。

5. 古いAVIの音声への対処

AVIの音声はトラブルの元になりがちです。

  • MP3音声はMP4へコピー(-c:a copy)して問題ありませんが、192kのAACに再エンコードすると最も多くの環境で再生できます。
  • PCM音声はAACに再エンコードします。16/24ビットならMP4へコピーもできますが再生できないプレーヤーが多く、8ビットやμ-lawはコピーできません。
  • AC-3音声は残せますが、ステレオAACに再エンコードするとスマホでのデコード問題を避けられます。

音声をステレオAACにダウンミックスしてそろえるコマンド:

ffmpeg -i input.avi -c:v libx264 -crf 20 -pix_fmt yuv420p -c:a aac -b:a 192k -ac 2 -movflags +faststart output.mp4

-ac 2 でステレオ出力を強制すると、古いキャプチャのサラウンドトラックを扱えない端末での「音が出ない」問題を防げます。

6. ビデオカメラ映像のインターレース解除

MiniDVカメラやアナログキャプチャカードからのAVIはインターレースのものが多く、動きのある場面で櫛状の横線として現れます。yadif フィルタでインターレースを解除します。

ffmpeg -i input.avi -vf yadif -c:v libx264 -crf 20 -pix_fmt yuv420p -c:a aac -b:a 192k -movflags +faststart output.mp4

-vf yadif できれいなプログレッシブ映像になります。インターレース素材は解除時にわずかに細部を失うため、動きが少し甘く見えても正常です。

7. トラブルシューティング

エラー1: Could not find tag for codec ... in stream

原因: MP4のmuxerが受け付けない映像コーデック(Cinepak・Indeo・MS-MPEG4など)に -c:v copy を試した。DivX/XvidとMJPEGは通常コピーできます。 解決策: -c:v libx264 で映像を再エンコードする(第2節)。

エラー2: 出力に音がない

原因: PCMなど非互換な音声トラックを -c:a copy でコピーした。 解決策: 音声を再エンコードする:-c:a aac -b:a 192k。

エラー3: 動きのある場面で横方向の櫛状の線が出る

原因: 素材がインターレース。 解決策: -vf yadif を追加してインターレース解除(第6節)。

エラー4: 音声と映像がずれていく

原因: 一部の古いAVIは可変フレームレートか、ヘッダが壊れている。 解決策: 再エンコード時に、元の映像と同じ一定フレームレートを指定する。例は30fpsの映像の場合です。25fps(PAL)の映像なら -r 25 にします。元と違う値にすると、FFmpegがフレームを複製したり間引いたりします。

ffmpeg -i input.avi -r 30 -c:v libx264 -crf 20 -pix_fmt yuv420p -c:a aac -b:a 192k -movflags +faststart output.mp4

エラー5: オンラインで長いバッファの後にやっと再生開始する

原因: faststartがない。 解決策: -movflags +faststart を付ける(上記の全コマンドに含まれています)。

よくある質問

Q1. AVIからMP4への変換で画質は落ちますか。 A. 再エンコードは非可逆ですが、CRF 18〜20では通常は劣化が目に見えません。AVIがすでにH.264 + MP3を含むなら、ストリームコピー(第3節)は無劣化です。

Q2. 高速なコピー方式が使えるかどうかはどう判断しますか。 A. ffprobe input.avi を実行します。h264 + mp3/aac はきれいにコピーできます。DivX/Xvid(mpeg4)も mp4v としてコピーできることが多いですが、H.264 再エンコードの方が互換性は高いです。その他のコーデック(MJPEG・PCM など)は再エンコードします。

Q3. コピーしたのに古いAVIがスマホで再生できないのはなぜ。 A. コンテナは変わってもコーデックが変わっていないからです。スマホの標準プレーヤーは、DivX/Xvid をたいてい再生できません。H.264に再エンコードしてください。

Q4. かけがえのないホームビデオに最適なCRFは。 A. -preset slow とCRF 18を使い、できる限り細部を保ちます。

Q5. AVIがとても小さく低解像度です。アップスケールすべき? A. 基本的には不要です。アップスケールしても細部は増えません。低めのCRFで変換し、今ある情報を保つだけにします。

Q6. フォルダ内のAVIを一括変換できますか。 A. できます。FFmpegを1ファイルずつ呼ぶシェルループを使います。1ファイルごとのコマンドは第2節と同じものを使ってください。

関連記事