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
PRO

April 19, 2023
Tweet

More Decks by CyberAgent

Other Decks in Technology

Transcript

  1. View Slide

  2. 五藤 佑典
    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 事業部

    View Slide

  3. in Video Technology and Product Design

    View Slide

  4. アジェンダ
    ● 未踏領域の再生品質に向き合う
    ● 再生クライアントに届ける配信バリエーションを設計する
    ● 再生クライアントと映像品質構成の組み合わせを設計する
    ● 大規模トラフィックを支える再生クライアントを設計する
    ● キックオフ:試合展開に合わせて戦術を変える
    ● FIFA ワールドカップ カタール 2022を経た次の再生品質を考える

    View Slide

  5. 未踏領域の再生品質に向き合う

    View Slide

  6. 未踏領域の再生品質に向き合う

    View Slide

  7. 未踏領域の再生品質に向き合う
    ABEMA では視聴品質を
    3 つの品質要素で管理する
    視聴品質 配信品質
    映像品質
    再生品質

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  11. 未踏領域の再生品質に向き合う
    RUM : Real User Measurement で再生品質指標を取得する
    https://npaw.com/
    w/

    View Slide

  12. 未踏領域の再生品質に向き合う
    どんな指標で再生品質を評価するか?
    致命的な再生障害発生率を計測する指標
    ● Startup failure % = 再生を指示してから再生開始前に失敗した %
    ● In-Stream failure % = 再生開始後、再生終了前に失敗した %
    再生の快適さを計測する指標
    ● Join time = 再生を指示してから最初のフレーム表示までの時間
    ● Buffering ratio = 視聴時間全体に対するバッファリング時間の割合
    ● Buffering event % = 再生中でのバッファリングの頻度
    ● Average bitrate = 再生中の平均ビットレート

    View Slide

  13. 未踏領域の再生品質に向き合う
    ABEMA の再生品質に対するこれまでの取り組みについては
    下記資料もご覧いただけます

    View Slide

  14. 未踏領域の再生品質に向き合う
    『FIFA ワールドカップ カタール 2022』は
    ABEMA にとって未踏の規模かつ未踏の品質を提供することが求められた
    記事引用元:https://times.abema.tv/fifaworldcup/articles/-/10053448

    View Slide

  15. 未踏領域の再生品質に向き合う
    未踏領域の視聴体験を提供するための再生品質を設計する
    ● 再生クライアントに届ける配信バリエーションを設計する
    ● 再生クライアントと映像品質構成の組み合わせを設計する
    ● 大規模トラフィックを支える再生クライアントを設計する

    View Slide

  16. 再生クライアントに届ける
    配信バリエーションを設計する

    View Slide

  17. 再生クライアントに届ける配信バリエーションを設計する
    未踏の視聴体験を作るために既存のライブ動画システムから離れ
    新しい動画配信システムを設計する

    View Slide

  18. 再生クライアントに届ける配信バリエーションを設計する
    今後の ABEMA のライブ動画配信システムの基礎となるシステムを作る
    ● ライブでも高い映像品質の動画ストリーム
    ● セキュアな配信/再生システム
    未踏の視聴体験を作るために既存のライブ動画システムから離れ
    新しい動画配信システムを設計する

    View Slide

  19. 再生クライアントに届ける配信バリエーションを設計する
    配信ストリームのバリエーションのポイント
    ● ストリーミングプロトコル
    ● コンテンツ保護形式
    ● 映像品質構成

    View Slide

  20. 配信ストリームのバリエーション設計
    ストリーミングプロトコル
    ● 現在 ABEMA で使用するストリーミングプロトコルは 2 種類
    ○ HTTP Live Streaming a.k.a. HLS
    ○ MPEG-DASH

    View Slide

  21. 配信ストリームのバリエーション設計
    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 を使用

    View Slide

  22. 配信ストリームのバリエーション設計
    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 を使用

    View Slide

  23. 配信ストリームのバリエーション設計
    新配信ストリーム設計では可能な限り 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
    柔軟なマニフェスト表現と強度なセキュリティを獲得

    View Slide

  24. 配信ストリームのバリエーション設計
    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 を使用
    柔軟なマニフェスト表現と強度なセキュリティを獲得

    View Slide

  25. 配信ストリームのバリエーション設計
    新配信ストリーム設計では可能な限り 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

    View Slide

  26. 配信ストリームのバリエーション設計
    セキュリティ:新配信ストリーム設計でのコンテンツ保護
    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

    View Slide

  27. 再生クライアントに届ける配信バリエーションを設計する
    配信ストリームのバリエーションのポイント
    ● ストリーミングプロトコル
    ● コンテンツ保護形式
    ● 映像品質構成

    View Slide

  28. 再生クライアントと映像品質構成の
    組み合わせを設計する

    View Slide

  29. 再生クライアントと映像品質構成の組み合わせを設計する
    配信ストリームのバリエーションのポイント
    ● ストリーミングプロトコル
    ● コンテンツ保護形式
    ● 映像品質構成

    View Slide

  30. 再生クライアントと映像品質構成の組み合わせを設計する
    視聴者に最高の映像品質を届ける

    View Slide

  31. 再生クライアントと映像品質構成の組み合わせを設計する
    視聴者に最高の映像品質を届ける
    再生クライアントはデバイスの性能を超えた映像の情報量を
    安定してデコードできない

    View Slide

  32. 再生クライアントと映像品質構成の組み合わせを設計する
    視聴者に最高の映像品質を届ける
    再生クライアントはデバイスの性能を超えた映像の情報量を
    安定してデコードできない
    デバイス性能の限界と映像品質構成を設計する

    View Slide

  33. 再生クライアントと映像品質構成の組み合わせを設計する
    トレードオフ
    1. エンターテインメントプラットフォームとして高品質映像の提供
    a. デコード性能が低いデバイスで再生処理が追いつかない
    2. 社会インフラとして網羅性が高いデバイスカバレッジの提供
    a. デコード性能が低いデバイスが問題なく再生できるように
    映像情報量を少なくする → 映像品質が低くなる

    View Slide

  34. 再生クライアントと映像品質構成の組み合わせを設計する
    トレードオフ
    1. エンターテインメントプラットフォームとして高品質映像の提供
    a. デコード性能が低いデバイスで再生処理が追いつかない
    2. 社会インフラとして網羅性が高いデバイスカバレッジの提供
    a. デコード性能が低いデバイスが問題なく再生できるように
    映像情報量を少なくする → 映像品質が低くなる
    デバイスカバレッジのための映像品質構成と高品質映像のための映像品質構成を
    両方用意する

    View Slide

  35. 再生クライアントと映像品質構成の組み合わせを設計する
    ● エンターテインメントプラットフォームとして高品質映像の提供
    ○ コンテンツ最適化品質構成 a.k.a. Striker
    ● 社会インフラとして網羅性が高いデバイスカバレッジの提供
    ○ カバレッジ優先品質構成 a.k.a. Defender

    View Slide

  36. 再生クライアントと映像品質構成の組み合わせを設計する
    『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

    View Slide

  37. 再生クライアントと映像品質構成の組み合わせを設計する
    デバイスごとのスペックと

    View Slide

  38. Striker Defender
    再生クライアントと映像品質構成の組み合わせを設計する
    デバイスごとのスペックとデコード性能のテスト結果を基準に
    デバイスと品質構成をマッピングする

    View Slide

  39. 再生クライアントと映像品質構成の組み合わせを設計する
    デコード性能によって再生する映像品質構成をマッピングする
    ● iOS / tvOS のメディア処理性能は純粋に高い
    ○ 基本的に全てのデバイスで Striker を再生する
    ● Android はデバイスによってデコード性能の差異が大きい
    ○ MediaCodecInfo.VideoCapabilities の情報を必要条件に
    再生エージングテストを通過したものを Striker 許可リストに追加
    ● Web Living Standard 仕様準拠のプラットフォームはデコード性能を
    確認する手段が限られる
    ○ Media Capabilities API 等でも適切に判定できる基準値を得ることは難しいため
    Defender にマッピング

    View Slide

  40. 再生クライアントと映像品質構成の組み合わせを設計する
    配信ストリームのバリエーションのポイント
    ● ストリーミングプロトコル
    ● コンテンツ保護形式
    ● 映像品質構成
    最終的な配信ストリームのバリエーション

    View Slide

  41. 再生クライアントと映像品質構成の組み合わせを設計する
    最終的な配信ストリームのバリエーション
    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

    View Slide

  42. 大規模トラフィックを支える
    再生クライアントを設計する

    View Slide

  43. 大規模トラフィックを支える再生クライアントを設計する
    『FIFA ワールドカップ カタール 2022』は世界最高峰のスポーツイベント

    View Slide

  44. 大規模トラフィックを支える再生クライアントを設計する
    『FIFA ワールドカップ カタール 2022』は世界最高峰のスポーツイベント
    ABEMA では未踏の大規模トラフィックが集中することが予想される

    View Slide

  45. 大規模トラフィックを支える再生クライアントを設計する
    『FIFA ワールドカップ カタール 2022』は世界最高峰のスポーツイベント
    ABEMA では未踏の大規模トラフィックが集中することが予想される
    大規模トラフィックを構成するのはメディアデータ

    View Slide

  46. 大規模トラフィックを支える再生クライアントを設計する
    『FIFA ワールドカップ カタール 2022』は世界最高峰のスポーツイベント
    ABEMA では未踏の大規模トラフィックが集中することが予想される
    大規模トラフィックを構成するのはメディアデータ
    再生クライアントが大量にリクエスト

    View Slide

  47. 大規模トラフィックを支える再生クライアントを設計する
    再生クライアントでトラフィック量を制御する
    ● CDN バランシング
    ● 解像度制御

    View Slide

  48. 大規模トラフィックを支える再生クライアントを設計する
    CDN バランシング
    ● 日本国内の通信経路を分散させる
    ● 再生クライアントで 2 種類の CDN に分散
    ○ Akamai
    ○ Amazon CloudFront

    View Slide

  49. 大規模トラフィックを支える再生クライアントを設計する
    CDN セレクターは NPAW のソリューションを使用
    https://npaw.com/solutions/multi-cdn-switching-for-video-streaming/

    View Slide

  50. 大規模トラフィックを支える再生クライアントを設計する
    NPAW CDN Balancer ソリューション
    ● 2022 NAB Show で目をつけた新ソリューションがキッカケで検討
    https://speakerdeck.com/ygoto3/nab-show-2022-report?slide=78

    View Slide

  51. 大規模トラフィックを支える再生クライアントを設計する
    NPAW CDN Balancer ソリューション
    ● 検証の末、目をつけていた Active Switching 自体は採用見送り

    View Slide

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

    View Slide

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

    View Slide

  54. 大規模トラフィックを支える再生クライアントを設計する
    CDN バランサーの機構でマルチリージョンも制御
    ● 今回のライブ配信システムは AWS Media Services ベース
    ● メディアオリジンはクラウド障害に備えて 2 リージョン用意
    ○ AWS Tokyo リージョン
    ○ AWS Seoul リージョン

    View Slide

  55. 大規模トラフィックを支える再生クライアントを設計する
    CDN/リージョンのバランシング機構の図
    Tokyo Origin
    Playback module
    Akamai
    CloudFront
    Seoul Origin

    View Slide

  56. 大規模トラフィックを支える再生クライアントを設計する
    CDN/リージョンのバランシング機構の図
    Tokyo Origin
    Playback module
    Akamai
    CloudFront
    Seoul Origin
    この機構を実現する再生クライアントを
    NPAW CDN Selector を利用して開発する

    View Slide

  57. 大規模トラフィックを支える再生クライアントを設計する
    独自バランサーモジュール w/ NPAW CDN Selector の開発

    View Slide

  58. 大規模トラフィックを支える再生クライアントを設計する
    独自バランサーモジュール w/ NPAW CDN Selector の開発
    ● マルチ CDN のバランシング機能

    View Slide

  59. 大規模トラフィックを支える再生クライアントを設計する
    マルチ CDN のバランシング機能
    ● 重み付きラウンドロビン
    ○ CDN ごとの帯域状態、価格帯などに合わせた制御
    ● 視聴形態によって異なるルールの適用
    ○ ライブ再生
    ○ 追っかけ再生
    ○ オンデマンド再生
    ● アングルによって異なるルールの適用
    ○ メインアングルとサブアングルでは求められる冗長性や品質観点が異なる

    View Slide

  60. 大規模トラフィックを支える再生クライアントを設計する
    独自バランサーモジュール w/ NPAW CDN Selector の開発
    ● マルチ CDN のバランシング機能
    ● マルチリージョンのバランシング機能

    View Slide

  61. 大規模トラフィックを支える再生クライアントを設計する
    マルチリージョンのバランシング機能
    ● 選択的順番でリージョンを切り替える
    CDN Group A
    CDN A1 CDN A2
    CDN Group B
    CDN B1 CDN B2
    Failure Failure Failure Failure
    ある CDN で再生が失敗した場合、
    CDN に起因した障害かリージョンに起因した障害か判定する術がない
    → 次に選択する経路は別リージョンに繋げている同一 CDN を選択する

    View Slide

  62. 大規模トラフィックを支える再生クライアントを設計する
    独自バランサーモジュール w/ NPAW CDN Selector の開発
    ● マルチ CDN のバランシング機能
    ● マルチリージョンのバランシング機能
    ● CDN/オリジン/リージョン障害による切替バースト緩和機能

    View Slide

  63. 大規模トラフィックを支える再生クライアントを設計する
    CDN/オリジン/リージョン障害による切替バースト緩和機能
    想定される切替バースト
    ● 一方の CDN に障害が発生した場合に、再生クライアントが
    一斉に他方の CDN にリクエストを開始する
    ● 一方のリージョンのメディアオリジン(AWS Elemental MediaLive)
    もしくはリージョンそのものに障害が発生した場合に、
    再生クライアントが一斉に他方のリージョンにリクエストを開始する

    View Slide

  64. 大規模トラフィックを支える再生クライアントを設計する
    CDN/リージョンのバランシング機構の図
    Tokyo Origin
    Playback module
    Seoul Origin
    NPAW
    CDN Selector
    Original
    Balancer module
    Akamai
    CloudFront
    Akamai
    CloudFront

    View Slide

  65. 大規模トラフィックを支える再生クライアントを設計する
    最終的な配信ストリームのバリエーション
    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
    再掲

    View Slide

  66. 最終的な配信ストリームのバリエーション
    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 の配信経路
    大規模トラフィックを支える再生クライアントを設計する

    View Slide

  67. 大規模トラフィックを支える再生クライアントを設計する
    解像度制御
    ● 任意のタイミングで再生クライアントが取得する解像度を制限
    ● 制限をコールしてから数分以内に反映

    View Slide

  68. 大規模トラフィックを支える再生クライアントを設計する
    解像度制御機構の図
    Playback module
    Feature Toggle
    System
    Feature Toggle
    SDK
    Bucketeer:
    再生クライアントに取得させる最大解像度を設定
    Bucketeer SDK:
    再生クライアントに組み込み、
    指定された最大解像度までの動画ストリームを再生。
    最大 10 分で反映する設定

    View Slide

  69. 大規模トラフィックを支える再生クライアントを設計する
    『FIFA ワールドカップ カタール 2022』は世界最高峰のスポーツイベント
    ABEMA では未踏の大規模トラフィックが集中することが予想される
    大規模トラフィックを構成するのはメディアデータ
    再掲

    View Slide

  70. 大規模トラフィックを支える再生クライアントを設計する
    トラフィック量は大きくないがケアが必要な再生クライアントからの通信

    View Slide

  71. 大規模トラフィックを支える再生クライアントを設計する
    トラフィック量は大きくないがケアが必要な再生クライアントからの通信
    キャッシュできない、瞬間的に集中する通信

    View Slide

  72. 大規模トラフィックを支える再生クライアントを設計する
    トラフィック量は大きくないがケアが必要な再生クライアントからの通信
    キャッシュできない、瞬間的に集中する通信
    コンテンツ再生認可処理のためのライセンスリクエスト

    View Slide

  73. 大規模トラフィックを支える再生クライアントを設計する
    3 種類のコンテンツ再生認可ライセンス
    ● Apple FairPlay Streaming (DRM)
    ● Google Widevine (DRM)
    ● ABEMA original custom DRM

    View Slide

  74. 大規模トラフィックを支える再生クライアントを設計する
    3 種類のコンテンツ再生認可ライセンス
    ● Apple FairPlay Streaming (DRM)
    ● Google Widevine (DRM)
    ● ABEMA original custom DRM
    各々のライセンスサーバーの
    キャパシティ・プランに合わせた
    制御が必要

    View Slide

  75. 3 種類のコンテンツ再生認可ライセンス
    ● Apple FairPlay Streaming (DRM)
    ● Google Widevine (DRM)
    ● ABEMA original custom DRM
    大規模トラフィックを支える再生クライアントを設計する
    『FIFA ワールドカップ カタール 2022』
    本番開始後の戦いに続く
    各々のライセンスサーバーの
    キャパシティ・プランに合わせた
    制御が必要

    View Slide

  76. キックオフ
    試合展開に合わせて戦術を変える

    View Slide

  77. キックオフ
    試合展開に合わせて戦術を変える
    そのままの意味でもあり、比喩でもある
    イベント期間中は我々開発者にとっても試合だった

    View Slide

  78. キックオフ:試合展開に合わせて戦術を変える
    試合開始前 CDN バランシングの設定プロファイルを調整

    View Slide

  79. キックオフ:試合展開に合わせて戦術を変える
    イベント期間の初期は実際のトラフィック傾向を確認
    試合開始前 CDN バランシングの設定プロファイルを調整

    View Slide

  80. キックオフ:試合展開に合わせて戦術を変える
    傾向が掴めたら試合ごとに適用プロファイルのパターンを増やす
    試合開始前 CDN バランシングの設定プロファイルを調整

    View Slide

  81. キックオフ:試合展開に合わせて戦術を変える
    試合中のリアルタイム監視
    試合ごとの再生品質指標を個別確認する
    リアルタイムダッシュボードを用意

    View Slide

  82. キックオフ:試合展開に合わせて戦術を変える
    試合中のリアルタイム監視
    同時間に 2 試合ある場合は
    2 つのダッシュボードを監視

    View Slide

  83. キックオフ:試合展開に合わせて戦術を変える
    試合中のリアルタイム監視
    一方の試合展開によって視聴者が
    他方へ流入するなど相互に影響する
    同時間に 2 試合ある場合は
    2 つのダッシュボードを監視

    View Slide

  84. キックオフ:試合展開に合わせて戦術を変える
    試合中のリアルタイム監視
    CDN /リージョンの分散状態を監視

    View Slide

  85. キックオフ:試合展開に合わせて戦術を変える
    試合中のリアルタイム監視
    CDN /リージョンの分散状態を監視
    意図した分散割合から
    一定量離れた場合は
    手動運用で割合調整

    View Slide

  86. キックオフ:試合展開に合わせて戦術を変える
    試合中のリアルタイム監視
    時間帯/対戦カードによって
    デバイス比率が大きく変動

    View Slide

  87. キックオフ:試合展開に合わせて戦術を変える
    試合中のリアルタイム監視
    時間帯/対戦カードによって
    デバイス比率が大きく変動
    割合を占めるデバイスの
    画面サイズがトラフィック量に影響

    View Slide

  88. キックオフ:試合展開に合わせて戦術を変える
    想定外の問題も発生する
    イベント期間中に監視で発見した問題に毎日対応

    View Slide

  89. キックオフ:試合展開に合わせて戦術を変える
    例:システム負荷に大きく影響する問題

    View Slide

  90. キックオフ:試合展開に合わせて戦術を変える
    最初の大きな山場は 11.23 日本対ドイツ戦
    ← は日本対ドイツ戦以前
    CM 明けごとに
    Google Widevine ライセンスの
    リクエストがスパイクする図

    View Slide

  91. キックオフ:試合展開に合わせて戦術を変える
    Google Widevine ライセンススパイク
    ● Web app で使用していた THEOplayer のシームレスに Period を
    切り替える機能を無効にしていたことで Period が切り替わるごとに
    ライセンスリクエスト発生
    ○ useSeamlessPeriodSwitch = 'never'
    ○ 無効にしていた理由は弊社エンコードの広告間 Period 跨ぎで
    発生していた不体裁な映像再生現象に対応するためのワークアラウンド

    View Slide

  92. キックオフ:試合展開に合わせて戦術を変える
    Google Widevine ライセンススパイクを鎮める
    ● 11.22 - 11.23 の試合中に動画プレイヤーのリプレイスをリリース
    dash.js
    https://npaw.com/
    THEOplayer

    View Slide

  93. キックオフ:試合展開に合わせて戦術を変える
    イベント期間開始時の動画プレイヤーライブラリ
    プラットフォーム 動画プレイヤーライブラリ
    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

    View Slide

  94. キックオフ:試合展開に合わせて戦術を変える
    イベント期間開始時の動画プレイヤーライブラリ
    プラットフォーム 動画プレイヤーライブラリ
    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 に短時間で適用

    View Slide

  95. キックオフ:試合展開に合わせて戦術を変える
    イベント期間開始時の動画プレイヤーライブラリ
    プラットフォーム 動画プレイヤーライブラリ
    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 キーシステムを
    同一再生セッション内で扱うことができる
    ※ 要素を差し替えて EME の限界を回避
    今回はこの柔軟性をトレードオフにリプレイス

    View Slide

  96. キックオフ:試合展開に合わせて戦術を変える
    Google Widevine ライセンススパイクを鎮める
    ● 11.22 - 11.23 の試合中に動画プレイヤーのリプレイスをリリース
    ● この日 4 試合開催: 品質指標を見て dash.js を適用する割合を増加

    View Slide

  97. キックオフ:試合展開に合わせて戦術を変える
    例:解像度制御機構に影響する問題

    View Slide

  98. キックオフ:試合展開に合わせて戦術を変える
    Web app と HTML5-based TV app の ABR (Adaptive Bitrate) が
    あるタイミングから意図通りの挙動をしていないことを検知
    解像度ごとの視聴数積上グラフ 解像度ごとの視聴数積上グラフ

    View Slide

  99. キックオフ:試合展開に合わせて戦術を変える
    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

    View Slide

  100. キックオフ:試合展開に合わせて戦術を変える
    dash.js では registerCustomCapabilitiesFilter を利用し
    解像度制御を行っていた
    registerCustomCapabilitiesFilter はインメモリのマニフェスト情報から
    フィルター対象を除去する
    インメモリのマニフェスト情報から制御対象の Representation がない状態で
    抑制した低い解像度から解放した高い解像度に戻す制御に失敗していた

    View Slide

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

    View Slide

  102. キックオフ:試合展開に合わせて戦術を変える
    例:CDN バランシングに影響する問題

    View Slide

  103. キックオフ:試合展開に合わせて戦術を変える
    イベント期間が開始し、数試合を終えた後の試合開始時に CDN バランシングが
    大きく崩れる現象を検知
    特定の CDN に顕著に偏っている

    View Slide

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

    View Slide

  105. キックオフ:試合展開に合わせて戦術を変える
    状況
    ● NPAW CDN Selector は NPAW Video Analytics で記録した再生品質指標
    のデータからを CDN のヘルスチェックしている
    ● NPAW Video Analytics 再生品質指標データから CTV デバイスが試合途
    中や試合終了時にそのままの画面で電源オフされ、次の起動時に再生エ
    ラーから開始していることを確認
    ● NPAW CDN Selector はその再生エラー率の上昇を確認し、CDN の選択
    比率を調整
    NPAW CDN Selector の再生品質指標に最適化した CDN 選択機能をオフ
    独自 CDN バランシングモジュールが
    各 CDN の再生状態を基準に選択を調整する戦術に変更

    View Slide

  106. キックオフ:試合展開に合わせて戦術を変える
    例:システムの不具合に起因する問題

    View Slide

  107. キックオフ:試合展開に合わせて戦術を変える
    Chromecast の再生セッション数の急激な変化を検知
    離脱するにしても
    不自然な同時多発
    同時間にIn-Stream Error % の
    上昇を確認

    View Slide

  108. キックオフ:試合展開に合わせて戦術を変える
    Chromecast の再生セッション数の急激な変化を検知
    SSAI するメディアサーバーが
    取得した広告情報(VAST)に
    不備を発見



    00:00:15

    <..>
    <..>
    <..>
    ..
    情報を元に生成したマニフェストを
    Cast Application Framework は
    不当なものと判定し離脱

    View Slide

  109. キックオフ:試合展開に合わせて戦術を変える



    00:00:15

    <..>
    <..>
    <..>
    ..
    修正し、即反映
    Chromecast の再生セッション数の急激な変化を検知
    SSAI するメディアサーバーが
    取得した広告情報(VAST)に
    不備を発見
    情報を元に生成したマニフェストを
    Cast Application Framework は
    不当なものと判定し離脱

    View Slide

  110. キックオフ:試合展開に合わせて戦術を変える
    例:特定デバイスの挙動に依存した根本解決が難しい問題

    View Slide

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

    View Slide

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

    View Slide

  113. キックオフ:試合展開に合わせて戦術を変える
    Fire TV Stick 4K Max の In-Stream Error % が顕著に高いことを検知
    同一ユーザーが一定間隔で
    BehindLiveWindowException の
    In-Stream Error を記録して
    再生セッションの終了を確認
    Fire OS はディスプレイ電源の ON/OFF を
    ACTION_HDMI_AUDIO_PLUG イベントで
    判定し対処できるが、
    再生速度が遅くなる挙動の原因は不明のまま

    View Slide

  114. FIFA ワールドカップ カタール 2022
    を経た次の再生品質制御を考える

    View Slide

  115. FIFA ワールドカップ カタール 2022 を経た次の再生品質制御を考える
    ABEMA では未踏規模だったイベントを経て
    ● 従来は提供することができなかった高品質の映像を
    届けることができるようになった
    ● 新しい動画システムの挑戦において可視化された再生品質指標は
    進んでいる方向が正しいか判断する材料

    View Slide

  116. FIFA ワールドカップ カタール 2022 を経た次の再生品質制御を考える
    ABEMA では未踏規模だったイベントを経て
    ● 従来は提供することができなかった高品質の映像を
    届けることができるようになった
    ● 新しい動画システムの挑戦において可視化された再生品質指標は
    進んでいる方向が正しいか判断する材料
    同時に、現状の再生品質制御が
    人によるリアルタイム監視に助けられている部分の広さを確認できた

    View Slide

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

    View Slide

  118. FIFA ワールドカップ カタール 2022 を経た次の再生品質制御を考える
    現時点の再生品質制御システムに足りないもの
    ● 特定 ISP や地域条件などに絞った品質監視
    ● 不体裁な不具合の Video Quality MOS (Mean Opinion Score) のような主観品
    質指標シミュレーションによる自動検知
    現在 ABEMA で開発中の合成監視システムの精度を上げることで
    次の再生品質制御レベルに達成することを狙っている

    View Slide

  119. View Slide