OpenH264はCiscoが公開したH.264のソフトウェアライブラリです。BSDライセンスで自由に使えるだけでなく、DLLのバイナリをCiscoのサーバからダウンロードする形にすると、MPEG-LAへのロイヤリティを支払わなくてもよくなります。

ソースコードはGitHubで公開されています。MSVCでビルドする場合は、MinGWのMsysとnasmをインストールした上で、MakefileのOSをmsvcに書き換え、gnumakeでmakeするだけでよいです。ビルドして生成されたopenh264.libがStatic Link Library、openh264.dllとopenh264-dll.libがDynamic Link Libraryになります。

OpenH264はもともと、WebRTC向けにオープン化されたため、以下の制約があります。

・High Profileには非対応(CABACは使える)
・Bフレームには非対応

DLLのインタフェースはcodec/api/svcにあります。サンプルコードはtest/apiがわかりやすいです。画像形式はYUV411です。

機能が限定されている分、フレームを入れるとフレームが出てくるシンプルな構成で、使いやすいです。ただし、High Profileに非対応の関係で、x264でエンコードしたデータをデコードしたりするのには不向きです。現状だと、機能が限定されていても問題の少ない、エンコーダをアプリに組み込むには便利かもしれません。

最近、8x8 Transformがサポートされたように、High Profile対応は進んでいるようですので、長期的にはデコーダも広く使えるようになるかもしれません。

リリースノートはopenh264.orgで読めます。

FFMPEGよりもコードがシンプルで読みやすいので、将来性に期待しています。