Slide 1

Slide 1 text

MPEG-DASHによるリニア型配信 AbemaTV Developer Conference 2017 Yusei YAMANAKA

Slide 2

Slide 2 text

自己紹介

Slide 3

Slide 3 text

山中勇成 @toriimiyukki 株式会社サイバーエージェント 2017年新卒 株式会社AbemaTV サーバサイドエンジニア 配信チーム (負荷対策チーム)

Slide 4

Slide 4 text

「中3で初めて生放送サービスを作った」AbemaTVで働く最年少エンジニアとは? IUUQTXXXXBOUFEMZDPNDPNQBOJFTBCFNBQPTU@BSUJDMFT

Slide 5

Slide 5 text

本日のアジェンダ ・MPEG-DASHの基礎 ・AbemaTVのリニア型配信 ・配信品質の管理

Slide 6

Slide 6 text

AbemaTVの動画配信を支えるサーバーサイドシステム IUUQTXXXTMJEFTIBSFOFUZVJDIJSPOBLB[BXBBCFNBUW インターネットにおける動画配信の仕組み IUUQTXXXTMJEFTIBSFOFU3ZPTVLF,VCPTT

Slide 7

Slide 7 text

1周年を迎えたAbemaTVの動画配信の裏側 IUUQTTQFBLFSEFDLDPNNJZVLLJUIFCBDLHSPVOEPGWJEFPEJTUSJCVUJPOJOBCFNBUWEVSJOHPOFZFBS

Slide 8

Slide 8 text

MPEG-DASHの基礎

Slide 9

Slide 9 text

HLSとは Appleが提唱した、HTTPでストリーミングを行う規格 →当初、ライブストリーミングはRTMPや独自の規格で行うことが主流で あり、HLSの登場により実装するプレーヤーが増え、サポートするサービスも 増えた メディアに関する情報は、m3u8のプレイリストに記述する マスタープレイリスト →ビットレート別、冗長構成のメディアプレイリストのパスを記述する メディアプレイリスト →実際のメディアに関する情報やパスを記述する

Slide 10

Slide 10 text

MPEG-DASHとは 国際標準化機関ISO/IECが規格化した、HTTPでストリーミン グを行う規格 →AppleのHLSやMicrosoftのSS、AdobeのHDSなど規格に互換性 がなく、統一するために作られた Dynamic Adaptive Streaming over HTTP ABR, マルチストリーム, 字幕(CC), ライブ, ダイナミック広告, DRMなどの多くの機能が仕様として定められている →しかし、すべてをサポートするプレーヤーは存在しない…

Slide 11

Slide 11 text

MPDとは MPEG-DASHで定義されているメディアに関する情報を記述す るXMLファイル →言い換えればMPEG-DASHは、このMPDの仕様を定めたもの ここからは、実際のAbemaTVで配信しているMPEG-DASHの MPDファイルを参考に要素別に解説 Media Presentation Description

Slide 12

Slide 12 text

MPD解説 - MPDの一番ルートとなる要素 マニフェストのタイプ(dynamic | static) プレーヤーがバッファすべき最小値 プレーヤーがマニフェストを更新すべき最小値 マニフェストのプロファイル(後述) →MPDには必ず必要

Slide 13

Slide 13 text

MPEG-DASHのプロファイル 'VMM1SPpMF .1&( 54 NBJO .1&(54 TJNQMF *40#BTF NFEJBpMF GPSNBU0O %FNBOE *40#BTFNFEJBpMFNBJO *40#BTF NFEJBpMF GPSNBU -JWF *40#.'' .1 *40#.''0O%FNBOE *40#.''-JWF

Slide 14

Slide 14 text

プロファイルがなぜ必要か MPEG-DASHでは、メディアファイルとしてTSやMP4、ライブス トリーミング、サラウンドなど様々な仕様がある プロファイルでは、対応しているメディア形式などを決めていて、 プレイヤーはプロファイルを元に実装することで、プレイヤーがサポー トする機能を限定することができる →しかし、機能が多すぎるため対応しきれない

Slide 15

Slide 15 text

MPD解説 - コンテンツの区切りの単位 このIDによりプレーヤーが現在再生するコンテンツを識別する →複数書くことにより解像度や字幕の種類が異なるコンテンツを順番に 再生することができる ຊฤ1FSJPE $.1FSJPE ຊฤ1FSJPE ࣍ʹ࠶ੜ ࣍ʹ࠶ੜ

Slide 16

Slide 16 text

MPD解説 - メディアの種類を記述する →プレーヤーはコンテンツの音声や映像、字幕などを選択する AdaptationSetのMIME(映像なのか、音声なのか、字幕なのか) 複数のRepresentation(ビットレート)が定義しているとき、 セグメント同士が連続しているか →言語別の音声や字幕などを選択することも可能

Slide 17

Slide 17 text

MPD解説 - セグメントのパスやテンプレートを記述する →SegmentBase, SegmentTemplate, SegmentListなどいくつか の記述方法がある timeやdurationなどのタイムスケール セグメントのテンプレートパス セグメントのタイムライン ˞EVSBUJPOͷܭࢉ

Slide 18

Slide 18 text

MPD解説 - セグメントの形式を記述する このIDをテンプレートの値として使用する 帯域 コーデック →端末は自分の環境(通信環境やサポートコーデック)により、適切な Representationを選択する

Slide 19

Slide 19 text

MPDの構造 1FSJPE "EBQUBUJPO4FU 4FHNFOU5FNQMBUF .1% 3FQSFTFOUBUJPO 4FHNFOU5JNFMJOF 3FQSFTFOUBUJPO "EBQUBUJPO4FU 1FSJPE ộ ộ 番組本編のPeriod 映像のAdaptationSet セグメントテンプレート セグメントのタイムライン ビットレート、解像度別の情報(1080p) ビットレート、解像度別の情報(720p) 音声のAdaptationSet CMのPeriod

Slide 20

Slide 20 text

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)

