WebMは、ブラウザの画面録画、OBSの書き出し、WebRTCのキャプチャなどで標準的に使われるダウンロード形式です。オープンなWeb用途では優秀ですが、編集ソフト・スマホ・古いメディアプレーヤーはVP8/VP9映像やOpus/Vorbis音声をうまく扱えないことが多々あります。解決策はWebMをMP4に変換すること——多くの場合はH.264 + AACへの再エンコードを意味し、これならほぼどんな環境でも再生できます。本記事ではワンライナーのコマンド、再エンコードを省略できる条件、画質と容量のバランスの取り方を解説します。
動作確認: FFmpeg 8.1
この記事でわかること
- WebMが通常は再エンコードを必要とする理由(と不要なケース)
- ほぼすべてのWebMをMP4化する1つのコマンド
- CRF値の選び方:画質と容量のトレードオフ
- VP9はストリームコピーでき、VP8はできない理由
- 音声:Opus/VorbisをAACへ
- プリセットでエンコードを高速化する
- トラブルシューティング
- よくある質問
1. WebMが通常は再エンコードを必要とする理由
MP4(ISOベースメディアファイルフォーマット)は、コンテナとして「許可されたコーデック」が決まっています。iPhone・Premiere Pro・スマートTVで再生できる組み合わせは、実質的にH.264/HEVC映像 + AAC音声です。
一方、WebMが内包するのは次の通りです。
| ストリーム | WebMのコーデック | MP4と互換性あり? |
|---|---|---|
| 映像 | VP8、VP9、AV1 | VP9/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