WebMは、ブラウザの画面録画、OBSの書き出し、WebRTCのキャプチャなどで標準的に使われるダウンロード形式です。オープンなWeb用途では優秀ですが、編集ソフト・スマホ・古いメディアプレーヤーはVP8/VP9映像やOpus/Vorbis音声をうまく扱えないことが多々あります。解決策はWebMをMP4に変換すること——多くの場合はH.264 + AACへの再エンコードを意味し、これならほぼどんな環境でも再生できます。本記事ではワンライナーのコマンド、再エンコードを省略できる条件、画質と容量のバランスの取り方を解説します。

動作確認: FFmpeg 8.1


この記事でわかること

  1. WebMが通常は再エンコードを必要とする理由(と不要なケース)
  2. ほぼすべてのWebMをMP4化する1つのコマンド
  3. CRF値の選び方:画質と容量のトレードオフ
  4. VP9はストリームコピーでき、VP8はできない理由
  5. 音声:Opus/VorbisをAACへ
  6. プリセットでエンコードを高速化する
  7. トラブルシューティング
  8. よくある質問

1. WebMが通常は再エンコードを必要とする理由

MP4(ISOベースメディアファイルフォーマット)は、コンテナとして「許可されたコーデック」が決まっています。iPhone・Premiere Pro・スマートTVで再生できる組み合わせは、実質的にH.264/HEVC映像 + AAC音声です。

一方、WebMが内包するのは次の通りです。

ストリームWebMのコーデックMP4と互換性あり?
映像VP8、VP9、AV1VP9/AV1は技術的には可、VP8は不可
音声Opus、Vorbis主要プレーヤーでは非対応

音声(Opus/Vorbis)はコンシューマー向けプレーヤーがMP4内でほぼ受け付けず、VP8はそもそもMP4で有効になりません。そのため、安全な既定はH.264 + AACへの完全な再エンコードです。これで大半のプレーヤー・端末で高い互換性が得られます(プロファイル・レベル・ピクセルフォーマット・端末側の制限が影響することはあるため、絶対の保証ではありません)。


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

これが基本形です。映像をH.264、音声をAACに再エンコードし、Web再生に即対応する形にします。

ffmpeg -i input.webm -c:v libx264 -crf 23 -c:a aac -b:a 128k -movflags +faststart output.mp4
  • -c:v libx264 … 映像をH.264でエンコード(最も互換性の高いコーデック)
  • -crf 23 … 一定品質の目標値。小さいほど高画質・大容量
  • -c:a aac -b:a 128k … 音声を128kbpsのAACに再エンコード
  • -movflags +faststart … moovアトムを先頭へ移動し、ダウンロード完了前に再生開始できるようにする

この1行で、VP8・VP9・Opus・Vorbisのどの入力も同じように処理できます。


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

CRF(Constant Rate Factor/固定品質係数)が最も重要なつまみです。知覚的な品質レベルを目標にし、ビットレートを変動させます。

CRF画質主な用途容量
18視覚的にロスレスアーカイブ・マスター
20非常に良い高画質アップロード中〜大
23とても良い(既定)汎用
26良いWebプレビュー・下書き
28許容範囲簡易共有・容量節約最小

CRFを±6変えると、おおむね容量が半分または倍になります。まず23から始めて調整してください。

ffmpeg -i input.webm -c:v libx264 -crf 20 -preset slow -c:a aac -b:a 192k -movflags +faststart output.mp4

-preset slow はCPU時間をより使い、同じ画質をより小さい容量に詰め込みます。エンコードは遅くなりますが、出力は軽くなります。


4. VP9はストリームコピーでき、VP8はできない

MP4は技術的にはVP9映像を格納できます。コンテナを変えるだけでよく、再生側がMP4内VP9に対応しているなら、映像ストリームをコピーして遅い映像の再エンコードを回避できます。

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

これはVP9映像をそのまま(瞬時・無劣化で)保ち、音声だけをAACに再エンコードします。

重要な注意点:

  • これが効くのはVP9(とAV1)だけです。VP8はMP4で有効な映像コーデックではなく、コピーすると大半のプレーヤーが拒否するファイルになります。
  • 多くのコンシューマー向けプレーヤー(古いiPhone、一部のスマートTV、Premiere Pro)は、コンテナ仕様上は許可されていてもMP4内のVP9に対応していません。互換性が目的なら、第2節のコマンドでH.264に再エンコードしてください。

判断の前に、WebMが実際にどのコーデックを使っているか確認しましょう。

