2013年5月20日月曜日

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



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

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

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




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


動画を再生させるには映像と音声が必要です。

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




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

データを持たせる必要があります。




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

f:id:bs-android:20130519162124p:image






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


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

理由は単純です。

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

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

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







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

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




◆映像圧縮形式



  • MPEG4

  • H.264/AVC

  • VP8

◆音声圧縮形式



  • MP3

  • AAC

  • Voribs




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

「エンコード」がこの圧縮のことです。

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




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


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

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

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




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



  • MP4

  • 3GGP

  • Matroska




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




コンテナ・フォーマット:MP4

映像形式:H.264/AVC

音声形式:AAC

f:id:bs-android:20130519162125p:image




VP9とは?


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

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




コンテナ・フォーマット:Matroskaのサブセット

映像形式:VP8

音声形式:Vorbis

f:id:bs-android:20130519162126p:image

そして、このたび発表された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は高速で処理できるハードウェア・デコーダを優先的に使用します。

もし、再生しようとするメディア・コンテンツをデコードできるハードウェア・デコーダーがない場合、ソフトウェア・デコーダーを使用します。

f:id:bs-android:20130519162127p:image

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




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

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を使ってみよう!」という人は増えると思います。

少しずつ使用者が増えることで、じわじわと浸透していき、磨かれていくことによって、

代表的な映像圧縮技術となる可能性があると思っています。




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




140 180 Android

記載されている会社名、および商品名等は、各社の商標または登録商標です。

0 コメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...