Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マルチデバイスx大規模xライブで快適な視聴体験を提供する再生品質制御 / Playback Quality Control in Multi-device and Large-scale Live Video Streaming

マルチデバイスx大規模xライブで快適な視聴体験を提供する再生品質制御 / Playback Quality Control in Multi-device and Large-scale Live Video Streaming

FIFA ワールドカップ カタール 2022 では、ABEMA でこれまで未踏であった規模のトラフィック、高い映像品質、厳しいセキュリティ条件での配信など多くの挑戦がありました。その挑戦は闇雲に実施したわけではなく、再生品質指標をデータとして慎重に制御することとセットです。このセッションでは、日本中を熱狂させた大規模ライブイベントでの数々の挑戦を支えた ABEMA の再生品質制御技術についてお話します。

https://developer.abema.io/2023/sessions/qjZbGXFDkR/?utm_medium=social&utm_source=speakerdeck

CyberAgent

April 19, 2023
Tweet

More Decks by CyberAgent

Other Decks in Technology

Transcript

  1. 五藤 佑典 YUSUKE GOTO https://ygoto3.com/ @ygoto3_ • California State University,

    San Bernardino グラフィックデザイン専攻 Career History 1. Graphic / Web Designer 2. Marketer 3. Web Engineer 4. Video Engineer 5. Product Manager • CyberAgent Developer Expert @(株)サイバーエージェント • テクニカルプロダクトマネージャー @(株)AbemaTV CTV 事業部
  2. 未踏領域の再生品質に向き合う 動画再生にはサーバー側で検知できない不具合リスクが多い • 正常なレスポンスだが再生に失敗 • 特定のバージョンでのみ発生 • 特定の環境でのみ発生 • 特定のデバイスでのみ発生

    • サーバーがリクエストを受け取る前にクラッシュ • 出力マニフェストの変更によりリバッファリングの頻度増加 • エンコーディングパラメータの変更によりデコード失敗 • コンテンツ特性である区間だけ高ビットレート
  3. 未踏領域の再生品質に向き合う 動画再生にはサーバー側で検知できない不具合リスクが多い • 正常なレスポンスだが再生に失敗 • 特定のバージョンでのみ発生 • 特定の環境でのみ発生 • 特定のデバイスでのみ発生

    • サーバーがリクエストを受け取る前にクラッシュ • 出力マニフェストの変更によりリバッファリングの頻度増加 • エンコーディングパラメータの変更によりデコード失敗 • コンテンツ特性である区間だけ高ビットレート ABEMA の動画は本当に私たちの期待通りユーザーに視聴されているのか?
  4. 未踏領域の再生品質に向き合う 動画再生にはサーバー側で検知できない不具合リスクが多い • 正常なレスポンスだが再生に失敗 • 特定のバージョンでのみ発生 • 特定の環境でのみ発生 • 特定のデバイスでのみ発生

    • サーバーがリクエストを受け取る前にクラッシュ • 出力マニフェストの変更によりリバッファリングの頻度増加 • エンコーディングパラメータの変更によりデコード失敗 • コンテンツ特性である区間だけ高ビットレート ABEMA の動画は本当に私たちの期待通りユーザーに視聴されているのか? ユーザーの環境でしか確認できない
  5. 未踏領域の再生品質に向き合う どんな指標で再生品質を評価するか? 致命的な再生障害発生率を計測する指標 • Startup failure % = 再生を指示してから再生開始前に失敗した %

    • In-Stream failure % = 再生開始後、再生終了前に失敗した % 再生の快適さを計測する指標 • Join time = 再生を指示してから最初のフレーム表示までの時間 • Buffering ratio = 視聴時間全体に対するバッファリング時間の割合 • Buffering event % = 再生中でのバッファリングの頻度 • Average bitrate = 再生中の平均ビットレート
  6. 配信ストリームのバリエーション設計 ABEMA 従来のストリーミングプロトコル設計方針 HLS を使用するプラットフォーム • iOS app • tvOS

    app • Android mobile app • Android TV app • Nintendo Switch app • Web app on Safari (Desktop) • Web app on Safari (Mobile) • Web app on Chrome (Android mobile) • Google Cast receiver app MPEG-DASH を使用するプラットフォーム • HTML5-based TV app • Web app on Edge • Web app on Chrome (Desktop) 必要な理由がない限り HLS を使用
  7. 配信ストリームのバリエーション設計 HLS を使用するプラットフォーム • iOS app • tvOS app •

    Android mobile app • Android TV app • Nintendo Switch app • Web app on Safari (Desktop) • Web app on Safari (Mobile) • Web app on Chrome (Android mobile) • Google Cast receiver app MPEG-DASH を使用するプラットフォーム • HTML5-based TV app • Web app on Edge • Web app on Chrome (Desktop) ・HTML Living Standard 技術で DRM を使う場合は  EME(Encrypted Media Extensions)と  Common Encryption の利用が安全 ・MPEG-DASH はエコシステムに優位性あり ABEMA 従来のストリーミングプロトコル設計方針 必要な理由がない限り HLS を使用
  8. 配信ストリームのバリエーション設計 新配信ストリーム設計では可能な限り MPEG-DASH を使用 HLS • iOS app • tvOS

    app • Nintendo Switch app • Web app on Safari (Desktop) • Web app on Safari (Mobile) MPEG-DASH • HTML5-based TV app • Web app on Edge • Web app on Chrome (Desktop) • Android mobile app • Android TV app • Web app on Chrome (Android mobile) • Google Cast receiver app 柔軟なマニフェスト表現と強度なセキュリティを獲得
  9. 配信ストリームのバリエーション設計 HLS • iOS app • tvOS app • Nintendo

    Switch app • Web app on Safari (Desktop) • Web app on Safari (Mobile) MPEG-DASH • HTML5-based TV app • Web app on Edge • Web app on Chrome (Desktop) • Android mobile app • Android TV app • Web app on Chrome (Android mobile) • Google Cast receiver app ・Apple 社のプラットフォームは  同社開発のプロトコルに圧倒的メリット ・ゲームコンソールは動画エコシステムに課題 新配信ストリーム設計では可能な限り MPEG-DASH を使用 柔軟なマニフェスト表現と強度なセキュリティを獲得
  10. 配信ストリームのバリエーション設計 新配信ストリーム設計では可能な限り MPEG-DASH を使用 柔軟なマニフェスト表現と強度なセキュリティを獲得 HLS • iOS app •

    tvOS app • Nintendo Switch app • Web app on Safari (Desktop) • Web app on Safari (Mobile) ・Apple 社のプラットフォームは  同社開発のプロトコルに圧倒的メリット ・ゲームコンソールは動画エコシステムに課題 MPEG-DASH • HTML5-based TV app • Web app on Edge • Web app on Chrome (Desktop) • Android mobile app • Android TV app • Web app on Chrome (Android mobile) • Google Cast receiver app
  11. 配信ストリームのバリエーション設計 セキュリティ:新配信ストリーム設計でのコンテンツ保護 DRM - Digital Rights Management Custom DRM プラットフォームで標準的に利用可能な一番強度が高い保護

    Apple FairPlay Streaming • iOS app • tvOS app • Web app on Safari (Desktop) • Web app on Safari (Mobile) Google Widevine • HTML5-based TV app • Web app on Edge • Web app on Chrome (Desktop) • Android mobile app • Android TV app • Web app on Chrome (Android mobile) • Google Cast receiver app HLS AES-128 拡張 独自保護技術 • Nintendo Switch app
  12. 再生クライアントと映像品質構成の組み合わせを設計する 『FIFA ワールドカップ カタール 2022』の映像品質構成 コンテンツ最適化品質構成 a.k.a. Striker カバレッジ優先品質構成 a.k.a.

    Defender FPS 59.94 29.97 Rate Control Mode V:QVBR/A:VBR V/A:CBR Profile/Level [email protected]/以下Main/4.2 Main/4固定 1080p V:QVBR Max12M(Buf:24M) A:VBR 256k Stereo V:CBR 8M(Buf:自動) A:128k Stereo 720p V:QVBR Max8M(Buf:16M) A:VBR 256k Stereo V:;CBR 4M(Buf:自動) A:128k Stereo 480p V:QVBR Max4M(Buf:8M) A:VBR 256k Stereo V:CBR 2M(Buf:自動) A:128k Stereo 360p V:QVBR Maxim (Buf:4M) A:VBR 256k Stereo V:CBR 1M(Buf:自動) A:128k Stereo 240p V:CBR 0.5M(Buf:自動) A:128k Stereo V:CBR 0.5M(Buf:自動) A:128k Stereo
  13. 再生クライアントと映像品質構成の組み合わせを設計する デコード性能によって再生する映像品質構成をマッピングする • iOS / tvOS のメディア処理性能は純粋に高い ◦ 基本的に全てのデバイスで Striker

    を再生する • Android はデバイスによってデコード性能の差異が大きい ◦ MediaCodecInfo.VideoCapabilities の情報を必要条件に 再生エージングテストを通過したものを Striker 許可リストに追加 • Web Living Standard 仕様準拠のプラットフォームはデコード性能を 確認する手段が限られる ◦ Media Capabilities API 等でも適切に判定できる基準値を得ることは難しいため Defender にマッピング
  14. 再生クライアントと映像品質構成の組み合わせを設計する 最終的な配信ストリームのバリエーション HLS Striker FairPlay Streaming HLS Defender FairPlay Streaming

    HLS Defender Custom DRM (upto SD) MPEG-DASH Striker Widevine MPEG-DASH Defender Widevine iOS app Supports Supports - - - tvOS app Supports Supports - - - Android mobile app - - - Supports (Partially) Supports Android TV / Fire TV app - - - Supports (Partially) Supports Web desktop app on Chrome / Edge - - - - Supports Web desktop app on Safari - - - - Supports Web mobile app on Chrome - - - - Supports Web mobile app on Safari - - - - Supports Nintendo Switch app - - Supports - - Google Cast receiver app - - - - Supports
  15. 大規模トラフィックを支える再生クライアントを設計する NPAW CDN Balancer ソリューション • 検証の末、目をつけていた Active Switching 自体は採用見送り

    • しかし、NPAW Video Analytics の大量の再生品質データを利用した バランシングに大きな強み ◦ Video Analytics 上の各 CDN に紐づいた再生品質データを CDN のヘルスチェックに使用可能
  16. 大規模トラフィックを支える再生クライアントを設計する NPAW CDN Balancer ソリューション • 検証の末、目をつけていた Active Switching 自体は採用見送り

    • しかし、NPAW Video Analytics の大量の再生品質データを利用した バランシングに大きな強み ◦ Video Analytics 上の各 CDN に紐づいた再生品質データを CDN のヘルスチェックに使用可能 NPAW CDN Balancer ソリューションのうち CDN Selector のみ採用
  17. 大規模トラフィックを支える再生クライアントを設計する マルチ CDN のバランシング機能 • 重み付きラウンドロビン ◦ CDN ごとの帯域状態、価格帯などに合わせた制御 •

    視聴形態によって異なるルールの適用 ◦ ライブ再生 ◦ 追っかけ再生 ◦ オンデマンド再生 • アングルによって異なるルールの適用 ◦ メインアングルとサブアングルでは求められる冗長性や品質観点が異なる
  18. 大規模トラフィックを支える再生クライアントを設計する マルチリージョンのバランシング機能 • 選択的順番でリージョンを切り替える CDN Group A CDN A1 CDN

    A2 CDN Group B CDN B1 CDN B2 Failure Failure Failure Failure ある CDN で再生が失敗した場合、 CDN に起因した障害かリージョンに起因した障害か判定する術がない → 次に選択する経路は別リージョンに繋げている同一 CDN を選択する
  19. 大規模トラフィックを支える再生クライアントを設計する 独自バランサーモジュール w/ NPAW CDN Selector の開発 • マルチ CDN

    のバランシング機能 • マルチリージョンのバランシング機能 • CDN/オリジン/リージョン障害による切替バースト緩和機能
  20. 大規模トラフィックを支える再生クライアントを設計する CDN/オリジン/リージョン障害による切替バースト緩和機能 想定される切替バースト • 一方の CDN に障害が発生した場合に、再生クライアントが 一斉に他方の CDN にリクエストを開始する

    • 一方のリージョンのメディアオリジン(AWS Elemental MediaLive) もしくはリージョンそのものに障害が発生した場合に、 再生クライアントが一斉に他方のリージョンにリクエストを開始する
  21. 大規模トラフィックを支える再生クライアントを設計する 最終的な配信ストリームのバリエーション HLS Striker FairPlay Streaming HLS Defender FairPlay Streaming

    HLS Defender Custom DRM (upto SD) MPEG-DASH Striker Widevine MPEG-DASH Defender Widevine iOS app Supports Supports - - - tvOS app Supports Supports - - - Android mobile app - - - Supports (Partially) Supports Android TV / Fire TV app - - - Supports (Partially) Supports Web desktop app on Chrome / Edge - - - - Supports Web desktop app on Safari - - - - Supports Web mobile app on Chrome - - - - Supports Web mobile app on Safari - - - - Supports Nintendo Switch app - - Supports - - Google Cast receiver app - - - - Supports 再掲
  22. 最終的な配信ストリームのバリエーション HLS Striker FairPlay Streaming HLS Defender FairPlay Streaming HLS

    Defender Custom DRM (upto SD) MPEG-DASH Striker Widevine MPEG-DASH Defender Widevine iOS app Supports Supports - - - tvOS app Supports Supports - - - Android mobile app - - - Supports (Partially) Supports Android TV / Fire TV app - - - Supports (Partially) Supports Web desktop app on Chrome / Edge - - - - Supports Web desktop app on Safari - - - - Supports Web mobile app on Chrome - - - - Supports Web mobile app on Safari - - - - Supports Nintendo Switch app - - Supports - - Google Cast receiver app - - - - Supports x4 の配信経路 大規模トラフィックを支える再生クライアントを設計する
  23. 大規模トラフィックを支える再生クライアントを設計する 解像度制御機構の図 Playback module Feature Toggle System Feature Toggle SDK

    Bucketeer: 再生クライアントに取得させる最大解像度を設定 Bucketeer SDK: 再生クライアントに組み込み、 指定された最大解像度までの動画ストリームを再生。 最大 10 分で反映する設定
  24. 大規模トラフィックを支える再生クライアントを設計する 3 種類のコンテンツ再生認可ライセンス • Apple FairPlay Streaming (DRM) • Google

    Widevine (DRM) • ABEMA original custom DRM 各々のライセンスサーバーの キャパシティ・プランに合わせた 制御が必要
  25. 3 種類のコンテンツ再生認可ライセンス • Apple FairPlay Streaming (DRM) • Google Widevine

    (DRM) • ABEMA original custom DRM 大規模トラフィックを支える再生クライアントを設計する 『FIFA ワールドカップ カタール 2022』 本番開始後の戦いに続く 各々のライセンスサーバーの キャパシティ・プランに合わせた 制御が必要
  26. キックオフ:試合展開に合わせて戦術を変える Google Widevine ライセンススパイク • Web app で使用していた THEOplayer のシームレスに

    Period を 切り替える機能を無効にしていたことで Period が切り替わるごとに ライセンスリクエスト発生 ◦ useSeamlessPeriodSwitch = 'never' ◦ 無効にしていた理由は弊社エンコードの広告間 Period 跨ぎで 発生していた不体裁な映像再生現象に対応するためのワークアラウンド
  27. キックオフ:試合展開に合わせて戦術を変える イベント期間開始時の動画プレイヤーライブラリ プラットフォーム 動画プレイヤーライブラリ Web app (Desktop / Mobile) THEOplayer

    HTML5-based TV app dash.js iOS / tvOS app AVPlayer Android app (Mobile / TV) ExoPlayer Nintendo Switch CRI VOD Player Google Cast receiver Cast Application Framework
  28. キックオフ:試合展開に合わせて戦術を変える イベント期間開始時の動画プレイヤーライブラリ プラットフォーム 動画プレイヤーライブラリ Web app (Desktop / Mobile) THEOplayer

    HTML5-based TV app dash.js iOS / tvOS app AVPlayer Android app (Mobile / TV) ExoPlayer Nintendo Switch CRI VOD Player Google Cast receiver Cast Application Framework HTML5-based TV で元々 dash.js を使用 シミュレーター代わりに Web ブラウザ上で 動作検証もできていたので Web app に短時間で適用
  29. キックオフ:試合展開に合わせて戦術を変える イベント期間開始時の動画プレイヤーライブラリ プラットフォーム 動画プレイヤーライブラリ Web app (Desktop / Mobile) THEOplayer

    HTML5-based TV app dash.js iOS / tvOS app AVPlayer Android app (Mobile / TV) ExoPlayer Nintendo Switch CRI VOD Player Google Cast receiver Cast Application Framework THEOplayer は 2 種類の DRM キーシステムを 同一再生セッション内で扱うことができる ※ <video /> 要素を差し替えて EME の限界を回避 今回はこの柔軟性をトレードオフにリプレイス
  30. キックオフ:試合展開に合わせて戦術を変える Web app と HTML5-based TV app の ABR (Adaptive

    Bitrate) が あるタイミングから意図通りの挙動をしていないことを検知 解像度ごとの視聴数積上グラフ 解像度ごとの視聴数積上グラフ
  31. キックオフ:試合展開に合わせて戦術を変える Web app と HTML5-based TV app で使用している dash.js の解像度制御が意図通りに動作していないことが想定される

    プラットフォーム 動画プレイヤーライブラリ Web app (Desktop / Mobile) dash.js HTML5-based TV app dash.js iOS / tvOS app AVPlayer Android app (Mobile / TV) ExoPlayer Nintendo Switch CRI VOD Player Google Cast receiver Cast Application Framework
  32. キックオフ:試合展開に合わせて戦術を変える dash.js では registerCustomCapabilitiesFilter を利用し 解像度制御を行っていた registerCustomCapabilitiesFilter はインメモリのマニフェスト情報から フィルター対象を除去する インメモリのマニフェスト情報から制御対象の

    Representation がない状態で 抑制した低い解像度から解放した高い解像度に戻す制御に失敗していた max bitrate 制御による処理に変更 • 制御対象を解像度指定する機構のため、bitrate/height の組み合わせを インメモリのマニフェストとは別途保持 • 1 つの解像度に対して複数の bitrate ターゲットのエンコードを 持たない構成だったことが幸いした
  33. キックオフ:試合展開に合わせて戦術を変える 状況 • NPAW CDN Selector は NPAW Video Analytics

    で記録した 再生品質指標のデータからを CDN のヘルスチェックしている • NPAW Video Analytics 再生品質指標データから CTV デバイスが試合途 中や試合終了時にそのままの画面で電源オフされ、 次の起動時に再生エラーから開始していることを確認 • NPAW CDN Selector はその再生エラー率の上昇を確認し、 CDN の選択比率を調整
  34. キックオフ:試合展開に合わせて戦術を変える 状況 • NPAW CDN Selector は NPAW Video Analytics

    で記録した再生品質指標 のデータからを CDN のヘルスチェックしている • NPAW Video Analytics 再生品質指標データから CTV デバイスが試合途 中や試合終了時にそのままの画面で電源オフされ、次の起動時に再生エ ラーから開始していることを確認 • NPAW CDN Selector はその再生エラー率の上昇を確認し、CDN の選択 比率を調整 NPAW CDN Selector の再生品質指標に最適化した CDN 選択機能をオフ 独自 CDN バランシングモジュールが 各 CDN の再生状態を基準に選択を調整する戦術に変更
  35. キックオフ:試合展開に合わせて戦術を変える Chromecast の再生セッション数の急激な変化を検知 SSAI するメディアサーバーが 取得した広告情報(VAST)に 不備を発見 <Creatives> <Creative id="45088"

    sequence="1"> <Linear> <Duration>00:00:15</Duration> <MediaFiles> <MediaFile delivery="streaming" type="application/dash+xml" bitrate="4000" width="1280" height="720"><..></MediaFile> <MediaFile delivery="streaming" type="application/dash+xml" bitrate="2000" width="1280" height="720"><..></MediaFile> <MediaFile delivery="streaming" type="application/dash+xml" bitrate="1200" width="854" height="480"><..></MediaFile> .. 情報を元に生成したマニフェストを Cast Application Framework は 不当なものと判定し離脱
  36. キックオフ:試合展開に合わせて戦術を変える <Creatives> <Creative id="45088" sequence="1"> <Linear> <Duration>00:00:15</Duration> <MediaFiles> <MediaFile delivery="streaming"

    type="application/dash+xml" bitrate="4000" width="1280" height="720"><..></MediaFile> <MediaFile delivery="streaming" type="application/dash+xml" bitrate="2000" width="1280" height="720"><..></MediaFile> <MediaFile delivery="streaming" type="application/dash+xml" bitrate="1200" width="854" height="480"><..></MediaFile> .. 修正し、即反映 Chromecast の再生セッション数の急激な変化を検知 SSAI するメディアサーバーが 取得した広告情報(VAST)に 不備を発見 情報を元に生成したマニフェストを Cast Application Framework は 不当なものと判定し離脱
  37. キックオフ:試合展開に合わせて戦術を変える Fire TV Stick 4K Max の In-Stream Error %

    が顕著に高いことを検知 Fire TV Stick 4K Max は ハイスペックモデルなので、 他モデルと比較してエラー率が 高いことに違和感
  38. キックオフ:試合展開に合わせて戦術を変える Fire TV Stick 4K Max の In-Stream Error %

    が顕著に高いことを検知 再生状態でディスプレイを切ると、 Fire TV Stick 4K Max では マニフェスト内のセグメント位置が徐々に減少し、最終的に負の値となる Fire TV Stick 4K Max ではディスプレイが切られた場合に再生速度が遅くなる
  39. キックオフ:試合展開に合わせて戦術を変える Fire TV Stick 4K Max の In-Stream Error %

    が顕著に高いことを検知 同一ユーザーが一定間隔で BehindLiveWindowException の In-Stream Error を記録して 再生セッションの終了を確認 Fire OS はディスプレイ電源の ON/OFF を ACTION_HDMI_AUDIO_PLUG イベントで 判定し対処できるが、 再生速度が遅くなる挙動の原因は不明のまま
  40. FIFA ワールドカップ カタール 2022 を経た次の再生品質制御を考える ABEMA では未踏規模だったイベントを経て • 従来は提供することができなかった高品質の映像を 届けることができるようになった

    • 新しい動画システムの挑戦において可視化された再生品質指標は 進んでいる方向が正しいか判断する材料 同時に、現状の再生品質制御が 人によるリアルタイム監視に助けられている部分の広さを確認できた
  41. FIFA ワールドカップ カタール 2022 を経た次の再生品質制御を考える 現時点の再生品質制御システムに足りないもの • 特定 ISP や地域条件などに絞った品質監視

    • 不体裁な不具合の Video Quality MOS (Mean Opinion Score) のような主観品 質指標シミュレーションによる自動検知
  42. FIFA ワールドカップ カタール 2022 を経た次の再生品質制御を考える 現時点の再生品質制御システムに足りないもの • 特定 ISP や地域条件などに絞った品質監視

    • 不体裁な不具合の Video Quality MOS (Mean Opinion Score) のような主観品 質指標シミュレーションによる自動検知 現在 ABEMA で開発中の合成監視システムの精度を上げることで 次の再生品質制御レベルに達成することを狙っている