Stream format

This page covers data collection for the Stream format variable. See Stream format for the corresponding reporting dimension.

The stream format variable identifies the quality tier of the stream (typically "HD" or "SD", but any string is accepted). Set it when you want to break out engagement, completion, or quality by delivery quality tier.

Property
Value
Context data variable
a.media.format
XDM collection field
xdm.mediaCollection.sessionDetails.streamFormat
Audience Manager trait
c_contextdata.a.media.format
Required
No
Sent with
Session start, session close
Web SDK

Set streamFormat inside xdm.mediaCollection.sessionDetails when calling sendEvent:

code language-javascript
alloy("sendEvent", {
  xdm: {
    eventType: "media.sessionStart",
    mediaCollection: {
      sessionDetails: {
        streamFormat: "HD"
      },
      playhead: 0
    }
  }
});
iOS

Pass the stream format as a metadata key in the HashMap argument to trackSessionStart. Use MediaConstants.VideoMetadataKeys.STREAM_FORMAT.

code language-swift
var metadata: [String: String] = [:]
metadata[MediaConstants.VideoMetadataKeys.STREAM_FORMAT] = "HD"

tracker.trackSessionStart(info: mediaObject, metadata: metadata)
Android

Pass the stream format as a metadata key in the HashMap argument to trackSessionStart. Use MediaConstants.VideoMetadataKeys.STREAM_FORMAT.

code language-kotlin
val metadata = HashMap<String, String>()
metadata[MediaConstants.VideoMetadataKeys.STREAM_FORMAT] = "HD"

tracker.trackSessionStart(mediaInfo, metadata)
Roku

Use createMediaSession to set streamFormat inside sessionDetails:

code language-brightscript
m.aepSdk.createMediaSession({
    "xdm": {
        "eventType": "media.sessionStart",
        "mediaCollection": {
            "sessionDetails": {
                "streamFormat": "HD"
            },
            "playhead": 0
        }
    }
})
Media Edge API

Call the sessionStart endpoint with streamFormat inside xdm.mediaCollection.sessionDetails:

code language-json
{
  "events": [{
    "xdm": {
      "eventType": "media.sessionStart",
      "mediaCollection": {
        "sessionDetails": {
          "name": "video-123",
          "length": 128,
          "contentType": "vod",
          "playerName": "HTML5 Player",
          "channel": "Sports",
          "streamFormat": "HD"
        },
        "playhead": 0
      }
    }
  }]
}

Legacy implementation types (Analytics-only)

Media SDK JS 3.x

Pass the stream format in the contextData object using ADB.Media.VideoMetadataKeys.StreamFormat:

code language-javascript
var contextData = {};
contextData[ADB.Media.VideoMetadataKeys.StreamFormat] = "HD";

tracker.trackSessionStart(mediaInfo, contextData);
Chromecast

Use ADBMobile.media.VideoMetadataKeys.STREAM_FORMAT to set the stream format in the StandardMediaMetadata property of the media object before calling trackSessionStart:

code language-javascript
var mediaInfo = ADBMobile.media.createMediaObject("My Video", "video-123", 128,
  ADBMobile.media.StreamType.VOD, ADBMobile.media.MediaType.Video);
var standardMetadata = {};
standardMetadata[ADBMobile.media.VideoMetadataKeys.STREAM_FORMAT] = "HD";
mediaInfo[ADBMobile.media.MediaObjectKey.StandardMediaMetadata] = standardMetadata;
ADBMobile.media.trackSessionStart(mediaInfo, null);
Media Collection API

Include media.streamFormat in the params object of your sessionStart POST request:

code language-json
{
  "playerTime": { "playhead": 0, "ts": 1699523820000 },
  "eventType": "sessionStart",
  "params": {
    "media.streamFormat": "HD"
  }
}

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

recommendation-more-help
media-analytics-help