ffprobe -hide_banner input.webm

Video: vp8 と表示されたら映像の再エンコードが必須です。Video: vp9 で再生側が対応していれば -c:v copy も選択肢になります。


5. 音声:Opus/VorbisをAACへ

WebMの音声はほぼ必ずOpus(新しい)かVorbis(古い)です。どちらも主要なMP4プレーヤーでは受け付けられないため、AACに再エンコードします。

ffmpeg -i input.webm -c:v libx264 -crf 23 -c:a aac -b:a 192k -ar 48000 -movflags +faststart output.mp4
  • -b:a 192k … 音楽中心の素材向けに高めの音声ビットレート(音声中心なら128kで十分)
  • -ar 48000 … 48kHzにリサンプリング。動画で一般的かつ安全なサンプルレート

音声トラックが元々ない場合は、FFmpegは映像のみのMP4を生成し、-c:a オプションは無害に無視されます。


6. エンコードを高速化する

H.264のエンコード速度は -preset で制御します。速いプリセットほど早く終わりますが、同じCRFでは出力がやや大きくなります。

プリセット速度同CRFでの相対容量
ultrafast最速最大
veryfast速い大きめ
medium既定基準
slow遅い小さい
veryslow最遅最小

手早く「十分な品質」で変換したい場合:

ffmpeg -i input.webm -c:v libx264 -crf 23 -preset veryfast -c:a aac -b:a 128k -movflags +faststart output.mp4

容量重視のアーカイブ用マスターなら、低めのCRFと -preset slow または -preset veryslow を使います。


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

エラー1: VLCでは再生できるがスマホで再生できない

原因: VP9をストリームコピー(-c:v copy)したが、スマホがMP4内VP9に非対応。 解決策: 第2節のコマンドでH.264に再エンコードする。

エラー2: Could not find tag for codec vp8 in stream

原因: VP8のWebMに -c:v copy を試した。VP8はMP4コンテナに入れられない。 解決策: 映像を再エンコードする。-c:v copy の代わりに -c:v libx264 を使う。

エラー3: 変換後に音が出ない

原因: -c:a copy で音声をOpus/Vorbisのまま残したが、大半のMP4プレーヤーがデコードできない。 解決策: -c:a aac -b:a 128k で音声を再エンコードする。

エラー4: オンラインで再生開始までに時間がかかる

原因: moovアトムがファイル末尾にある。 解決策: -movflags +faststart を付ける(上記の全コマンドに含まれています)。

エラー5: 色がやや薄く見える

原因: 一部のキャプチャでは色情報が引き継がれない。 解決策: 標準的なHDの色空間を明示的に付与する。

ffmpeg -i input.webm -c:v libx264 -crf 20 -colorspace bt709 -color_primaries bt709 -color_trc bt709 -c:a aac -b:a 128k -movflags +faststart output.mp4

よくある質問

Q1. WebMからMP4への変換で画質は落ちますか。 A. 再エンコード(H.264)は非可逆なので、CRF 18〜23ではわずかな、通常は目に見えない劣化があります。-c:v copy でVP9をストリームコピーすれば映像はビット単位で同一で、再エンコードされる音声だけが変わります。

Q2. VP9のままにすべきか、H.264にすべきか。 A. 互換性最大(スマホ・編集ソフト・TV)を狙うならH.264です。視聴者がモダンブラウザだけならVP9の方が効率的ですが、それならWebMのまま使うほうが合理的です。

Q3. WebMに音声がありません。コマンドは失敗しますか。 A. しません。FFmpegは映像のみのMP4を生成し、使われない音声オプションは無視されます。

Q4. AAC音声のビットレートはどれくらいが良いですか。 A. 音声中心や一般的な素材なら128kで透過的、音楽中心なら192kがおすすめです。ステレオAACでは256kを超えてもほとんど効果はありません。

Q5. 画面録画のWebMも同じ方法でMP4化できますか。 A. できます。OBSやブラウザの画面録画は標準的なVP8/VP9 + OpusのWebMを出力するので、第2節のコマンドがそのまま使えます。

Q6. ざっくりプレビューだけ欲しい場合の高速な方法は。 A. -preset veryfast とCRF 26程度の高めの値を使います。わずかな画質低下でずっと早く終わります。


関連記事


Tested with FFmpeg 8.1 — verified with our command-check script 一次ソース: ffmpeg.org/ffmpeg.html / ffmpeg.org/ffmpeg-codecs.html