Customize Playback via Parameters
Customize playback by adding the desired customization parameters directly after core identification parameters in the playback URL's query string.
Key Information
-
Test your customizations by setting a test player URL's query string to the desired customization parameters.
-
Please verify that all query string parameters are set to URL-safe values.
-
Customization parameters are shown in blue font in the following sample query string:
?tc=1&exp=1358341863&rn=4114845747&ct=a&cid=ea...&rays=dcba&pk=myapp&...&sig=dm13... -
It is strongly recommended to sign playback URL to ensure its integrity. Please include customization parameters when signing your playback URL.
General Parameters
This section describes all customization parameters that are not specific to ad decision servers or Studio DRM.
Parameter | Description |
|---|---|
ak | Identifies the name of the application key used to decrypt the digital signature. Upon including this parameter, the signed playback URL will only work with an application key. |
allowts |
|
dash_subtitles_merge | Set to |
ddp | Set to |
delay | Determines artificial latency in seconds. Adjust for time zones or reduce latency. Use this parameter to adjust for time zones by introducing an artificial delay (e.g., delay=7200) or to reduce total latency (e.g., delay=20). |
dmm.schemas.break | Set to |
dmm.schemas.top | Adds a Dynamic Manifest Marker (DMM) to the top of a manifest file. |
euid | Identifies the current user with a custom ID (i.e., external user ID). This ID is passed to ad decision systems and included in many logging messages. Should be 100 characters or fewer, using alphanumeric characters, underscores, or dashes. |
expand | Identifies a comma-separated list of expansion parameters to shorten the playback URL and facilitate parameter adjustments. Sign the playback URL using the expand parameter name / value pair instead of the set of parameters that it represents. An expansion parameter shortens the length of the playback URL, hides parameters from viewers, and facilitates the adjustment of parameters across multiple live channels, live events, or assets.
expand=ad_01,playback_01 |
forcecic |
|
fpuseki |
|
geo.country.allow |
|
geo.country.deny |
|
hlsver | Determines the minimum HLS version required by the player. Maximum value is 7. <Tip>You should only set this parameter when your player requires a feature that is unavailable in a lower version. Promote backward compatibility by setting this parameter to the lowest HLS version that supports the desired feature.</Tip>Learn more about HLS versions. |
ifo | Set to
ifo=1 |
maxfps | Limits the maximum frames per second (FPS) in the manifest. |
needscors | Determines CORS support for the manifest response. |
opaqueid | Uniquely identifies a viewer. Use this parameter along with the |
pltl | Set the Playlist Timeline parameter to |
plts | Set the Playlist Timestamp parameter to specify a seek position in seconds from the start of the playlist. Only content counts towards seek times. Specifically, ad breaks are excluded from this calculation. This parameter is exempt from digital signatures. |
ptid | Tags playback with an organizational group or category. This case-sensitive value may consist of up to 32 alphanumeric characters, dashes, and underscores. Although tracking data is logged, it is currently inaccessible. However, it will eventually be exposed via log data. If this parameter has not been defined in the playback URL, then content playback will be tracked under the unknown category. |
rates | Restricts playback to rays within a specified range of bitrates. |
rays | Restricts playback to specified rays. Specify the letter corresponding to each desired ray.
rays=dcba to prevent access to rays higher than d. |
repl | Identifies the replacement plugin to be loaded. |
resolutions | Restricts playback to rays within a specified range of resolutions.
resolutions={Low}-{High} Example: resolutions=720- to restrict to rays 720p or higher. |
show_dash_subtitles |
|
show_vtt |
|
smartcic |
|
srs |
|
sstart | Sets the starting point for playback in slice numbers (0-based). Content prior to the starting slice will be excluded from playback. This parameter is incompatible with live channel playback. |
sstop | Sets the stopping point for playback in slice numbers (0-based). |
start | Sets the playback start offset in seconds, rounded down to the nearest slice boundary. |
staticomsdk | Set to |
stop | Sets the playback stop time in seconds, rounded up to the nearest slice boundary. The specified offset will be rounded up to the nearest slice boundary. Content after this offset will be excluded from playback. This parameter is incompatible with live channel playback. |
subtitle_placeholders_off | Set to |
thumbsray | Set to
thumbsray=1 |
timedmeta.events.ads | Inserts tracking events from the ad response into the manifest file. Use a comma to delimit each event. Learn more. |
timedmeta.extensions.ads | Inserts custom VAST extensions from the ad response into the manifest file. Use a comma to delimit each extension. Learn more. |
timedmeta.schemas.ads | Set to |
ts | Sets the start time for playback in Unix time. This feature cannot be used any farther back in time than the schedule and assets for the linear stream exist. |
up.max_concurrent_sessions | Limits the number of concurrent sessions to the specified value. Specify the |
Ad Parameters
Ad-specific customization parameters are organized according to the following categories:
General Ad Parameters
Ad parameters that apply to all ad decision servers are described below.
Parameter | Description |
|---|---|
ad | Identifies the ad configuration that determines the ad decision server from which ads will be obtained during playback.
ad=fw2 |
ad._debug | Tags a playback session for the purpose of tracking ad insertion data. Set this parameter to the desired tag. |
ad.breakend | Prevents ads from exceeding an ad break's duration. Valid values are:
Syntax: ad.breakend=chopdrop Drops ads that exceed the adjusted ad break duration. If the ad break's requested duration has been exceeded, then the stream will cut back over to content. Otherwise, slate will be played until the end of the ad break. Slate may extend slightly beyond an ad break. Learn more. Syntax: ad.breakend=drop |
ad.caid |
|
ad.cping | Set this parameter to 1 to enable the Ping API. |
ad.flex | Set this parameter to the number of seconds that an ad break may extend beyond an ad break's duration. |
ad.kv | Defines the key-value pairs that will be sent to the ad decision server. Use commas to separate keys and values. |
ad.Parameter | Pass ad decision server-specific parameters to the ad decision server. |
ad.prbd | Set this parameter to the name of the Prebid configuration that identifies your Prebid server and provides bidding instructions. |
is_ad | Manually forces an asset to be reported as an ad in the asset_play_started event (push logs). |
Google Ad Manager
View Google Ad Manager-specific parameters.
FreeWheel
View FreeWheel-specific parameters.
Studio DRM Parameters
Apply a Studio DRM policy to a playback session by including one or more of the following customization parameters in the playback URL:
-
DRM Policy Configuration
Apply a set of predefined policies to a playback session by setting thedrm_policy_nameparameter to the name of the desired Studio DRM policy configuration.<Info>Specifying a Studio DRM policy configuration that does not exist will prevent playback.</Info>
Example:
...&drm_policy_name=widevine1 -
Individual Policy Settings
Apply individual policy settings to a playback session by specifying each desired FPS or DASH (Widevine and PlayReady) policy setting.<Info>All specified Studio DRM policies will be applied to the playback session. However, explicitly defined policy settings (e.g., &ck=1) take precedence over a Studio DRM policy configuration (drm_policy_name).</Info>
Example:
...&ck=1&drm_optional=1<Tip>Apply a general Studio DRM policy via the drm_policy_name parameter and then define more granular policies for specific scenarios (e.g., allow a device that doesn't support DRM to play low resolution streams).</Tip>
Apply DRM Policy to Playback Session
Apply a DRM policy using one of the following methods (ordered from most to least amount of precedence):
-
Explicit Policy Settings
- Specify individual policy settings to tailor a playback session to meet a specific need.
- Explicitly defined settings take precedence over a Studio DRM policy configuration and the default DRM policy.
-
Studio DRM Policy Configuration
- Take advantage of a Studio DRM policy configuration to quickly apply a predefined set of DRM policies to a playback session.
- A Studio DRM policy configuration takes precedence over the default DRM policy.
-
Default Policy Settings
- All DRM policy settings have a default value.
- This default DRM policy is only applicable when a Studio DRM policy configuration or a conflicting policy setting has not been defined.
Disable Studio DRM
Use the following parameters to disable Studio DRM.
| Query String Parameter | Name | Description |
|---|---|---|
| drm_optional | Disable Studio DRM | Disables Studio DRM protection. Key information:
Syntax: &ck=1&drm_optional=1Sample Usage: Include the following query string parameters to restrict playback on a device that doesn't support DRM to the two lowest quality rays: ...&ck=1&drm_optional=1&rays=baAll playback URLs for Studio DRM-protected content should require a digital signature to prevent URL tampering. |
Apple FairPlay Streaming (FPS)
In addition to FPS policy settings, you may also reuse content keys via the fpuseki parameter.
Define one of the following scopes when specifying FPS policy settings:
-
All Tracks: Apply a policy setting to all tracks by excluding the track type from the query string parameter.
Example:...&fp.hdcp=0 -
Track-Specific: Apply a policy setting to a specific tracks by indicating the track type within the query string parameter.
Syntax:fp.{TrackType}.{Policy}
Valid values for{TrackType}are:- sd: Applies the policy setting to standard definition (576p or less) tracks.
- hd: Applies the policy setting to high-definition (720p and 1080p) tracks.
- uhd1: Applies the policy setting to 4K ultra-high-definition video tracks.
- uhd2: Applies the policy setting to 8K ultra-high-definition video tracks.
Example: ...&fp.hd.hdcp=0
<Info>Track-specific policy settings take precedence over policy settings that apply to all tracks.</Info>
Use the following query string parameters to define a FPS policy.
| Query String Parameter | Description |
|---|---|
fp.airplayfp.TrackType.airplay | Determines whether playback will be allowed over AirPlay. Valid values are:
|
fp.avadapterfp.TrackType.avadapter | Determines whether playback may be mirrored via an Apple Lightning AV Adapter. Valid values are:
|
fp.hdcpfp.TrackType.hdcp | Determines whether High-bandwidth Digital Content Protection (HDCP) enforcement is required. Valid values are:
|
fp.lease_durationfp.TrackType.lease_duration | Determines the length of time, in seconds, during which playback will be allowed. Playback will stop upon the expiration of the lease. Key information:
|
fp.persistencefp.TrackType.persistence | Determines whether offline playback is allowed. Valid values are:
|
fp.playback_durationfp.TrackType.playback_duration | Determines the length of time, in seconds, for which playback will be valid. Key information:
|
fp.rental_durationfp.TrackType.rental_duration | Determines the length of time, in seconds, during which the Content Key is valid prior to initial playback. Playback may only be initiated with a valid Content Key. Key information:
|
DASH
DASH policy settings are organized into the following categories:
All DASH DRM Solutions
The following query string parameters are applicable to all DASH Studio DRM solutions.
Query String Parameter | Name | Description |
|---|---|---|
ck | Cleartext Key | Disables DRM by passing the Content Key in cleartext. Decryption will take place outside of a Content Decryption Module (CDM). Valid values are: |
noadredir | Disable Ad Redirects |
|
nielsen | Nielsen | Advertises to the DASH player that the manifest may contain Nielsen data encoded within the emsg box. |
Google Widevine
Define a Widevine DRM policy by including parameters that define:
- Content Key Specs: Define what content keys will be returned.
- Policy Overrides: Define the conditions under which playback will be allowed.
Content Key Specs
Use content key specs to define the set of Content Keys that will be returned to the player.
Syntax: rmp.content_key_specs.{Track Type}.{Restriction}={Value}
Each of the above variables are described below.
-
Track Type: Identifies the type of track (i.e., SD, HD, AUDIO, UHD1, UHD2, ALL_VIDEO, and ALL) to which this policy will be applied.
Learn more.<Info>If you would like to specify all video tracks, please use
ALL_VIDEOinstead ofALL VIDEO.</Info> -
Restriction and Value: Defines the policy that will be applied to the track identified above.
<Info>Both the name of the restriction and its value are case-sensitive.</Info>
Each restriction is described below.
| Restriction | Description |
|---|---|
| required_output_protection.cgms_flags | Determines whether Copy Generation Management System (CGMS) is required. Do not specify this parameter for desktop browser platforms. Valid values for cgms_flags are: CGMS_NONE: A single generation of copies has been made, but no additional copying is allowed. COPY_FREE: Allows unlimited copies. COPY_ONCE: Allows a single generation of copies. COPY_NEVER: Disallows copying. Default value: CGMS_NONE |
| required_output_protection.disable_analog_output | Determines whether analog output is allowed. Valid values are: True: Disallows analog output. False: Allows analog output. Default value: False |
| required_output_protection.hdcp | Determines whether HDCP is required. Valid values for hdcp are: HDCP_NONE: HDCP is not enforced. HDCP_V1: Playback requires a client that supports HDCP 1.x or higher. HDCP_V2: Playback requires a client that supports HDCP 2.0 or higher. HDCP_V2_1: Playback requires a client that supports HDCP 2.1 or higher. HDCP_V2_2: Playback requires a client that supports HDCP 2.2 or higher. HDCP_NO_DIGITAL_OUTPUT: Playback is only allowed on an internal display. Playback over HDCP is disallowed. Default value: HDCP_NONE |
| required_output_protection.hdcp_srm_rule | Determines whether the device will be required to support a specific version of a System Renewability Message (SRM). Valid values are: HDCP_SRM_RULE_NONE: The device is not required to have a specific version of the SRM. CURRENT_SRM: Disallow the Content Key if the device has an older SRM and cannot support SRM updates. Default value: HDCP_SRM_RULE_NONE |
| security_level | Determines the minimum security requirements for performing cryptography, content decoding, and media operations. Valid values are: 1: Requires software-based white-box cryptography. 2: Requires software-based white-box cryptography and an obfuscated decoder. 3: Requires a hardware-backed Trusted Execution Environment (TEE) for key material and cryptography. 4: Requires a hardware-backed TEE for cryptography and content decoding. 5: Requires a hardware-backed TEE for cryptography, content decoding, and all compressed and uncompressed media operations. Security levels 3, 4, and 5 require HDCP to be set via required_output_protection.hdcp. Default value: 1 |
Policy Overrides
Use the following parameters to determine the conditions under which playback will be allowed.
Syntax: rmp.policy_overrides.{Override}={Value}
Each policy override is described below.
| Override | Description |
|---|---|
| can_persist | Determines whether offline playback is allowed. Valid values are: True: Offline playback is allowed. False: Offline playback is disallowed. Default value: True |
| can_play | Determines whether playback is allowed. This parameter is required when defining policy overrides. Default value: True |
| license_duration_seconds | Determines the length of time, in seconds, during which content playback is allowed. Key information: This window starts from the time at which the license was issued. This parameter must be specified in order to limit playback by license. No further decryption is allowed upon license expiration. Default value: 86400 |
| playback_duration_seconds | Determines the length of time, in seconds, for which a license will be valid after its initial use. This parameter should only be specified for offline or license renewal scenarios. Default value: 0 |
| rental_duration_seconds | Determines the length of the window, in seconds, during which a license will be valid prior to its initial use. Key information: This window starts from the time at which the license was issued. Once a license is used, rental duration is not used or enforced. Please use either playback or license duration to further limit playback. This parameter should only be specified for offline scenarios. Default value: 0 |
Microsoft PlayReady
Define one of the following scopes when specifying PlayReady policy settings:
-
All Tracks: Apply a policy setting to all tracks by excluding the track type from the query string parameter.
Example:
...&pr.can_persist=true -
Track-Specific: Apply a policy setting to a specific tracks by indicating the track type within the query string parameter.
Syntax:
pr.{TrackType}.{Policy}Valid values for TrackType are:
-
audio: Applies the policy to audio tracks.
-
sd: Applies the policy setting to standard definition (576p or less) tracks.
-
hd: Applies the policy setting to high-definition (720p and 1080p) tracks.
-
uhd1: Applies the policy setting to 4K ultra-high-definition video tracks.
-
uhd2: Applies the policy setting to 8K ultra-high-definition video tracks.
Example:
...&pr.hd.can_persist=true
-
<Info>Track-specific policy settings take precedence over policy settings that apply to all tracks.</Info>
Use the following query string parameters to define a PlayReady policy.
| Query String Parameter | Description |
|---|---|
| pr.analog_video_protection_level | Determines the minimum security requirements for the client's analog video outputs. Valid values are:
|
| pr.can_persist pr.TrackType.can_persist | Determines whether offline playback is allowed. Valid values are: True | False Default value: False |
| pr.compressed_digital_audio_protection_level | Determines the minimum security requirements for passing compressed digital audio to the client's digital audio outputs. Valid values are:
This security level is solely provided for testing purposes. Default value: 100 |
| pr.digital_video_protection_level pr.TrackType.digital_video_protection_level | Determines the level of digital video protection that will be required. Valid values are:
The pr.require_hdcp_type_1 parameter determines which version of HDCP will be enforced.Default value: 100 |
| pr.license_begin_seconds | Determines the number of seconds prior to the current playback request for which the license will be valid. A license cannot be used prior to the specified time. Set this parameter to 0 to make the license valid any time prior to the playback request. The purpose of this parameter is to account for time differences between our servers and the client. For example, a playback request will be denied if this parameter is set to 60 seconds and the client's time is 4 minutes behind our server's time. Default value: 3600 By default, playback will be allowed when a client's time is up to an hour behind our server's time. |
| pr.license_duration_seconds pr.TrackType.license_duration_seconds | Determines the length of time, in seconds, during which content playback is allowed. This countdown starts upon license creation. No further decryption is allowed upon license expiration. Default value: 86400 |
| pr.playback_duration_seconds pr.TrackType.playback_duration_seconds | Determines the length of time, in seconds, for which playback will be valid. This countdown starts after initial playback. Use this parameter when setting up a policy for offline playback or license renewal. Playback is unlimited when playback duration has not been specified. Default value: 0 |
| pr.playenabler pr.TrackType.playenabler | Allows license delivery where it would normally be disallowed. Set this parameter to the Play Enabler GUID that defines the additional condition under which license delivery will be allowed. The purpose of this parameter is to facilitate testing. For example, by default, playback on a virtual machine is restricted. Pass B621D91F-EDCC-4035-8D4B-DC71760D43E9 to allow playback of constrained resolution on an unknown output (e.g., VM).Syntax: pr.playenabler={Play Enabler GUID}View Microsoft's Compliance Rules to learn more about Play Enablers. |
| pr.realtime_expiration | Determines whether the current playback session will be stopped upon license expiration. Valid values are: True: Upon license expiration, the current playback session will be stopped. False: The current playback session will continue if it was started prior to license expiration. Default value: True |
| pr.require_hdcp_type_1 pr.TrackType.require_hdcp_type_1 | Determines the version of HDCP that will be enforced on digital video outputs when pr.digital_video_protection_level is set to 250 or higher. Valid values are: True: HDCP content type 1 (HDCP version 2.2 or later) is enforced. Streams may not be transmitted by the HDCP repeater to HDCP 1.x-compliant devices or HDCP2.0-compliant repeaters. False: Allows any version of HDCP. Default value: False |
| pr.securitylevel pr.TrackType.securitylevel | Determines the minimum security requirements for the client device. Valid values are: 150: No security. This security level is solely provided for testing purposes. 2000: Use this security level for hardened devices and applications consuming commercial content. Requires the protection of Assets, Client Secrets, or Content Secrets via software or hardware. 3000: Use this security level for hardened devices with the highest security consuming the highest quality of commercial content. Devices Only: Requires the protection of Assets, Client Secrets, and Content Secrets via hardware using a Trusted Execution Environment (TEE) for the processor. Default value: 150 |
| pr.uncompressed_digital_audio_protection_level | Determines the minimum security requirements for passing uncompressed digital audio to the client's digital audio outputs. Valid values are: 100: No security. This level allows the client to pass uncompressed digital audio to digital audio outputs without restrictions. This security level is solely provided for testing purposes. 250: A client may pass uncompressed digital audio to digital audio outputs when either of the following conditions are true: HDCP is engaged on HDMI, DisplayPort, or MHL. SCMS is engaged and set to CopyNever. 300: A client may only pass uncompressed digital audio to digital audio outputs when HDCP is engaged on HDMI, DisplayPort, or MHL. 301: Prevents a client from passing uncompressed digital audio to digital audio outputs. Default value: 100 |
| pr.version | Determines the version of the PlayReady license that will be requested. Valid values are: 2: Generates a manifest file that contains an Adaption Set for each requested key. 3: Supports grouping requests for multiple keys into a single license request. Generates a manifest file where all Representations reside within a single Adaption Set. Default value: 3 |
Updated 2 days ago