Slide 21

Slide 21 text

M4Sとは フラグメント(セグメント)化されたMP4ファイルのこと (ここではfMP4と呼ぶ) →MPEG-DASHのISOBMFFでは、MP4をメディアファイルとする必要が ある fMP4は通常のMP4とは異なり、メディアの基本情報が記述さ れた、Initialization SegmentとMedia Segmentの2種類 がある

Slide 22

Slide 22 text

TSの構造 UT 1"5 1.5 7JEFP%BUB "VEJP%BUB 7JEFP%BUB "VEJP%BUB 7JEFP%BUB "VEJP%BUB CZUF۠੾Γ ʜ

Slide 23

Slide 23 text

MP4とfMP4の構造 .1 NFEJBNQ NPPW NWIE USBL GUZQ NEBU 7JEFP%BUB G.1 JOJUNT NT NPPG NEBU 7JEFP%BUB NGIE USBG NPPW NWIE USBL GUZQ

Slide 24

Slide 24 text

HLSとMPEG-DASHのファイル取得 )-4 .1&(%"4) NV .BTUFS1MBZMJTU .FEJB1MBZMJTU NV UT 4FHNFOU UT 4FHNFOU .FEJB1MBZMJTU NV UT 4FHNFOU NQE .BOJGFTU .BOJGFTU NQE NT 4FHNFOU 4FHNFOU NT 4FHNFOU 4FHNFOU NT 4FHNFOU 4FHNFOU *OJUJBM4FHNFOU NT 7JEFP "VEJP *OJUJBM4FHNFOU

Slide 25

Slide 25 text

まとめ

Slide 26

Slide 26 text

MPEG-DASHとHLSの違い )-4 .1&(%"4) ن֨ "QQMF *40ࠃࡍඪ४ن֨ ָ ࣮૷ ΊΜͲ͍͘͞ গͳ͍ ػೳ ଟ͍

Slide 27

Slide 27 text

AbemaTVのリニア型配信

Slide 28

Slide 28 text

リニア型配信とは… 24時間365日、予め編成された番組表に従って行う配信

Slide 29

Slide 29 text

AbemaTVのリニア型配信 番組表に従って収録済みの映像、生放送、CM、フィラーなど あらゆるコンテンツを配信 ഑৴γεςϜ Ϣʔβʔ ऩ࿥ө૾ ੜ์ૹ $. ϑΟϥʔ ※フィラー 番組表に放送枠がないときや、 生放送の映像が取得できない時に流れる代替映像

Slide 30

Slide 30 text

収録映像のリニア型配信 映像 ソース Transcoder Storage Streaming Server CDN Client ഑৴γεςϜ Ϣʔβʔ τϥϯείʔυγεςϜ

Slide 31

Slide 31 text

生放送のリニア型配信 映像 ソース Wirecast Wowza Collector Storage Streaming Server CDN Client ഑৴γεςϜ Ϣʔβʔ ੍࡞ݱ৔

Slide 32

Slide 32 text

MPEG-DASH対応

Slide 33

Slide 33 text

MPEG-DASH対応 DRM技術に対応したコンテンツの配信を行う必要があった →AbemaTVでは、通常の配信でも暗号化されているが、CP(コンテン ツプロバイダー)によっては、認められているDRM技術への対応が必要 →DRMはデバイスごとの対応が異なり、DRMによって必要な配信形式も 異なる

Slide 34

Slide 34 text

DRMと配信方式の対応 .JDSPTPGU 1MBZ3FBEZ "QQMF 'BJS1MBZ (PPHMF 8JEFWJOF )-4 .1&(%"4) ˚ ˓ ΄΅ ✕ ˓ ˓ ˓ AbemaTVではこの4方式に対応

