ガジェット通信 GetNews

見たことのないものを見に行こう

AbemaTVがリニア型配信で「MPEG-DASH」をサポートした理由と、その使い方とは?

DATE:
  • ガジェット通信 GetNewsを≫

HLSとMPEG-DASHの違い

AbemaTV Developer Conference 2017」は開局から約1年半のインターネットテレビ放送の実績をもとに、現場で得られた技術的知見が公開されるイベントである。

配信現場からインジェスト・パッケージングを経て、多様なデバイスに快適な視聴体験を届けるための取り組みや、大規模な同時接続に対するシステム開発・運用など、セッションテーマは多岐にわたる。

現在、AbemaTVのサーバサイドエンジニアとして配信チームで活躍している山中勇成さんが発表したのは、「MPEG-DASHによるリニア型配信」についてだ。

AbemaTVのサーバサイドの話は、昨年のAbemaTV Developer Conference(DevCon)でも語られている。またTECH PLAY CONFERENCE 2017では「1周年を迎えたAbemaTVの動画配信の裏側」を紹介している。

今回MPEG-DASHの話をする前に、まずはHLSについて語られた。HLSとはAppleが提唱した、HTTPでストリーミングを行う規格。当初、ライブストリーミングは、Adobeが作ったRTMPというプロトコルや独自の規格で配信することが主流だった。

しかしこれらの規格はパソコン向けで移動体向けではなかったため、Appleが作ったのがHLSである。HLSの登場によりサポートするプレーヤー、サポートするサービスが増えたのだ。

HLSはメディアに関する情報はm3u8のプレイリストに記述する。このプレイリストはマスタープレイリストとメディアプレイリストの2つで構成される。

マスタープレイリストはビットレート別、冗長構成のメディアプレイリストのパスが記述される。これはなくてもよいが、アダプティブビットストリーミング(帯域に応じて画質を落としたり上げたりすること)が可能になる。

もう一つがメディアプレイリストで実際のメディアに関する情報が記述される。

MPEG-DASHの“DASH”はDynamic Adaptive Streaming over HTTPの略で、国際標準化機関ISO/IECが定義したHTTPストリーミングを行うための規格である。

規格化した目的は互換性がなかったAppleのHLS、MicrosoftのSS、AdobeのHDSなどの規格を統一するため。ABR、マルチストリーム、字幕(CC)、ライブ、ダイナミック広告、DRMなどの多くの機能が仕様として定められている。しかしすべてをサポートするプレーヤーは存在しないのが現状だ。

MPDはMedia Presentation Descriptionの略で、MPEG-DASHで定義されているメディアに関する情報を記述するXMLファイルである。HLSでいうm3u8のようなもの。言い換えればMPEG-DASHは、このMPDの仕様を定めたものである。

MPEG-DASHの要素解説

MPEG-DASHのMPDファイルを要素ごとに説明する。

■MPD

一番ルートとなる要素で、MPDには必ず必要となる。

type=”dynamic”にすると、定期的にプレーヤーがマニュフェストファイルを取りに来る仕様で、Liveの場合に多く使われる。staticの場合は一つの動画として一度ダウンロードしたら終わりである。

MPEG-DASHのプロファイルを図で表すと次のようになる。

よく使われるのが、ISO BMFF。これも二つに分かれている。On Demandはオンデマンドとタイムシフト、ビデオに使われる。一度読んだら変化がないコンテンツがオンデマンド。AbemaTVのリニア型配信の場合はLiveが使う。

プロファイルがなぜ必要なのかというと、MPEG-DASHではメディアファイルとしてTSやMP4、ライブストリーミング、サラウンドなど様々な仕様があるが、機能が多すぎるため対応できない。

そこでプロファイルで対応するメディア形式などを決め、プレーヤーはプロファイルを元に実装することで、プレーヤーがサポートする機能を限定することができるというわけだ。

■Period

コンテンツの区切りの単位。これによりプレーヤーが現在再生しているコンテンツを識別。複数書くことにより解像度や字幕の種類が異なるコンテンツを順番に再生することができる。

■AdaptationSet

音声と映像、字幕記述する。プレーヤーやプロファイルによっては言語別の音声や字幕を選択できる。

■Segment

セグメントのパスやテンプレートを記述する。SegmentBase、SegmentTemplate、SegmentListなどいくつかの記述方法があるが、MPEG-DASHでよく使われるのが、SegmentTemplateである。

SegmentTimelineはHLSのList。SegmentTimelineの「d」や「t」には整数値しか入れることができないため、それらを表記するためにタイムスケールで割るという処理(durationの計算)が必要になる。

■Representation

セグメントの形式を記述する。端末は自分の環境(通信環境やサポートコーデック)により、適切なRepresentationを選択する。H.265に対応している端末ならH.265を選択する。

