H.265(HEVC)はH.264より圧縮率の高い形式ですが、エンコードでつまずく原因はいろいろあります。
エラー1: libx265 が見つからない
エラーメッセージ
Unknown encoder 'libx265'
FFmpeg 8.1 では、続けて次の行も表示されます。
Error opening output files: Encoder not found
原因
使っている FFmpeg に libx265 が含まれていません。自前でビルドした FFmpeg や、コーデックを絞った配布パッケージ(Fedora 標準の ffmpeg-free など)で起こります。
Ubuntu / Debian の標準パッケージは該当しません。 apt 版には
libx265が含まれています。Ubuntu のffmpeg 6.1.1-3ubuntu5で、configuration:行から連続する3項目を抜き出すと次のとおりです。--enable-libwebp --enable-libx265 --enable-libxml2apt 版で
Unknown encoder 'libx265'が出る場合は、別の FFmpeg(自前ビルドやスナップ版など)が PATH で優先されていないか、which -a ffmpegで確認してください。
確認方法
ffmpeg -buildconf | grep x265
--enable-libx265 が表示されれば使えます。表示されなければ、その FFmpeg には含まれていません。
解決方法
Ubuntu/Debian でフルビルド版をインストールする:
# Ubuntu のみ: universe リポジトリを有効化(Debian の ffmpeg は main にあります)
sudo add-apt-repository universe
sudo apt update && sudo apt install ffmpeg
それでも libx265 が使えない場合は、静的ビルド(必要なライブラリを組み込み済みの実行ファイル)を使います:
# 静的ビルド版(johnvansickleのビルド)
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
tar -xf ffmpeg-release-amd64-static.tar.xz
macOS:
brew install ffmpeg
別の HEVC エンコーダを使う:
# NVENC (NVIDIAハードウェアエンコード)
ffmpeg -i input.mp4 -c:v hevc_nvenc output.mp4
# VideoToolbox (macOS)
ffmpeg -i input.mp4 -c:v hevc_videotoolbox output.mp4
# QSV (Intel Quick Sync)
ffmpeg -i input.mp4 -c:v hevc_qsv output.mp4
エラー2: iPhoneやApple製品で再生できない
症状
FFmpeg で作った HEVC のファイルが、iPhone や macOS で再生できません。サムネイルが表示されないこともあります。
原因
Apple 製品は、HEVC 動画のタグ(形式を示す識別子)に hvc1 を求めます。FFmpeg の初期設定では hev1 になります。
解決方法
-tag:v hvc1 を付けます:
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -tag:v hvc1 output.mp4
エラー3: プロファイル・レベルの問題
エラーメッセージ
x265 [error]: main profile not supported, internal bit depth 10.
[libx265 @ 0000026dae75f7c0] Invalid or incompatible profile set: main.
解決方法
プロファイルとビット深度をそろえる:
10bit の映像に -profile:v main(8bit 用)を付けると、このエラーになります。-pix_fmt でビット深度も指定してください。-profile:v main10 だけでは 10bit にならず、8bit の映像は Main プロファイルのまま書き出されます。
# Mainプロファイル(8bit、最も互換性が高い)
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -pix_fmt yuv420p -profile:v main output.mp4
# Main10プロファイル(10bit HDR向け)
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -pix_fmt yuv420p10le -profile:v main10 output.mp4
よく使うレベル設定:
libx265 では、-level:v を付けてもレベルは変わりません。-x265-params の level-idc で指定します。high-tier=0 を付けないと、High tier で書き出されます。
# レベルを明示する(デバイス互換性向上)
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -x265-params level-idc=4.1:high-tier=0 output.mp4
エラー4: ファイルサイズが逆に大きくなる
H.265 で書き出したファイルが H.264 より大きくなった場合は、CRF 値が低すぎる可能性があります。CRF は画質の指定です。値が小さいほど高画質になり、ファイルも大きくなります。
推奨CRF値
| 用途 | CRF値 | 目安 |
|---|---|---|
| 高品質アーカイブ | 18〜22 | H.264 CRF 16〜20 程度 |
| バランス(推奨) | 24〜28 | H.264 CRF 22〜26 程度 |
| 小サイズ優先 | 30〜34 | 画質の低下が目立つ |
# バランスの取れた設定
ffmpeg -i input.mp4 -c:v libx265 -crf 26 -preset medium -c:a aac output.mp4
エラー5: エンコードが極端に遅い
解決方法
preset を fast か faster に変える:
ffmpeg -i input.mp4 -c:v libx265 -crf 26 -preset fast output.mp4
preset の速度と品質のトレードオフ:
ultrafast > superfast > veryfast > faster > fast > medium > slow > slower > veryslow
←速い・サイズ大 遅い・サイズ小→
エラー6: x265 ログが大量に出て処理が止まって見える
解決方法
x265 は動作中の情報(x265 [info] の行)を標準エラーに出力します。FFmpeg 8.1 では -v quiet でこれも消え、-stats で進捗だけが表示されます(8.0 以前では -x265-params log-level=error も付けます):
ffmpeg -v quiet -stats -i input.mp4 -c:v libx265 -crf 26 output.mp4
H.265の基本的なエンコードコマンド
# 基本(品質重視)
ffmpeg -i input.mp4 -c:v libx265 -crf 26 -c:a aac output.mp4
# Apple互換性重視
ffmpeg -i input.mp4 -c:v libx265 -crf 26 -tag:v hvc1 -c:a aac output.mp4
# 速度重視
ffmpeg -i input.mp4 -c:v libx265 -crf 26 -preset fast -c:a aac output.mp4
関連記事
よくある質問
なぜブラウザで HEVC が再生できない?
HEVC を再生できるかは、ブラウザと端末の組み合わせで決まります。Safari は 11 以降で再生できます。Chrome は 107 以降、Firefox は 134 以降(Windows 版。macOS 版は 136、Linux 版は 137 以降)で、端末が HEVC のハードウェアデコード(GPU などを使った再生)に対応していれば再生できます。Web で配信するなら、主要なブラウザすべてで再生できる H.264 に変換してください。Safari が AV1 を再生できるのは、iPhone 15 Pro など AV1 のハードウェアデコードに対応した端末だけです。
HEVC が VLC では再生できるのに Premiere で開けない
Premiere は HEVC(H.265)の読み込みに対応しています(Adobe の対応形式一覧)。この一覧で Microsoft Store の HEVC 拡張機能が必要とされているのは、Windows で HEIF 画像を読み込む場合です。それでも開けないファイルは、下の質問のコマンドで H.264 に変換してから読み込んでください。VLC は独自の HEVC デコーダを内蔵しているので、この問題は起きません。
HEVC を H.264 に素早く変換したい
ffmpeg -i in.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k out.mp4 を実行します。CRF は画質の指定なので、元の HEVC と同じくらいのサイズになるとは限りません。FFmpeg 8.1 で Big Buck Bunny の 1080p・10秒(CC BY 3.0)を計測すると、VMAF(画質の評価値)がほぼ同じになる設定で、libx265 の CRF 25 が 4.94 MB、libx264 の CRF 23 が 7.12 MB でした。
HEVC と H.265 は何が違う?
同じ規格です。H.265 は ITU での呼び名、HEVC は MPEG での呼び名です。ファイルの拡張子も変わりません。
HEVC → H.264 で画質は落ちる?
少し落ちます。H.264 は、同じ見た目の画質を出すのに 30〜50% 多くのビットレートが必要です。FFmpeg 8.1 で Big Buck Bunny の 1080p 素材を使った計測では、H.264 の CRF 20 と HEVC の CRF 22 で VMAF がほぼ同じでした。