CMCD (Common Media Client Data) CTA-5004


概要

  • 概要
    • メディア再生時のQoS関連情報をサーバに送信するための規格
  • 規格
  • 特徴
    • 非リアルタイムなQoSレポートであれば、以下の手順で作成可能
      • メディアプレイヤー
        • URLパラメータによるCMCD送信をオンにする
          • プレイヤーはQoS情報をURLパラメータとしてメディアサーバに送信するようになる
      • 解析側
        • メディアサーバの生ログを取得
        • URLパラメータの集計によりQoSレポートを生成
    • リアルタイムなQoS状況の表示には、メディアサーバ(CDN)側の対応が必要
      • メディアプレイヤー
        • CMCD送信をオンにする
      • CDN
        • メディアサーバが受信したQoS情報をリアルタイムに処理および表示する
    • 配信サーバではなくQoS収集サーバにQoS情報をJSONとして送信することも、仕様では想定されているが、現状、実装されていない。
    • DVB-Iでも採用される予定
  • 送信方法
    • メディア配信サーバへの送信:メディアチャンクの受信時にQoS情報を伝達する
      • URLパラメータ
        • 例:https://cdn.example.net/video/hls/ocean/hoge.ts?CMCD=br%3D3200%2Cbs%2Cd%3D4004%2Cmtp%3D25400%2Cot%3Dv%2Crtp%3D15000%2Csid%3D%226e2fb550-c457-11e9-bb97-0800200c9a66%22%2Ctb%3D6000
          • 補足:HTTPエンコーディングの解凍後CMCD=br=3200,bs,d=4004,mtp=25400,ot=v,rtp=15000,sid=”6e2fb550-c457-11e9-bb97-0800200c9a66″,tb=6000
      • HTTPリクエストヘッダ
        • 例:get https://cdn.example.net/video/hls/ocean/hoge.ts
          • CMCD-Request:mtp=25400
          • CMCD-Object:br=3200,d=4004,ot=v,tb=6000
          • CMCD-Status:bs,rtp=15000
          • CMCD-Session:sid=”6e2fb550-c457-11e9-bb97-0800200c9a66″
    • 一般サーバ:メディアチャンクの受信とは別にQoS情報を一般サーバに送信する
      • JSONオブジェクト
        • 例:
          • . {“br”: 3200,”bs”:true,”d”: 4004,”mtp”: 25400, “ot”: “v”, “rtp”:15000,”sid”:”6e2fb550-c457-11e9-bb97-0800200c9a66″,”tb”:6000}
        • 補足
          • 筆者の調査した範囲では実装されていない

キー(パラメータ)

  • CMCD-Object
    • br (encoded BitRate):処理中コンテンツのビットレート(kbps)
    • d (object Duration):再生中コンテンツの長さ(ミリ秒)
    • ot (Object Type):オブジェクトタイプ(文字列:m(text), a(audio only), v(video only), av(audio and video), i(init segment), c(caption), tt(timed text), k(key), o(other))
    • tb (Top Bitrate):マルチビットレートにおける最も高いビットレート
  • CMCD-Request
    • bl (Buffer Length):再生位置(ミリ秒)
    • dl (Dead Line):リバッファリング等を起こさずにすむチャンク取得時間(ミリ秒)
    • mtp (Measured ThroughPut):プレイヤーで計測したダウンロード速度(kbps)
    • nor (Next Object Request):次に取得するチャンク
    • nrr (Netxt Range Rquest):次にレンジリクエストを発行する場合のレンジ(文字列)
    • su (Start Up):バッファが空等の理由で次のチャンクが即座に必要(Boolean)
  • CMCD-Status
    • bs (Buffer Starvation):バッファリング中(boolean)
    • rtp (Requested maximum ThroughPut):クライアントが必要だと思うスループット(kbps)
  • CMCD-Session
    • cid (Content ID):コンテンツID(String)
    • pr (Playback Rate):再生レート(数字:1(リアルタイム)、2(倍速)、0(再生停止))
    • sf (Streaming Format):ストリーミングフォーマット(文字:d(dash)、h(hls)、s(smooth)、o(Other))
    • sid (Session ID):セッションID(String)
    • st (Segment Type):セグメントのタイプ(トークン:v(VoD)、l(Live))
    • v (Version):CMCDバージョン(数字:1(version 1))

実行例

  1. {“sid”: “6e2fb550-c457-11e9-bb97-0800200c9a66”}
    • sid(セッションID):”6e2fb550-c457-11e9-bb97-0800200c9a66″
  2. {“br”: 3200,”bs”:true,”d”: 4004,”mtp”: 25400, “ot”: “v”, “rtp”:15000,”sid”:”6e2fb550-c457-11e9-bb97-0800200c9a66″,”tb”:6000}
    • sid:略
    • br (encoded BitRate、再生しているビットレート):3200
    • bs (Buffer Starvation、バッファリング中):Ture
      • 初期バッファリングが発生中
    • d (object Duration、チャンク長): 4004
    • mtp (Measured ThroughPut、プレイヤー側で計測したスループット): 25400

