MPEG-DASHによるリニア型配信 / Linear broadcasting by MPEG-DASH on AbemaTV

MPEG-DASHによるリニア型配信 / Linear broadcasting by MPEG-DASH on AbemaTV

2017/10/22 AbemaTV Developer Conference 2017
http://developer.abema.io/2017/

・MPEG-DASHの基礎
・AbemaTVのリニア型配信
・配信品質の管理

1. MPEG-DASHによるリニア型配信 AbemaTV Developer Conference 2017 Yusei YAMANAKA
2. 自己紹介
3. 山中勇成 @toriimiyukki 株式会社サイバーエージェント 2017年新卒 株式会社AbemaTV サーバサイドエンジニア 配信チーム (負荷対策チーム)
4. 「中3で初めて生放送サービスを作った」AbemaTVで働く最年少エンジニアとは? https://www.wantedly.com/companies/abema/post_articles/64961
5. 本日のアジェンダ ・MPEG-DASHの基礎 ・AbemaTVのリニア型配信 ・配信品質の管理
6. AbemaTVの動画配信を支えるサーバーサイドシステム https://www.slideshare.net/yuichironakazawa2/abematv インターネットにおける動画配信の仕組み https://www.slideshare.net/RyosukeKubo/ss-67208093
7. 1周年を迎えたAbemaTVの動画配信の裏側 https://speakerdeck.com/miyukki/the-background-of-video-distribution-in-abematv-during-one-year
8. MPEG-DASHの基礎
9. HLSとは Appleが提唱した、HTTPでストリーミングを行う規格 →当初、ライブストリーミングはRTMPや独自の規格で行うことが主流で あり、HLSの登場により実装するプレーヤーが増え、サポートするサービスも 増えた メディアに関する情報は、m3u8のプレイリストに記述する マスタープレイリスト →ビットレート別、冗長構成のメディアプレイリストのパスを記述する メディアプレイリスト →実際のメディアに関する情報やパスを記述する
10. MPEG-DASHとは 国際標準化機関ISO/IECが規格化した、HTTPでストリーミン グを行う規格 →AppleのHLSやMicrosoftのSS、AdobeのHDSなど規格に互換性 がなく、統一するために作られた Dynamic Adaptive Streaming over HTTP ABR, マルチストリーム, 字幕(CC), ライブ, ダイナミック広告, DRMなどの多くの機能が仕様として定められている →しかし、すべてをサポートするプレーヤーは存在しない…
11. MPDとは MPEG-DASHで定義されているメディアに関する情報を記述す るXMLファイル →言い換えればMPEG-DASHは、このMPDの仕様を定めたもの ここからは、実際のAbemaTVで配信しているMPEG-DASHの MPDファイルを参考に要素別に解説 Media Presentation Description
12. MPD解説 - MPDの一番ルートとなる要素 マニフェストのタイプ(dynamic | static) プレーヤーがバッファすべき最小値 プレーヤーがマニフェストを更新すべき最小値 マニフェストのプロファイル(後述) →MPDには必ず必要
13. MPEG-DASHのプロファイル Full Profile MPEG-2 TS main MPEG-2 TS simple ISO Base media file format On Demand ISO Base media file main ISO Base media file format Live ISO BMFF(MP4) ISO BMFF On Demand ISO BMFF Live
14. プロファイルがなぜ必要か MPEG-DASHでは、メディアファイルとしてTSやMP4、ライブス トリーミング、サラウンドなど様々な仕様がある プロファイルでは、対応しているメディア形式などを決めていて、 プレイヤーはプロファイルを元に実装することで、プレイヤーがサポー トする機能を限定することができる →しかし、機能が多すぎるため対応しきれない
15. MPD解説 - コンテンツの区切りの単位 このIDによりプレーヤーが現在再生するコンテンツを識別する →複数書くことにより解像度や字幕の種類が異なるコンテンツを順番に 再生することができる 本編Period CMPeriod 本編Period 次に再生 次に再生
16. MPD解説 - メディアの種類を記述する →プレーヤーはコンテンツの音声や映像、字幕などを選択する AdaptationSetのMIME(映像なのか、音声なのか、字幕なのか) 複数のRepresentation(ビットレート)が定義しているとき、 セグメント同士が連続しているか →言語別の音声や字幕などを選択することも可能
17. MPD解説 - セグメントのパスやテンプレートを記述する →SegmentBase, SegmentTemplate, SegmentListなどいくつか の記述方法がある timeやdurationなどのタイムスケール セグメントのテンプレートパス セグメントのタイムライン 357357 90000/ = 3.9706 ※durationの計算
18. MPD解説 - セグメントの形式を記述する このIDをテンプレートの値として使用する 帯域 コーデック →端末は自分の環境(通信環境やサポートコーデック)により、適切な Representationを選択する
19. MPDの構造 ⋮ ⋮ 番組本編のPeriod 映像のAdaptationSet セグメントテンプレート セグメントのタイムライン ビットレート、解像度別の情報(1080p) ビットレート、解像度別の情報(720p) 音声のAdaptationSet CMのPeriod
20. MPEG-DASHのマニフェスト構造 プロファイル指定 メディアパスのテンプレート タイムライン ビットレート、解像度別の定義 映像、音声、字幕の定義(言語別の音声など) コンテンツごとの単位(時間で分割、広告など) リクエストの一例 1. mp4ce/BSnr3JKqCoqq3H/P4AMzXhX8xh/360p.1/74011529.m4s 2. mp4ce/BSnr3JKqCoqq3H/P4AMzXhX8xh/720p.1/74011529.m4s 3. mp4ce/BSnr3JKqCoqq3H/P4AMzXhX8xh/720p.1/74332041.m4s (74011529+320512)
21. M4Sとは フラグメント(セグメント)化されたMP4ファイルのこと (ここではfMP4と呼ぶ) →MPEG-DASHのISOBMFFでは、MP4をメディアファイルとする必要が ある fMP4は通常のMP4とは異なり、メディアの基本情報が記述さ れた、Initialization SegmentとMedia Segmentの2種類 がある
22. TSの構造 1.ts PAT PMT Video Data #1 Audio Data #1 Video Data #2 Audio Data #2 Video Data #3 Audio Data #3 188byte区切り …
23. MP4とfMP4の構造 MP4 media.mp4 moov mvhd trak ftyp mdat Video Data fMP4 init.m4s 1.m4s moof mdat Video Data mfhd traf moov mvhd trak ftyp
24. HLSとMPEG-DASHのファイル取得 HLS MPEG-DASH m3u8 Master Playlist Media Playlistm3u8 ts Segment #1 ts Segment #2 Media Playlistm3u8 ts Segment #3 mpd Manifest Manifestmpd m4s Segment #1 Segment #1 m4s Segment #2 Segment #2 m4s Segment #3 Segment #3 Initial Segmentm4s Video Audio Initial Segment
25. まとめ
26. MPEG-DASHとHLSの違い HLS MPEG-DASH 規格 Apple ISO国際標準規格 楽実装 めんどくさい 少ない機能 多い
27. AbemaTVのリニア型配信
28. リニア型配信とは… 24時間365日、予め編成された番組表に従って行う配信
29. AbemaTVのリニア型配信 番組表に従って収録済みの映像、生放送、CM、フィラーなど あらゆるコンテンツを配信 配信システム ユーザー 収録映像 生放送 CM フィラー ※フィラー 番組表に放送枠がないときや、 生放送の映像が取得できない時に流れる代替映像
30. 収録映像のリニア型配信 映像 ソース Transcoder Storage Streaming Server CDN Client 配信システム ユーザートランスコードシステム
31. 生放送のリニア型配信 映像 ソース Wirecast Wowza Collector Storage Streaming Server CDN Client 配信システム ユーザー制作現場
32. MPEG-DASH対応
33. MPEG-DASH対応 DRM技術に対応したコンテンツの配信を行う必要があった →AbemaTVでは、通常の配信でも暗号化されているが、CP(コンテン ツプロバイダー)によっては、認められているDRM技術への対応が必要 →DRMはデバイスごとの対応が異なり、DRMによって必要な配信形式も 異なる
34. DRMと配信方式の対応 Microsoft PlayReady Apple FairPlay Google Widevine HLS MPEG-DASH △ ○ ほぼ ✕ ○ ○ ○ AbemaTVではこの4方式に対応
35. トランスコードシステム 収録映像のリニア型配信 映像 ソース Transcoder Storage Streaming Server CDN Client 配信システム ユーザー MPDを生成 tsを生成 fMP4を生成
36. なぜfMP4とMPDを別に生成するか AbemaTVでは、番組表に従ってコンテンツを再生するため、 動的にマニフェストファイルを生成する必要がある →セグメントの情報はファイルやデータベースに保存されており、それらを参 照してMPDを動的に生成している
37. 生放送のリニア型配信 映像 ソース Wirecast Wowza Collector Storage Streaming Server CDN Client 配信システム ユーザー制作現場 fMP4を生成 MPDを生成tsを生成
38. 生放送でfMP4を生成する 予め区切られたTSファイルをMP4に変換し、Initial Segment とMedia Segmentに分ける ts mp4 init.m4s media.m4s時間情報 →生配信ではいつCMを挿入するかがわからないため、毎セグメントごとに Initial Segmentを生成している →放送枠の時間が動的に変化するため、fMP4の時刻情報をあとから 書き換える
39. まとめ 生放送の番組では、リアルタイムにTSからfMP4へのトランスコー ドをしてMPDを生成している また、MPEG-DASHのMulti-Periodの構成で本編コンテンツ やCMを区切っている 収録映像の番組では、予め生成したfMP4とセグメント情報か ら動的にMPDを生成している
40. 配信品質の管理
41. 配信品質 AbemaTVでは、テレビ品質の配信を目指している
42. トラブルが起こる箇所 本来放送されるべきコンテンツが配信されないトラブルは、 様々な要因で発生する オペレーションミスオペレーションミス 映像 ソース Wirecast Wowza Collector Storage Streaming Server CDN Client 配信システム ユーザー制作現場 オペレーションミス回線トラブル オペレーションミスインフラトラブル オペレーショ バグ
43. 配信品質の監視 制作現場では、マスタールームとよばれる所で、送出する生放送 の映像を常に監視している AbemaTVは他の配信サービスに比べ、映像ソースの種類が複 数あり、複数のチャンネルを24時間配信している → しかし、エンジニアが張り付いて監視するには限界がある
44. 監視ツール →ライブストリーミングを監視できる製品でも、AbemaTVの多チャンネル、 24時間の配信をサポートしている製品はなく、AbemaTV独自の規格に 対応できてない 作るしか無い…! 映像の品質をチェックするアプライアンスはいくつかあるが、映像 業界で利用されているケースが多く、インターネットのライブストリー ミングの監視をする製品はまだ少ない →HTTPのステータスコードの監視は入れているが、ストリーミングとしての 監視には役立たない
45. 監視ツール AbemaTVの全チャンネルのHLSプレイリスト、MPEG-DASHの マニフェストを取得し、時間通りに進んでいるか、セグメントの順 序が正しいかをチェックする セグメントファイルを取得しメタデータやビットレートをチェックする 配信システムが正常に動作しているかを外形から監視することが 可能に
46. PR
47. AbemaTV開発局の構成 QA エンジニア E2Eテスト, 映像の品質基準など Android, iOS, Web, サーバサイド, インフラなど ディレクター 開発のディレクションなど デザイナー アプリケーションのデザイン, ロゴデザインなど
48. AbemaTVエンジニアの構成 Web サーバサイド フロント, 管理画面, Chromecastなど コア, API, 配信など Android Android, Fire TVなど iOS iOS, tvOSなど インフラ GCP, チューニング, 負荷試験など
49. We’re hiring! https://recruit.abematv.co.jp https://www.wantedly.com/companies/abema

646a01801bac1886ddf86aee2de913ed?s=128

Yusei Yamanaka

October 24, 2017
Tweet