Slide 35

Slide 35 text

τϥϯείʔυγεςϜ 収録映像のリニア型配信 映像 ソース Transcoder Storage Streaming Server CDN Client ഑৴γεςϜ Ϣʔβʔ .1%Λੜ੒ UTΛੜ੒ G.1Λੜ੒

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

生放送のリニア型配信 映像 ソース Wirecast Wowza Collector Storage Streaming Server CDN Client ഑৴γεςϜ Ϣʔβʔ ੍࡞ݱ৔ G.1Λੜ੒ .1%Λੜ੒ UTΛੜ੒

Slide 38

Slide 38 text

生放送で fMP4を 生成する 予め区切られたTSファイルをMP4に変換し、Initial Segment とMedia Segmentに分ける UT NQ JOJUNT NFEJBNT ࣌ؒ৘ใ →生配信ではいつCMを挿入するかがわからないため、毎セグメントごとに Initial Segmentを生成している →放送枠の時間が動的に変化するため、fMP4の時刻情報をあとから 書き換える

Slide 39

Slide 39 text

まとめ 生放送の番組では、リアルタイムにTSからfMP4へのトランスコー ドをしてMPDを生成している また、MPEG-DASHのMulti-Periodの構成で本編コンテンツ やCMを区切っている 収録映像の番組では、予め生成したfMP4とセグメント情報か ら動的にMPDを生成している

Slide 40

Slide 40 text

配信品質の管理

Slide 41

Slide 41 text

配信品質 AbemaTVでは、テレビ品質の配信を目指している

Slide 42

Slide 42 text

トラブルが起こる箇所 本来放送されるべきコンテンツが配信されないトラブルは、 様々な要因で発生する ΦϖϨʔγϣϯϛε ΦϖϨʔγϣϯϛε 映像 ソース Wirecast Wowza Collector Storage Streaming Server CDN Client ഑৴γεςϜ Ϣʔβʔ ੍࡞ݱ৔ ΦϖϨʔγϣϯϛε ճઢτϥϒϧ ΦϖϨʔγϣϯϛε Πϯϑϥτϥϒϧ ΦϖϨʔγϣ όά

Slide 43

Slide 43 text

配信品質の監視 制作現場では、マスタールームとよばれる所で、送出する生放送 の映像を常に監視している AbemaTVは他の配信サービスに比べ、映像ソースの種類が複 数あり、複数のチャンネルを24時間配信している → しかし、エンジニアが張り付いて監視するには限界がある

Slide 44

Slide 44 text

監視ツール →ライブストリーミングを監視できる製品でも、AbemaTVの多チャンネル、 24時間の配信をサポートしている製品はなく、AbemaTV独自の規格に 対応できてない 作るしか無い…! 映像の品質をチェックするアプライアンスはいくつかあるが、映像 業界で利用されているケースが多く、インターネットのライブストリー ミングの監視をする製品はまだ少ない →HTTPのステータスコードの監視は入れているが、ストリーミングとしての 監視には役立たない

Slide 45

Slide 45 text

監視ツール AbemaTVの全チャンネルのHLSプレイリスト、MPEG-DASHの マニフェストを取得し、時間通りに進んでいるか、セグメントの順 序が正しいかをチェックする セグメントファイルを取得しメタデータやビットレートをチェックする 配信システムが正常に動作しているかを外形から監視することが 可能に

Slide 46

Slide 46 text

PR

Slide 47

Slide 47 text

AbemaTV開発局の構成 QA エンジニア E2Eテスト, 映像の品質基準など Android, iOS, Web, サーバサイド, インフラなど ディレクター 開発のディレクションなど デザイナー アプリケーションのデザイン, ロゴデザインなど

Slide 48

Slide 48 text

AbemaTVエンジニアの構成 Web サーバサイド フロント, 管理画面, Chromecastなど コア, API, 配信など Android Android, Fire TVなど iOS iOS, tvOSなど インフラ GCP, チューニング, 負荷試験など

Slide 49

Slide 49 text

We’re hiring! https://recruit.abematv.co.jp https://www.wantedly.com/companies/abema