VP8

動画コーデック

VP8(ブイピーエイト)はGoogleに買収されたOn2テクノロジー社が開発した、ビデオコーデックの一つである[2]

VP8
VP8 logo
拡張子.webm, .avi
MIMEタイプvideo/VP8
開発者Google/On2テクノロジー
初版2008年9月13日 (15年前) (2008-09-13)
種別動画圧縮コーデック
包含先Matroska, WebM, AVI
派生元VP7
拡張VP9
国際標準RFC6386
ウェブサイトwww.webmproject.org
libvpx(VP8コーデックライブラリー)
開発元Google
初版2010年5月18日 (2010-05-18)
最新版
1.8.1[1] / 2019年7月15日 (4年前) (2019-07-15)
プログラミング
言語
C言語
対応OSWindows, macOS, Unix系
種別動画圧縮コーデック
ライセンス修正BSDライセンス
公式サイトwww.webmproject.org
テンプレートを表示

概要

2010年5月19日、Google I/OにてBSDライセンススタイルの、特許対応を計った修正ライセンスでオープンソースソフトウェアとなることが発表され[3]、その後Matroskaベースの独自フォーマットWebMと共にオープンソース化された。このライセンスはGPLとの互換性の問題が指摘されていたが[4][5]、その後のライセンス変更によって特許条項を削除したために問題は解消している[6]。開発においてはXiph.Orgが協力している[7]

GoogleはYouTubeにおいて、全ての動画をWebMに変換すると表明した[8]。また、ブラウザを開発するMozillaはFirefoxをWebMに対応させ[8]、Operaもまた同様の対応をとった。Adobeは将来Adobe Flash PlayerでVP8コーデックを再生できるようにするという計画を2010年に出したが[9]、結局、その後も対応させることはなかった[10]。同等の品質を持つH.264が広く普及したこと、またGoogleも後継のVP9に移行しているため、2017年現在VP8で新たにエンコードする利点は少ない。

GoogleはVP8の技術を利用した静止画フォーマットWebPも開発している[11]

特許

オープンソース化された初日に、x264の開発者の一人Jason Garrett-Glaserは、自身のブログにおいてVP8の技術的評価とともに特許係争への懸念を記して[12]おり、また、その翌日、H.264関連の特許を管理するライセンス管理会社MPEG LAが、VP8に関してパテントプールを作成しライセンス料の徴収を考えている旨の発言をした[13]。2011年2月10日〜3月18日にMPEG LAは必須特許の募集を行った[14]

2013年3月7日に、特許問題に関してGoogleがMPEG LAに参加する11社が保有する特許についてライセンスを結ぶことで合意したと発表され、今後はGoogleが利用者に対してW3CのRoyalty Free Licenseとしてライセンスを無償で供与することとなり、訴訟リスクについて一区切り付くことになった[15]

2013年3月21日に、MPEG LAに加入していないNokiaがVP8の特許侵害を申し立てた[16]。2013年8月5日、ドイツの裁判所はVP8がノキアの特許を侵害していないという判断をくだした[17]

エンコーダ・パラメータ

エンコーダの品質調整のためのパラメータが多数ある。以下は、libvpx 付属の vpxenc のパラメータ[18]FFmpegなどを使う際は、違うパラメータを利用する必要がある。

  • フレームレート
  • CPU負荷 - 以下の2通りある。画質とのトレードオフになる。
    • --best または --good を使い、CPU負荷を固定にする方法。CPU負荷は --best が1段階、--good--cpu-used で指定し6段階、合計7段階ある。CPU負荷を1段階上げると計算量が約50%増える。
    • --rt を使い、実際のCPU使用率を元にCPU負荷を決める方法。CPU使用率は --cpu-used で指定。
  • ビットレート
    • CBR (constant bitrate), VBR (variable bitrate) - 目標ビットレートを決め、それにあわせて画質を調整。ただし、CBRでもパケットサイズは完全に固定になるわけではない。
    • CQ (constrained quality) - 画質を固定にし、ビットレートを可変にする。CQでも上限ビットレートを指定できる。
  • ワンパス, ツーパス - 変換処理を1回で終えるか、2周させるかどうか。リアルタイム圧縮が必要な場合は、ワンパスにしないといけない。
  • キーフレームの間隔 - シーンカットで自動的にキーフレームが入るが、その間隔の最小値と最大値を指定できる。
  • スレッド数の指定 および --token-parts の指定。--token-parts を指定せずにスレッド数を --threads で指定した場合、エントロピーエンコーディングのところで1スレッドになってしまうが、--token-parts を使うと、画面を分割して並列処理できるようになる。
  • 再サンプリング
    • 時間軸 - フレームのドロップ。CBRでのみ使用。
    • 解像度 - 解像度を自動的に変更して調整できる。キーフレームのみで使用。
  • ビデオカンファレンス用
    • パケットロスが発生するケースで、それに対して耐性を付けるかどうか
    • 画像に変化がないことを検出する閾値
  • プロファイル - デコード負荷を下げるようなプロファイルを指定できる

ハードウェア・デコーダ・エンコーダ

ハードウェアでエンコード・デコードするためのVHDLおよびVerilogで書かれたソースコードが公開されている。プロセスルール65nmで1080pの動画デコードが25mW、720pの動画エンコードが80mWで行える[19]

ハードウェアエンコーダは以下のSoCなどで採用されている。

ハードウェアデコーダは以下のSoCなどで採用されている。

IVFファイル

IVF
拡張子.ivf
MIMEタイプvideo/VP8
開発者Google/On2テクノロジー
種別ビデオコーデック

コマンドラインツールおよびサンプルコードのフォーマットとして、WebMに加えて、WebMとは関係の無いシンプルな構造の独自フォーマットIVFが使われている。これは、Indeo Video Formatとも別物である。

ファイルヘッダ

IVFファイルはヘッダの先頭に4バイトのシグネチャ(マジックナンバー)"DKIF"を持つ。数値はリトルエンディアンを採用している。ヘッダーは次の通り。

バイト数説明
4'D' 'K' 'I' 'F'シグネチャ
200 00バージョン
220 00ヘッダサイズ(32バイト)
4'V' 'P' '8' '0'FourCC
2
2高さ
4フレームレート(分母)
4フレームレート(分子)
4フレーム数
400 00 00 00未使用

フレームヘッダ

バイト数説明
4フレームサイズ(ヘッダを含めず)
8Presentation Time Stamp (PTS)

参照

関連項目

外部リンク

🔥 Top keywords: メインページ宮崎麗果特別:検索豊後水道松本忠久土居志央梨若葉竜也能登半島地震 (2024年)田中雄士長谷部誠井上道義The GazettE若林志穂服部百音黒木啓司REITA虎に翼平井理央出口夏希サーブ (盲導犬)三鷹事件セウォル号沈没事故白眞勲三淵嘉子高橋克也 (オウム真理教)ME:Iルーシー・ブラックマン事件佐藤ありさ杉咲花蜜谷浩弥水野真紀亀井亜紀子 (政治家)熊本地震 (2016年)水原一平井川意高中川安奈 (アナウンサー)内藤剛志いなば食品YOSHIKI