Frames per second

The frames per second variable is the current frame rate of the stream. Set it on the QoE object alongside bitrate and dropped frames so the backend has full quality context for each playback session. Adobe Analytics does not auto-create a reporting variable for frame rate; create a custom processing rule if you want it surfaced as a report.

Property
Value
Context data variable
None (Adobe Analytics does not assign a reserved context data key for frame rate)
XDM collection field
xdm.mediaCollection.qoeDataDetails.framesPerSecond
Audience Manager trait
N/A
Required
No
Sent with
Quality events (bitrate change, buffer start, error), session close
Web SDK

Set framesPerSecond inside xdm.mediaCollection.qoeDataDetails when calling sendEvent:

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

Pass the frame rate as the third argument (fps) to createQoEObject.

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

tracker.updateQoEObject(qoe: qoeObject)
Android

Pass the frame rate as the third argument (fps) to createQoEObject.

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

tracker.updateQoEObject(qoeObject)
Roku

Set framesPerSecond inside xdm.mediaCollection.qoeDataDetails when calling sendMediaEvent:

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

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

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

Legacy implementation types (Analytics-only)

Media SDK JS 3.x

Pass the frame rate as the third argument to ADB.Media.createQoEObject:

code language-javascript
var qoeObject = ADB.Media.createQoEObject(3200, 0, 24, 0);
tracker.updateQoEObject(qoeObject);
Chromecast

Pass the frame rate as the third argument (fps) to ADBMobile.media.createQoSObject and update the tracker:

code language-javascript
var qosInfo = ADBMobile.media.createQoSObject(
  3200,  // bitrate
  0,     // startupTime
  24,    // fps
  0      // droppedFrames
);
ADBMobile.media.updateQoSObject(qosInfo);
Media Collection API

Include media.qoe.framesPerSecond in the params object:

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

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

recommendation-more-help
media-analytics-help