HEVC(H.265)は容量を節約できますが、再生できない場面が意外と多い形式です。古いテレビやメディアプレーヤー、一部の動画編集ソフト、そしてHEVCコーデックが入っていないWindows環境などで「再生できない」が起こります。解決策は映像ストリームをH.264(libx264)に再エンコードすること。H.264はもっとも幅広く対応されたコーデックです。本記事では正確なコマンド、画質と容量のトレードオフ、多くの人がハマる10bitの落とし穴まで解説します。所要時間:10分。
動作確認: FFmpeg 8.1
これは特定のエラーメッセージへの対処とは別物です。エンコード中に libx265/hvc1 のエラーが出ている場合はFFmpeg H.265/HEVCエラー対策を参照してください。本記事は、互換性のためにHEVCをあえてH.264へ「ダウングレード」する話です。
この記事でわかること
- なぜH.264はHEVCより広く再生できるのか
- HEVC → H.264 の基本1行コマンド
- CRFで画質と容量を調整する方法
-presetで速度と圧縮率を調整する方法- 10bit HEVCの落とし穴(
yuv420pでの対策) - 元の音声をそのまま保持する方法
- トラブルシューティング
- よくある質問
1. なぜHEVCをH.264に変換するのか
HEVCはH.264より効率的なことが多く(同じ画質で約30〜50%小さくなるとよく言われますが、素材や設定によって変わります)、保存には向いています。問題はデコード対応の広さです。
| 再生環境 | HEVC (H.265) | H.264 |
|---|---|---|
| 古いテレビ・メディアプレーヤー | 非対応が多い | ほぼ確実に再生可 |
| Windows(HEVCコーデック無し) | 「再生できない」/映像が出ない | 標準で再生可 |
| 古い動画編集ソフト | 読み込み失敗・プレビュー不可 | 問題なく読込 |
旧ブラウザの <video> | 不安定 | ほぼ全対応 |
| 5年以上前のスマホ | 機種次第 | 安定 |
「どこでも確実に再生したい」ならH.264が安全な選択です。デメリットは、変換が再エンコードになること(不可逆かつCPU時間がかかる)、そしてH.264ファイルは元のHEVCより大きくなりやすい点です。
これは
-c:v copyではできません。コピーはコンテナを変えるだけでコーデックは変わりません。なぜHEVC → H.264 が必ず再エンコードになるかはコピー vs 再エンコードを参照。
2. 基本の変換コマンド
標準的な8bit HEVCファイルなら、これだけです。
ffmpeg -i input.mp4 -c:v libx264 -crf 20 -preset medium -c:a aac output.mp4
-c:v libx264… 映像をH.264でエンコード-crf 20… 一定品質の目標値(低いほど高画質・大容量)-preset medium… エンコード速度と圧縮率のバランス-c:a aac… 音声をAACに再エンコード(互換性が高い)
-crf 20 はほとんどの素材で視覚的にほぼ無劣化です。出力コンテナは .mp4 のままで、古いプレーヤーが期待する形式です。
3. CRF — 画質と容量
CRF(Constant Rate Factor)は最も重要なツマミです。libx264は0〜51を受け付け、低い数値ほど高画質・大容量になります。
| CRF | 見た目 | 用途の目安 |
|---|---|---|
| 18 | ほぼ無劣化に見える | アーカイブ・大画面 |
| 20 | 非常に良好、区別が難しい | 推奨デフォルト |
| 23 | 良好(libx264の既定値) | 一般的な共有 |
| 26 | 細部がやや甘くなる | 小容量・短いクリップ |
| 28 | 圧縮が見て分かる | 容量を強く削りたい時 |
CRFを数ポイント変えると、ファイルサイズと画質は目に見えて変わりますが、その正確な比率は素材次第で、「Xポイントで半分」といった固定の法則はありません。「画質」ではなく「目標ファイルサイズ」を狙いたい場合は2パスエンコードを使ってください——2パスエンコードを参照。とにかく小さくしたい場合はCRF・スケール・ビットレートをまとめて扱う動画を圧縮するを参照してください。
4. preset — 速度と圧縮率
-preset はエンコーダの作業量を決めます。遅いpresetほど同じ画質をより小さく収められますが時間がかかります。視覚的な品質目標を変えるのはCRFで、presetではありません。
| preset | 速度 | 同じCRFでの容量 |
|---|---|---|
ultrafast | 最速 | 最大 |
veryfast | 速い | 大きめ |
medium | 既定 | 基準 |
slow | 遅い | 小さい |
veryslow | 最遅 | 最小 |
時間に余裕があれば -preset slow は容量面で「タダで得する」設定です。サッと済ませたいなら medium で十分です。
5. 10bit HEVCの落とし穴(8bit yuv420pを強制)
スマホ・カメラ・HDR由来のHEVCには10bit(yuv420p10le)のものが多くあります。これをそのままlibx264に渡すと、出力が High 10 プロファイルのH.264になることがあり、本来ターゲットにしている古いプレーヤーがデコードできない事態になります。最大の互換性のために標準8bitの yuv420p を強制しましょう。
ffmpeg -i input.mp4 -c:v libx264 -crf 20 -pix_fmt yuv420p -c:a aac output.mp4
-pix_fmt yuv420p… 8bit 4:2:0 を強制(もっとも広く対応された画素形式)
これが最も安全な万能コマンドです。変換後のファイルで「音は出るのに古い機器で映像が真っ黒・乱れる」場合、-pix_fmt yuv420p の付け忘れが定番の原因です。
HDRについての注意: 10bitのHDRソースを8bitの
yuv420pに変換しても、変わるのはビット深度だけで、それ自体ではHDRをSDRにトーンマッピングしません。そのため色が眠く・くすんで・おかしく見えることがあります。ソースがHDRで正しいSDRの色が欲しい場合は、適切なトーンマッピングの手順が必要です。HDRをSDRに変換するを参照してください。
6. 音声はそのまま残す
元の音声がすでにAAC(HEVCのMP4では非常に一般的)なら、再エンコードする理由はありません。コピーして時短し、2回目の不可逆圧縮を避けましょう。
ffmpeg -i input.mp4 -c:v libx264 -crf 20 -c:a copy output.mp4
-c:a copy… 音声ストリームを無変更で通過(瞬時・無劣化)
それでもプレーヤーが音声を拒否する場合(DTSやOpusなど稀な形式がMP4に入っている等)は、-c:a aac に戻してください。
7. トラブルシューティング
古いテレビ・プレーヤーで映像が真っ黒・乱れる
原因: 出力が10bit(High 10 プロファイル)のH.264になっている。
解決策: -pix_fmt yuv420p を追加して8bitを強制(第5節)。
変換が異常に遅い
原因: 長い・高解像度のファイルに遅いpresetを使っている。
解決策: -preset medium か -preset veryfast を使う。エンコードはCPU依存で、ソフトウェアH.264では想定内です。
元のHEVCより容量が大きくなった
原因: 正常です。H.264はHEVCより効率が劣ります。
解決策: CRFを上げる(例 -crf 23)か解像度を下げる。動画を圧縮する参照。
変換後に音声が消えた
原因: 元の音声がMP4コンテナやプレーヤーの非対応形式だった。
解決策: -c:a copy ではなく -c:a aac で再エンコードする。
これをやってもiPhoneのHEVCがWindowsで再生できない
原因: iPhone映像特有のメタデータ・回転の別問題。 解決策: iPhone動画をWindowsで再生するを参照。
よくある質問
Q1. HEVCからH.264への変換で画質は落ちる?
A. 落ちます——不可逆な再エンコードです。-crf 18〜20 なら劣化はほぼ分かりませんが無劣化ではありません。コンテナだけのリムックス(-c copy)ではコーデックは変えられません。
Q2. H.264ファイルはHEVCより大きくなる? A. たいてい大きくなります。H.264は同じ画質により多くのビットを必要とします。それが万能な互換性の代償です。
Q3. CRFはいくつにすべき?
A. まず -crf 20 から。アーカイブ画質が欲しければ18へ、容量を小さくしたければ23〜26へ。
Q4. 自分のファイルが10bitか確認するには?
A. ffprobe input.mp4 を実行し、映像ストリーム行に yuv420p10le があるか見ます。あれば第5節の -pix_fmt yuv420p コマンドを使います。
Q5. HEVCのまま、より多くの機器で再生できるようにできる?
A. Apple機器では hvc1 タグの追加で改善することがあります。ただし本当に古いプレーヤーでは、H.264への変換だけが確実に機能します。FFmpeg H.265/HEVCエラー対策参照。
関連記事
- FFmpeg H.265/HEVCエラー対策 — libx265
- iPhone動画をWindowsで再生する
- FFmpegで動画を圧縮する — CRF・ビットレート・preset
- コピー vs 再エンコード —
-c copyの使いどころ
Tested with FFmpeg 8.1 — verified with our command-check script 一次ソース: ffmpeg.org/ffmpeg.html / trac.ffmpeg.org/wiki/Encode/H.264