2018-04-27

OpenH264とは何か?

Twitterで流れてきたので、簡単に説明します。

OpenH264とは、Ciscoが開発したH.264/AVCのライブラリです。

https://github.com/cisco/openh264

中身はBSDライセンスで公開されており、MPEG-LAのライセンス料を支払う必要もありません。

OpenH264が生まれるきっかけとなったのがWebRTCです。

H.264を使うにはMPEG-LAにライセンス料を支払う必要があり、2013年当時、WebRTCの普及を妨げていた一因でした。

そこでCiscoが社内で使っていたH.264のライブラリを切り離して、OpenH264という名前でオープンソースとして公開しました。

OpenH264はH.264/AVCから以下の制約があります。

・Main profileに限定
・Bフレームは使えない(CABACは使える)

ここで、MPEG-4のプロファイルについてお話します。

プロファイルとは、動画に使うことが許された技術仕様の組み合わせのことです。
ISO14496-2に規定された組み合わせを使い、それぞれの用途で活用されています。

一番シンプルなBaseline Profileは、I・Pフレームのみ使えて、エントロピー符号化はCAVLCとUVLCのみ使えます。
そして、その次がMain Profileです。これはBaseline Profileに追加してBフレーム、エントロピー符号化にCABAC、その他色々追加されています。

OpenH264ではMain Profileが使われていますが、Bフレームは使えないようです。これはBフレームの場合、前後のフレームを取っているため、圧縮率は格段と上がりますが、符号化にかなり時間がかかるため、遅延が発生してしまいます。そのため、ライブ配信ではBフレームを使わないことが多いです。

話を戻しますが、OpenH264ではWebRTCに特化したH.264のライブラリであることが言えますね。

また、OpenH264をリリースして1年後にはFirefoxにプラグインとして内蔵されることになりました。

同時にCiscoとMozillaは画面共有APIを発表しました。これにより、デスクトップやアプリケーションの画面をブラウザ単体で画面共有することが可能になりました。

それからChromiumを始めとする多くの製品でOpenH264が使われるようになり、現在ではH.264がWebRTCで一番多く使われているコーデックとなりました。

そんなH.264が普及した背景には、Ciscoの活躍があったことを忘れてはいけません。