VP8とは
VP8(ブイピーエイト)は、On2テクノロジー社によって開発されたビデオ
コーデックであり、後に
Googleに買収されました。2010年5月19日、
Google I/Oにて
BSD[[ライセンス]]を基にした修正
ライセンスでオープンソース
ソフトウェアとして公開され、
Matroskaベースの
WebMフォーマットと共に広く利用されるようになりました。
当初、VP8の
ライセンスはGPLとの互換性に関して問題が指摘されていましたが、その後の
ライセンス変更によって
特許条項が削除され、問題は解消されました。開発にはXiph.Orgが協力しています。
Googleは
YouTubeにおいて全ての動画を
WebMに変換すると発表しました。また、MozillaのFirefoxやOperaなどのブラウザも
WebMに対応しました。一方、AdobeはFlash PlayerでのVP8
コーデックの再生計画を発表しましたが、その後、対応は見送られました。
現在では、同等の品質を持つ
H.264が広く普及し、
Googleも後継の
VP9に移行しているため、VP8で新たにエンコードするメリットは少なくなっています。
GoogleはVP8の技術を応用して、静止画フォーマットである
WebPも開発しています。
VP8のオープンソース化直後には、
特許に関する懸念が浮上しました。x264の開発者であるJason Garrett-Glaserは、VP8の技術的な評価と共に
特許係争の可能性を指摘しました。さらに、
H.264関連の
特許を管理するMPEG LAが、VP8に関するパテントプールの作成と
ライセンス料の徴収を検討していると発表しました。
2011年には、MPEG LAが必須
特許の募集を開始しました。しかし、
2013年3月7日、
GoogleがMPEG LAに参加する11社が保有する
特許について
ライセンス契約を結んだと発表しました。これにより、
Googleが利用者に対してW3CのRoyalty Free Licenseとして無償で
ライセンスを提供することになり、訴訟リスクは解消されました。
しかし、
2013年3月21日には、MPEG LAに加入していないNokiaがVP8の
特許侵害を申し立てました。しかし、同年
8月5日、ドイツの裁判所はVP8がNokiaの
特許を侵害していないという判決を下しました。
エンコーダパラメータ
VP8エンコーダには、画質調整のための様々なパラメータが用意されています。以下はlibvpx付属のvpxencのパラメータであり、FFmpegなどを使用する際は異なるパラメータを利用する必要があります。
CPU負荷
`best` または `good` を使用し、固定のCPU負荷を設定する方法。`best` が最も高く、`good` では `--cpu-used` で6段階の調整が可能。
`
rt` を使用し、実際のCPU使用率を元に負荷を調整する方法。`cpu-used` で使用率を指定。
ビットレート
CBR(固定ビットレート):目標ビットレートに合わせて画質を調整。
VBR(可変ビットレート):目標ビットレートに合わせて画質を調整。
CQ(制約付き品質):画質を固定し、ビットレートを可変にする。上限ビットレートも設定可能。
その他
ワンパスまたはツーパス:変換処理の回数を指定。リアルタイム圧縮にはワンパスが必要。
キーフレームの間隔:シーンカットで自動的にキーフレームが入るが、その間隔の最小値と最大値を指定。
スレッド数と `
token-parts`:`token-parts` を指定すると、画面を分割して並列処理が可能。
再サンプリング:時間軸でのフレームドロップや解像度の自動調整が可能。
ビデオカンファレンス用:パケットロス耐性や画像変化の閾値、デコード負荷を下げるプロファイル指定が可能。
ハードウェアデコーダ・エンコーダ
VP8のエンコード・デコードをハードウェアで行うためのVHDLおよびVerilogによるソースコードが公開されています。65nmプロセスルールでは、1080pの動画デコードが25mW、720pの動画エンコードが80mWで実行可能です。
ハードウェアエンコーダ採用SoC
NVIDIA Tegra 4, K1, X1
Rockchip RK3066, RK3188
ハードウェアデコーダ採用SoC
Allwinner A10, A13
Broadcom BCM28150
Freescale i.MX 6
HiSilicon K3V2
Marvell Armada 1500
Nufront NS115
NVIDIA Tegra 3, 4, K1, X1
Rockchip RK2918, RK3066, RK3188
Samsung Exynos 5
ST-Ericsson NovaThor L9540
Texas Instruments OMAP 5
Ziilabs ZMS40
IVFファイルフォーマット
コマンドラインツールおよびサンプルコードでは、
WebMに加えて、シンプルな構造の独自フォーマットであるIVFも使用されます。IVFはIndeo Video Formatとは異なるものです。
ファイルヘッダ
IVFファイルは、ヘッダの先頭に4バイトのシグネチャ(マジックナンバー)である`DKIF`を持ちます。数値はリトルエンディアンを採用しています。ヘッダーの構造は以下の通りです。
シグネチャ(4バイト):`DKIF`
バージョン(2バイト)
幅(2バイト)
高さ(2バイト)
タイムベース分母(4バイト)
タイムベース分子(4バイト)
フレーム数(4バイト)
未使用(4バイト)
フレームヘッダ
フレームデータの前には以下のフレームヘッダが続きます。
フレームサイズ(4バイト)
タイムスタンプ(8バイト)
参照
VP3
VP6
VP7
VP9
HTML5
WebM
WebP
外部リンク
公式ウェブサイト