Edgio

MMD OD Query Parameters

MMD OD includes URL query parameters that you can use to control various aspects of playback, such as playback format. Query parameters must be placed at the end of the URL, such as after the list of input files for a dynamic manifest URL.
You can use up to 2048 characters for query parameters.

Server and Client Manifests

The server manifest, which the MMD OD web server module uses, holds information about the available streams, options, and so forth. The webserver module uses the information in the server manifest file to (1) create the various client manifests and playlists and (2) apply any selected options. The webserver module gives the client manifest to the player for playback.
Throughout the remainder of this chapter, the MMD OD web server module will be referred to simply as “the webserver module.”

Timing Parameters

NameType / FormatDescription / Example
startPositive integerCauses the webserver module to begin the client manifests at the given number of seconds from the start of the media. The webserver module will look for the closest segment boundary, so sometimes, the player may start just before the requested time. For a more precise start time, use fragment_duration in conjunction with start.

Example:
http://mmd-od-server.com/path/to/content/manifest.mpd?start=150

Be sure not to pass a start value that is greater than the actual video duration time.
endPositive integerCauses the webserver module to end client manifests at the given number of seconds from the start of the media. The webserver module will look for the closest segment boundary, so sometimes, the player may end just after the requested time. For a more precise end time, use fragment_duration in conjunction with end.

Example:
http://mmd-od-server.com/path/to/content/manifest.mpd?end=450
tDelimited list of positive integersCauses the webserver module to start, and end-client manifests at the given number of seconds from the start of the media. The webserver module will look for the closest segment boundary, so sometimes, the player may start just before or end just after the requested time. For more precise start and end times, use fragment_duration in conjunction with t.

Example:
http://mmd-od-server.com/path/to/content/manifest.mpd?t=100;450

You can use any non-numeric character for a delimiter, such as a comma or a semicolon.
fragment_durationPositive integerWhen fragment_duration is provided, it causes the target duration of the generated segments to be as close to the specified fragment_duration as possible, depending on the source media’s keyframe frequency. Duration is designated in milliseconds and has the minimum and maximum values of:

minimum - 2000

maximum - 10000

Example:
http://mmd-od-server.com/path/to/content/manifest.mpd?fragment_duration=6000

Supported and Unsupported Input Formats for Timing Parameters

ParametersSupported Input FormatsUnsupported Input Formats
start, end, tism, smil, mp4, ismvismd, csmil, ismc, ts

Note also that the end parameter is not supported for ism + HDS (Adobe HTTP Dynamic Streaming)
fragment_durationismd, csmilism, ismc, smil, ts, mp4, ismv

Ordering Parameters

NameType / FormatDescription / Example
sort_tracksStringCauses the order of the renditions in the client manifest to be determined by the value of the query parameter. If you don’t provide sort_tracks or if the value is invalid, the order of the renditions in the client manifest will be determined by the ordering of the server manifest.

sort_tracks=inc - Renditions will be ordered from lowest bitrate to highest bitrate

sort_tracks=dec - Renditions will be ordered from highest bitrate to lowest bitrate

Example:

http://mmd-od-server.com/path/to/content/manifest.mpd?
sort_tracks=inc
start_indexPositive integer, zero-basedCauses the rendition at the specified index to be moved to the top of the rendition list. The remaining renditions will be unaffected. If you provide sort_tracks in conjunction with start_index, the start_index priority will be applied after the renditions are ordered. The index is zero-based.

Example:

http://mmd-od-server.com/path/to/content/manifest.mpd?
start_index=3

Filter Parameters

NameType / FormatDescription / Example
hls_no_audio_onlybooleanCauses the webserver module to exclude audio-only renditions from an HLS client manifest (m3u8).

Example:

http://ics-server.com/path/to/content/manifest.m3u8?
hls_no_audio_only=true
max_bitrateintegerCauses the webserver module to exclude from the client manifest any rendition with a system bitrate greater than the specified value.

Example:
http://ics-server.com/path/to/content/manifest.mpd?
max_bitrate=2000000
min_bitrateintegerCauses the webserver module to exclude from the client manifest any rendition with a system bitrate less than the specified value.

Example:

http://ics-server.com/path/to/content/manifest.mpd?
min_bitrate=96000
trackscomma-delimited stringsAllows the caller to filter the renditions in the client manifest by track name.

Causes the webserver module to exclude from the client manifest any track name in the server manifest that does not match one of the supplied values.

Example:
http://ics-server.com/path/to/content/manifest.mpd?
tracks=video,audio
filterregular expression (regex)Determines which tracks in the server manifest file will be added to the client manifest file. When the regex evaluates to true, the track is added to the client manifest file. The appropriate tags must be present in the manifest to filter against a field.

Usage
The filter expression is passed as a query parameter (?filter=) and must be properly escaped (preferably using a standard function from your favorite framework).
When testing the URL with a command-line tool like cURL, you must consider the escaping rules for your command-line.

For example, for cURL, the ’&’ needs to be escaped in the bash shell:

cURL -v 'http://ics-server/a319/test/usp/smil/
multi_b.smil/manifest.m3u8?filter=(systemBitrate<1024000%26%26type=="video")'

Simply examining the client manifest file can be misleading; the expression filtered for may be present but absent in the server manifest. For example, this sample adds the MaxWidth parameter to a video track in the server manifest:

<video src='mp4:clock-low.mp4'
systemBitrate='400000'
title='360p' width='480' height='360'>
<param name="MaxWidth" value="480"
valueType="data" />
</video>


See also:

Track Variable Names for the filter Parameter

Filter Parameter Samples

Track Variable Names for the filter Parameter

The following variables may be used in the filter parameter.
Variable NameType/DescriptionExample
AudioTagnumber

