[ffmpeg] H.265(HEVC)エンコードを試す。

FFmpegの3.0がリリースされたのをきっかけに、H.265エンコーダを試してみた。

H.265とは

FFmpegの公式ドキュメントには以下の説明がある。

H.265 (also known as HEVC) offers 50-75% more compression efficiency compared to H.264 video, while retaining the same visual quality. ffmpeg has support for HEVC encoding using the x265 encoder. Note: libx265 is under heavy development. The API may change.

Encode/H.265 – FFmpeg
https://trac.ffmpeg.org/wiki/Encode/H.265

H.264に比べて圧縮率が50-75%上がっているらしい。ということは、映像品質が同じならファイルサイズが半分から1/4ぐらいになるということか。

Windows版の最新ビルドをダウンロードする

Zeranoe FFmpeg – Builds
http://ffmpeg.zeranoe.com/builds/
Latest Zeranoe FFmpeg Build Version: git-1c7e2cf (2016-03-01)

念のため、H.265が有効になっているか確認。

H.264とH.265のエンコード結果を比較する

フォーマットが1980×1080 29.97fps 80Mbpsの10分間の映像をエンコードしてみる。

1. ビットレート共通

H.264とH.265で共に1Mbpsでエンコードしてみる。

以下エンコード結果のファイルサイズ。
– H.264: 81.2MB
– H.265: 81.3MB

目視で画質を確かめると、H.264はブロック状の滲みが気になるけど、1Mbpsならこんなものだろう。しかしその後に観たH.265は、はっきり違いがわかるぐらいに映像品質が良かった。H.264なら4Mbps以上の画質じゃないか。

2. 映像品質共通

公式ドキュメントの以下の記述を参考に、CRF(Constant Rate Factor)を指定してエンコードしてみる。

The CRF of 28 should visually correspond to libx264 video at CRF 23, but result in about half the file size.

以下エンコード結果のファイルサイズとビットレート。
– H.264 (CRF=23): 341MB, 4.64Mbps
– H.265 (CRF=28): 86.4MB, 1.18Mbps

目視で確認すると画質は同じぐらいか。ファイルサイズは1/4になっている。

特にオンライン配信など、ビットレートとファイルサイズを落としたい場合には、H.265はかなり有効そうだな。