パターン

  • 再生開始
    • パラメータ
      • bs (バッファリング中):あり、初期バッファリグが発生
      • su (次のチャンクが即時に必要):あり、バッファを埋めるため
      • cid (コンテンツID)、sid(セッションID):あり、以降継続的に付く
      • ot (オブジェクトタイプ)、sf (ストリーミングフォーマット)、st(ストリーミングタイプ):あり、以降継続的に付く
  • 初期バッファリング中
    • パラメータ
      • mtp (計測スループット):あり、直前チャンクのダウンロード速度。以降継続的に付く(報告される)
      • br (再生中ビットレート):あり、処理中チャンクのビットレート、以降継続的に付く
      • nor (次のチャンク):あり、次にダウンロードするチャンク名。以降継続的に付く
      • tb (必要帯域):あり、連続再生に必要な帯域。以降継続的に付く
  • 表示開始
    • パラメータ
      • bl (再生位置):あり、0
      • bs (バッファリング中):消える
      • su (次のチャンクが即座に必要):消える
  • 定常再生(バッファにチャンク有)
    • パラメータ
      • bl :増加
      • mtp、br、nor、tb:定常的に付く
      • bs、su:なし
  • バッファリング発生
    • パラメータ
      • bl:増加しない
      • bs、su:付く
      • 上記以外は定常再生と同じ
  • 再生ビットレート変更
    • <調査中>

デモサイト

実装状況

プレイヤー

CDN (リアルタイム処理)

解析(表示)

Version 2

  • 2023年9月から策定中(CTA WAVE、SVTA)
  • 概要
    • モードが追加される
      • Requestモード
        • Version 1で定義したもの
        • 標準モード、すべてのクライアントが実装
      • Responseモード
        • Requestモードで送信したサーバ以外のサーバに情報を送信
        • timestampとurlが必須
      • Eventモード
        • 特定イベントだけを別サーバに送信
        • timestamp必須
    • キー(パラメータ)が追加される
  • ドキュメント
  • 新規キー(パラメータ)
    • 一般
      • ts (Time Stamp):イベントが発生した時のタイムスタンプ
    • CMCD-Object
      • ab (Aggregate encoded Bitrate):全てオブジェクトタイプを足しこんだビットレート(kbps)
      • tbl (Target Buffer Length):オブジェクトに対するターゲットバッファ長(ミリ秒)
      • tpb (Top Playable Bitrate):再生可能な最も高いビットレート(kbps)
      • lb (Lowest encoded Bitate):マニフェスト上の最も低いビットレート(kbps)
      • tab (Top Aggregated encoding Bitrate):マニフェスト上の最も高い足しこんだビットレート(kbps)
      • lab (Lowest Aggregated encoding Bitrate):マニフェスト上の最も低い足しこんだビットレート(kbps)
      • url (request URL):リクエストしたオブジェクトのURL(文字列)
    • CMCD-Status
      • bsd (Buffer Starvation Duration):最後のリバッファリング時間(ミリ秒)
      • cdn (CDN id):使用しているCDN(文字列)
      • bg (BackGround):プレイヤーがバックグラウンド(ユーザから見えない)
      • pt (Playhead Time):プレイヘッド時間[要調査](ミリ秒)
      • ec (player Error Code):プレイヤー定義のエラーコード(文字列)
      • e (Event):イベントモードでのイベント(文字列:ps(Play State change)、e(Error)、t(Time interval)、c(Contenet id change)、b(player into Background)、m(Mute)、um(UnMute)、pe(Player Extended)、pc(Player Collapse)、abs(Ad Break Start)、abe(Ad Break End)、as (Ad Start)、ae(Ad End))
    • CMCD-Request
      • ltc (Live Stream Latency):計測されたライブの遅延(ミリ秒)
      • sta (STAte):プレイヤーの状況(文字列:s(starting)、p(playing)、k(seeking)、r(rebuffering)、a(paused)、w(waiting)、e(ended)、f(fatal error)、q(quit)、d(preloading)、
      • ttfb (Time To First Byte):リクエストを出してからコンテンツの最初の1ビットを受け取るまでの時間(ミリ秒)
      • ttlb (Time To Last Byte):リクエストを出してからコンテンツの最後の1ビットを受け取るまでの時間(ミリ秒)
      • rc (Response Code):レスポンスコード(数値)
      • cmsdd (CMSD Dynamic Header):CMSD可変ヘッダ(文字列)
      • cmsds (CMSD Static Header):CMSD固定ヘッダ(文字列)
    • CMCD-Session
      • msd (Media Start Delay):再生し始めてから表示されるまでの遅延(ミリ秒)

補足:CMSD (Common Media Server Data):CTA-5006


コメントをどうぞ

メールアドレスが公開されることはありません。 が付いている欄は必須項目です