ここまで説明してきたことをまとめると、MPDの構造は次のように表わすことができる。

MPEG-DASHのマニュフェスト構造

続いては、MPEG-DASHのマニュフェスト構造について、AbemaTVの実際の例で説明した。基本的に配信しているときは一つのピリオドで、コンテンツ単位となっている。

リクエストはメディアパスのテンプレートにアクセスする。一番下のビットレートから取りに行く。もう少し上の解像度がいけるとなると、720p.1のリプレゼンテーションに書き換わる。

この書き方は特徴的で、最初のセグメントのtの値にデュレーション(長さ)を持たせると次のセグメントの時間がわかる。そこで最初のセグメントのtの値にディレーションを足した値をダラータイムの変数に入れてアクセスするようなイメージでテンプレートに値を入れていくようにしている。

M4Sとはフラグメント化されたMP4ファイルのことである(fMP4)。MPEG-DASHのISOMBMFFでは、MP4をメディアファイルとする必要がある。

fMP4は通常のMP4とは異なり、メディアの基本情報が記述された、Initialization Segment(どういう音声トラックがあるかコーディックの情報など)とMedia Segment(実際の動画ファイルが入っている)の2種類がある。

MP4とfMP4の構造は次の図が示す通りだ。

またHLSとMPEG-DASHのファイル取得は次のような流れとなる。実装するにはHLSは楽だが、MPEG-DASHは面倒くさいことがわかる。

リニア型配信でMPEG-DASHをどう使っているか

AbemaTVでは24時間365日、予め編成された番組表に従って配信するリニア型配信を行っている。リニア型配信では生放送やCM、フィラー(番組表に放送枠がないときや、生放送の映像が取得できないときに流れる代替映像)などのさまざまなコンテンツが配信されている。

収録映像、生放送のリニア型配信はそれぞれ次のようになる。


なぜ、MPEG-DASHに対応する必要があったのか。その背景にはDRM技術に対応したコンテンツの配信を行う必要があったからだ。AbemaTVでは通常の配信も暗号化しているが、コンテンツプロバイダーによっては認められているDRM技術への対応が必要となる。

しかもDRMはデバイスごとの対応が異なり、DRMによって必要な配信形式が異なるのである。

AbemaTVでは次の4つのパターン、iOSとSafariはHLSのFairplay、ChromeとFirefoxはWidevineでMPEG-DASH、AndroidはHLSでPlayReady、EdgeとIEはMPEG-DASHでPlayReadyに対応をしている。

MPEG-DASHに必要なMPDとts、fMP4は、収録の場合はトランスコーダーでfMP4とtsを生成し、ストリーミングサーバでMPDを生成している。

なぜfMP4とMPDを別々に生成するかというと、AbemaTVでは番組表に従ってコンテンツを再生するため、動的にマニフェストファイルを生成する必要があるからだ。セグメントの情報はファイルやデータベースに保存し、それらを参照してMPDを動的に生成しているのである。

生放送の場合は、Wowzaでtsを、コレクターでfMP4を、ストリーミングサーバでMPDを生成する。生放送の場合は、予め区切られたtsファイルをMP4に変換し、それをイニシャルセグメントとメディアセグメントに分けている。

AbemaTVでは放送枠の時間が動的に変化するため、fMP4の時刻情報を後から書き換えることができるようにしているのである。さらに生放送のCMがいつ入るかわからないため、毎セグメントごとにイニシャルセグメントを生成している。

配信品質の管理では独自監視ツールを作成

AbemaTVではテレビ品質の配信を目指している。本来放送されるべきコンテンツが配信されないトラブルは様々な要因で発生する。

例えば生放送のオペレーションミス、配信する回線トラブル、インフラのトラブル、バグによるトラブルもある。監視して検知したいが、AbemaTVは他の配信サービスに比べ、CMなど映像ソースの種類が複数あり、それらを24時間配信している。

制作現場では、マスタールームとよばれる所で、送出する生放送の映像を常に監視しているが、エンジニアが張り付いて監視するには限界がある。

映像の品質をチェックするツールはいくつかあるが、24時間配信するサイトには向いていないのだ。HTTPのステータスコードを監視するツールも入れているが、ストリーミングには役に立たない。

そこで監視ツールを作った。それが「procyon」である。これによって配信システムが正常に動作しているかを外形から監視することが可能になっている。

最後にAbemaTVがなぜ、MPEG-DASHをサポートしたのか、その理由および使い方が詳しく紹介された。動画配信関係のサービスに付いている人にとってはかなり参考になるので、これまでの発表資料とともに、今回の資料もチェックしてみてほしい。

■発表資料:MPEG-DASHによるリニア型配信 / Linear broadcasting by MPEG-DASH on AbemaTV

カテゴリー : デジタル・IT タグ :
CodeIQ MAGAZINEの記事一覧をみる ▶
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。