Androidという観点からVP9を考えてみる

先日GoogleがWebMの次の映像圧縮技術としてVP9を発表しました。

そこでAndroidという観点からVP9がどのように関わってくるか考えてみました。

まずは、メディア・コンテンツというものについて簡単に説明します。

メディア・コンテンツとはどういうものか?

動画を再生させるには映像と音声が必要です。
メディア・コンテンツには映像と音声のデータを持たせるわけですが、むやみやたらに持たせるわけにはいきません。


世界中のどのプレイヤーでも同様にメディア・コンテンツを再生できるよう共通のフォーマット(ルール)にしたがって、
データを持たせる必要があります。


この「音声と映像のデータを持つフォーマット」を「コンテナ・フォーマット」と呼びます。

映像と音声のデータを圧縮する

基本的にメディア・コンテンツは映像と音声のデータはデータ量を小さくして持ちます。

理由は単純です。
メディア・コンテンツのデータ量が大きいととにかく不便だからです。

ネット配信で言えば、データ量が大きければ大きいほど通信量と通信料が増えてしまいます。

そのため、映像や音声のデータは元のキレイさ(正確さ)を大幅に失わない程度にデータを圧縮してあげる必要があります。



世の中にはいろいろな圧縮技術があります。下記に圧縮形式の例を挙げます。

いろいろ固有名詞が出てきますが、「いろいろあるんだ」とだけ思っていただければ大丈夫です。


◆映像圧縮形式

◆音声圧縮形式

  • MP3
  • AAC
  • Voribs


エンコード」という言葉を聞いた事がありますでしょうか。
エンコード」がこの圧縮のことです。

逆に圧縮されたデータを元に戻すことを「デコード」と呼びます。

コンテナ・フォーマットの種類

先ほども書きましたが、映像や音声データは共通のフォーマットに従ってもつ必要があり、これをコンテナ・フォーマットと呼びます。

どんなコンテナ・フォーマットがあるか、例を挙げます。

またいろいろ固有名詞が出てきますが、「いろいろあるんだ」とだけ思っていただければ大丈夫です。


◆コンテナ・フォーマットの例


ちなみに、MP4だと次のようなタイプを見かけます。


コンテナ・フォーマット:MP4
映像形式:H.264/AVC
音声形式:AAC

VP9とは?

ここからの本題のVP9の話に移りますが、まずはVP9の前身であるVP8について書きます。

VP8はGoolge(On2テクノロジーズ)が開発した映像圧縮技術で主にWebMで使用されています。


コンテナ・フォーマット:Matroskaのサブセット
映像形式:VP8
音声形式:Vorbis

そして、このたび発表されたVP9のメリットは何でしょうか?次の3つと考えます。

・ロイヤリティフリー
オープンソース
・高い圧縮率


ロイヤリティフリー。(ルールを守れば)使いたい放題です。
オープンソース。中身を見放題です。
そしてVP8以上の、他の動画圧縮技術に負けない高い圧縮率を持つとのことです。

Android」という観点からのVP9

VP9をAndroidという観点から考えてみます。やや突っ込んだ話をします。

現在Android4.2 JellyBeanでは、VP8が公式サポートされています。

Android Supported Media Formats


では、KeyLimePie以降(Android 4.3?)でVP9がサポートされるのか?
個人的には次のことが気になっています。

  • どのレベルまで公式サポートとなるのか?
  • H.265/HEVCとのシェア争い

どのレベルまで公式サポートとなるのか?

Android端末は様々なデコーダーが搭載されています。

デコーダー」とは上記に出てきた圧縮されてデータを元に戻すものです。
そして、デコーダーには大きく分けて「ハードウェア・デコーダー」と「ソフトウェア・デコーダー」があります。


動画を再生するにあたり、Androidは高速で処理できるハードウェア・デコーダを優先的に使用します。
もし、再生しようとするメディア・コンテンツをデコードできるハードウェア・デコーダーがない場合、ソフトウェア・デコーダーを使用します。

そのようなことから、最低限ソフトウェア・デコーダーで再生できるメディア・コンテンツを公式サポートとしているように見受けられます。


次に公式サポートのレベルについて考えます。

H.264/AVCは一般的な映像圧縮形式ですが、実は「Baseline Profile」という一番基本的な形式までしか公式サポートとされていません。

これも上記と同じ理由で、ソフトウェア・デコーダーで再生できるのはBaseline Profileまでだからです。


Baseline Profileよりも上位のMain Profileを対応させていない理由は何か?

推測ですが、CPU負荷が大きくAndroid端末によっては思うように再生できない可能性があるため、
制限をかけているではないかと思っています。

Main ProfileはBaseline Profileより高度なことができる反面、どうしても処理が重くなるからです。


VP9はH.264/AVC以上の圧縮率を目指しています。

「高い圧縮率を持つ = デコード時に高い負荷がかかる」ということを意味します。

ソフトウェア・デコーダーでどこまで再生できるのか、どのラインまで公式サポートとなるのか、気になるところです。

H.265/HEVCとのシェア争い

2013年1月H.265/HEVCがITU-Tに承認されました。
H.265/HEVCは、前身のH.264/AVCの倍の圧縮率があると発表されています。

主観的な意見ですが、やはりH.264/AVCのシェアは凄く「次はH.265/HEVCの再生を!」という流れを少し感じています。

VP9がよりシェアを広げるためには、相応の戦略や相当の時間が必要ではないかと思います。

最後に

VP9の「ロイヤリティフリー」「オープン・ソース」はやはり素晴らしいメリットです。
これにより「とりあえずVP9を使ってみよう!」という人は増えると思います。

少しずつ使用者が増えることで、じわじわと浸透していき、磨かれていくことによって、
代表的な映像圧縮技術となる可能性があると思っています。


文責:カスタマー開発部 大阪開発課 中野 大輔