WebRTC H.265 (HEVC) 対応

V
shiguredo
Published in
5 min readNov 6, 2023

時雨堂では libwebrtc をビルドするためのツールと、ビルドしたバイナリを公開しています。今回 libwebrtc にパッチを当てる形で H.265 への対応を行いました。

今回のパッチにより WebRTC SFU Sora の iOS SDK と Android SDK で H.265 を利用可能にします。コーデック自体は含んでおらず、iPhone や Android 端末に搭載されている H.265 ハードウェアアクセラレーター (以降 HWA) を利用します。

まとめ

  • WebRTC SFU Sora iOS SDK / Android SDK が H.265 に対応
  • WebRTC SFU Sora も H.265 正式対応
  • Momo や C++ SDK も H.265 対応予定

なぜ今 H.265 なのか

ライセンスについての確認が無事取れたから、というのが一番です。それ以外にも、実装中に H.265 の流れが来たこともあります。

libwebrtc や SDK のバイナリ配布がライセンス的に問題ないとの確認を得た

H.265 の主なパテントプールである 2 つの団体に確認し、ハードウェア処理を利用した H.265 対応の SDK をバイナリで配布することは、ライセンスが不要との確認を得ました。

WebKit が H.265 の実装を RFC 互換で入れてきた

もともと WebKit は WebRTC H.265 をかなり早い段階で対応していました。ただずっと実験的機能、かつ実装が甘いこともあり、実用的ではありませんでした。

そこに Intel の協力を得て RFC 準拠の実装が入り、現在正式リリースに向けた動きがあります。

おそらく Safari 17.2 か 17.3 で WebRTC H.265 が標準で利用可能になりそうです。

libwebrtc に H.265 パーサー実装が入ってきた

Intel が、ゆっくりではありますが libwebrtc にも H.265 処理を入れつつあります。実際、昨年 2022 年 10 月の段階で、HWA を利用した H.265 の映像再生自体は Chrome に含まれています。

H.265 対応は何が嬉しいのか

モバイルでは基本的に H.264 を利用する人が多いですが、H.264 はもう 20 年前の規格です。H.265 も 10 年前の規格ですが … 。

多くのモバイル端末は H.265 の HWA を搭載していて、よほど古い端末でない限り、搭載していない端末はないと思います。

H.264 から H.265 に切り替わると、同等の画質を半分程度のビットレートで配信することができます。それにより利用帯域を減らすことができるのはとても魅力的です。さらに HWA により、マシンの CPU 負荷は高くなりません。

WebRTC SFU Sora の H.265 対応について

2023 年 12 月リリース予定の Sora 2023.2.0 にて H.265 のサイマルキャストにも対応し、デフォルトで H.265 を利用できるようにします。

Momo や C++ SDK の H.265 対応について

こちらも対応していきます。iOS / Android の H.265 対応をリリース次第着手していきます。C++ SDK ベースの Unity SDK や Python SDK でも利用できるようにしていきます。

また、C++ SDK では macOS VideoToolbox 、Windows と Linux は NVIDIA VIDEO SDK と oneVPL 、さらに NVIDIA Jetson での H.265 に対応します。

iOS の対応状況

前提として Sora iOS SDK は iOS 13 以降で利用可能です。iOS は 11 以降から H.265 への対応しており、iPhoen 5s 以降であれば H.265 が利用可能です。

残念ながら Safari は WebRTC H.265 に未対応です。おそらく 17.2 か 17.3 で対応すると思われます。

Android の対応状況

前提として Sora Android SDK は Android 5 以降で利用可能です。Android は Android 5 から H.265 に対応しているようです。H.265 HWA は端末によるとは思いますが、Android 5 時代にリリースされた端末が H.265 HWA に対応していたので、大丈夫そうです。

残念ながら Chome は WebRTC H.265 には未対応です。おそらく 2024 年のうちには対応するのではないかと思いますが、まだ先かと思います。

ユースケース

モバイル端末だけで完結するサービス

ブラウザでの利用を想定していないモバイル端末だけのサービスであれば、H.265 のみを利用してサービスを提供できます。それにより、映像配信/視聴の負荷、利用帯域を下げることが可能になります。

遠隔支援のように高画質かつ長時間の配信が必要なサービス

遠隔支援は長時間配信をする必要があったり、高画質の映像を求められることが多いです。

そのため H.264 HWA から H.265 HWAに切り替えることで、利用帯域を減らして、高画質配信が可能になります。

--

--