The format tag of the audio
curl 'http://mymmdod.llnds.net/component/ism/m2.ism/
manifest?filter=(type==%22audio%22%26%26AudioTag==255)'
avc_levelnumber

The AVC level
curl 'http://mymmdod.llnds.net/component/ism/m2.ism/
manifest.m3u8?filter=(type=="video"%26%26avc_level>=30)'
avc_profileconstant

The AVC profile: AVC_PROFILE_BASELINE,
AVC_PROFILE_MAIN,
AVC_PROFILE_HIGH
curl 'http://mymmdod.llnds.net/component/ism/m2.ism/
manifest?filter=(type==%22video%22%26%26avc_
profile==AVC\_PROFILE\_MAIN)'
BitsPerSamplenumber

The resolution of the audio samples
curl 'http://mymmdod.llnds.net/component/ism/m2.ism/
manifest?filter=(type==%22audio%22%26%26BitsPerSample==16)'
channelsnumber

The number of audio channels
curl 'http://mymmdod.llnds.net/component/ism/
m2.ism/manifest.m3u8?filter=
(type=="audio"%26%26channels==2)%7C%7C(type=="video")'
DisplayHeightnumber

The display height (in pixels)
curl 'http://mymmdod.llnds.net/component/ism/m2.ism/
manifest?filter=(type==%22video%22%26%26DisplayHeight==360)'
DisplayWidthnumber

The display width (in pixels)
curl 'http://mymmdod.llnds.net/component/ism/m2.ism/
manifest.m3u8?filter=(type=="audio"%7C%7CDisplayWidth>500)'
FourCCstring

The FourCC code of the track: AVC1, AACL,
TTML, JPEG, dtse, ac-3, hvc1
curl http://mymmdod.llnds.net/component/ism/m2.ism/
manifest.m3u8?filter=(FourCC=="AVC1")

curl 'http://mymmdod.llnds.net/component/ism/m2.ism/
manifest.m3u8?filter=(FourCC=="AACL")'
Maxheightnumber

The coded height (in pixels)
curl'http://mymmdod.llnds.net/component/ism/m2.ism/
manifest.m3u8? <br />filter=(type=="video"%26%26Maxheight==480)'
MaxWidthnumber

The coded width (in pixels)
curl 'http://mymmdod.llnds.net/component/ism/m2.ism/
manifest.m3u8?filter=(type=="video"%26%26MaxWidth==480)'
SamplingRatenumber

Audio sampling rate (in Hz)
curl 'http://mymmdod.llnds.net/component/ism/m2.ism/
manifest.m3u8?
filter=(type=="audio"%26%26SamplingRate==44100)'
systemBitratenumber

System bitrate in Kbps
curl 'http://mymmdod.llnds.net/usp/smil/multi_b.smil/manifest.m3u8?filter=(systemBitrate<1024000%26%26type=="video")'
systemLanguagestring

3-character language code
curl http://mymmdod.llnds.net/usp/smil/
multi_b.smil/manifest.m3u8?filter=(systemBitrate<1024000%26%26systemLanguge=="eng")
TimeScalenumber

The timescale
curl 'http://mymmdod.llnds.net/component/ism/m2.ism/
manifest.m3u8?
filter=(TimeScale!=1000)'
trackIDnumber

Track ID
curl "http://mymmdod.llnds.net/component/ism/m2.ism/
manifest.m3u8?filter=(trackID==2)"
tracknamestring

Track name
curl 'http://mymmdod.llnds.net/component/ism/m2.ism/
manifest.m3u8?filter=(trackname=="audio")'
typestring

The type of the track:

audio, video, textstream, data
curl 'http://mymmdod.llnds.net/usp/smil/
1video_2audio.smil/manifest.m3u8?filter=(type=="video")'

curl 'http://mymmdod.llnds.net/usp/smil/
1video_2audio.smil/

filter Parameter Samples

The following examples explain which tracks from the server manifest file will be added to the client manifest file.
Filter ExpressionDescription
trueAdds all tracks.
type != “video” | systemBitrate < 400000Adds all tracks where the video tracks must be at least 400 Kbps.
systemLanguage == “eng”Adds only audio/video/text tracks with the English language.
FourCC != “AVC1” |
AVC_PROFILE == AVC_PROFILE_BASELINE
Adds all tracks where the video tracks must use the BASELINE profile.
(FourCC == “AACL” && SamplingRate == 48000) |
(FourCC == “AVC1” && AVC_LEVEL >= 31)
Adds all AAC audio tracks with a SamplingRate of 48KHz and all AVC video tracks with a minimum of 3.1.

Other Parameters

NameType / FormatDescription / Example
base_pathStringAbsolute path (and protocol) to the HLS content on the customer origin.

Causes the HLS client manifest to use the base_path parameter value as the absolute path to the HLS content on the customer origin. The protocol used for the initial request must match the protocol provided in the base_path value. For example, when base_path is provided, and HTTPS is the protocol used to access the client manifest, “HTTPS” should be the base_path protocol.

Example:
http://mmd-od-server.com/path/to/content/manifest.mpd?base_path=HTTP
hls_client_manifest_versionInteger in the range 1 through 7The optional output protocol version of the HLS client manifest (.m3u8) file.

Defaults to 1, which specifies protocol version 1.

Example:
http://mmd-od-server.com/path/to/content/manifest.mpd?hls_client_manifest=1

Two values to note are:
1: Causes the client manifest rendition order to mirror the order in the server manifest.

7: (default value): causes audio tracks always to be placed in the middle of the client manifest.

For additional information, see this Apple Technical Q&A Website that explains the EXT-X-VERSION tag.