Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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