Bitrate

This page covers data collection for the Bitrate variable. See Average bitrate (dimension) and Average bitrate (metric) for the corresponding reporting variables.

The bitrate variable is the current playback bitrate, in kilobits per second. Set it on the QoE object whenever the player negotiates a bitrate, and update the QoE object when the bitrate changes. The backend uses bitrate values to compute Average bitrate, the per-bitrate-bucket dimension, and the Bitrate changes metric.

Property
Value
Context data variable
a.media.qoe.bitrateAverageBucket
XDM collection field
xdm.mediaCollection.qoeDataDetails.bitrate
Audience Manager trait
c_contextdata.a.media.qoe.bitrateAverageBucket
Required
No
Sent with
Quality events (bitrate change, buffer start, error), session close
Web SDK

Set bitrate inside xdm.mediaCollection.qoeDataDetails on media.bitrateChange (or any quality-related event) when calling sendEvent:

code language-javascript
alloy("sendEvent", {
  xdm: {
    eventType: "media.bitrateChange",
    mediaCollection: {
      qoeDataDetails: {
        bitrate: 3200,
        droppedFrames: 0,
        framesPerSecond: 24,
        timeToStart: 0
      },
      sessionID: "{sid}",
      playhead: 90
    }
  }
});
iOS

Pass the bitrate as the first argument to createQoEObject. Update the QoE object on the tracker before any quality event fires.

code language-swift
let qoeObject = Media.createQoEObjectWith(bitrate: 3200,
                                       startupTime: 0,
                                               fps: 24,
                                     droppedFrames: 0)

tracker.updateQoEObject(qoe: qoeObject)
Android

Pass the bitrate as the first argument to createQoEObject. Update the QoE object on the tracker before any quality event fires.

code language-kotlin
val qoeObject = Media.createQoEObject(3200L,
                                      0.0,
                                      24.0,
                                      0L)

tracker.updateQoEObject(qoeObject)
Roku Edge

Set bitrate inside xdm.mediaCollection.qoeDataDetails when calling sendMediaEvent for quality events such as media.bitrateChange:

code language-brightscript
m.aepSdk.sendMediaEvent({
    "xdm": {
        "eventType": "media.bitrateChange",
        "mediaCollection": {
            "qoeDataDetails": {
                "bitrate": 3200,
                "droppedFrames": 0,
                "framesPerSecond": 24,
                "timeToStart": 0
            },
            "playhead": 90
        }
    }
})
Media Edge API

Call the bitrateChange endpoint with bitrate inside xdm.mediaCollection.qoeDataDetails:

code language-json
{
  "events": [{
    "xdm": {
      "eventType": "media.bitrateChange",
      "mediaCollection": {
        "qoeDataDetails": {
          "bitrate": 3200
        },
        "sessionID": "{sid}",
        "playhead": 90
      }
    }
  }]
}

Legacy implementation types (Analytics-only)

Media SDK JS 3.x

Pass the bitrate as the first argument to ADB.Media.createQoEObject and update the tracker:

code language-javascript
var qoeObject = ADB.Media.createQoEObject(
  3200,  // bitrate (kbps)
  0,     // startup time (ms)
  24,    // fps
  0      // dropped frames
);

tracker.updateQoEObject(qoeObject);
Chromecast

Pass the bitrate in kbps as the first argument to ADBMobile.media.createQoSObject and update the tracker:

code language-javascript
var qosInfo = ADBMobile.media.createQoSObject(
  3200,  // bitrate (kbps)
  0,     // startupTime
  24,    // fps
  0      // droppedFrames
);
ADBMobile.media.updateQoSObject(qosInfo);
Roku 2.x

Pass the bitrate in kbps as the first argument to adb_media_init_qosinfo and update the tracker with mediaUpdateQoS:

code language-brightscript
adb = ADBMobile()
qosInfo = adb_media_init_qosinfo(3200.0, 0.0, 24.0, 0.0)  ' bitrate, startupTime, fps, droppedFrames

adb.mediaUpdateQoS(qosInfo)
Media Collection API

Include media.qoe.bitrate in the params object of your bitrateChange POST request:

code language-json
{
  "playerTime": { "playhead": 90, "ts": 1699523820000 },
  "eventType": "bitrateChange",
  "params": {
    "media.qoe.bitrate": 3200
  }
}

See the Media Collection API events reference for the full request structure.

recommendation-more-help
media-analytics-help