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
Name | Type / Format | Description / Example |
---|---|---|
start | Positive integer | Causes 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. |
end | Positive integer | Causes 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 |
t | Delimited list of positive integers | Causes 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_duration | Positive integer | When 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
Parameters | Supported Input Formats | Unsupported Input Formats |
---|---|---|
start, end, t | ism, smil, mp4, ismv | ismd, csmil, ismc, ts Note also that the end parameter is not supported for ism + HDS (Adobe HTTP Dynamic Streaming) |
fragment_duration | ismd, csmil | ism, ismc, smil, ts, mp4, ismv |
Ordering Parameters
Name | Type / Format | Description / Example |
---|---|---|
sort_tracks | String | Causes 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 bitratesort_tracks=dec - Renditions will be ordered from highest bitrate to lowest bitrateExample: http://mmd-od-server.com/path/to/content/manifest.mpd? sort_tracks=inc |
start_index | Positive integer, zero-based | Causes 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
Name | Type / Format | Description / Example |
---|---|---|
hls_no_audio_only | boolean | Causes 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_bitrate | integer | Causes 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_bitrate | integer | Causes 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 |
tracks | comma-delimited strings | Allows 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 |
filter | regular 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 Name | Type/Description | Example |
---|---|---|
AudioTag | number The format tag of the audio | curl 'http://mymmdod.llnds.net/component/ism/m2.ism/ manifest?filter=(type==%22audio%22%26%26AudioTag==255)' |
avc_level | number The AVC level | curl 'http://mymmdod.llnds.net/component/ism/m2.ism/ manifest.m3u8?filter=(type=="video"%26%26avc_level>=30)' |
avc_profile | constant 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)' |
BitsPerSample | number The resolution of the audio samples | curl 'http://mymmdod.llnds.net/component/ism/m2.ism/ manifest?filter=(type==%22audio%22%26%26BitsPerSample==16)' |
channels | number 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")' |
DisplayHeight | number The display height (in pixels) | curl 'http://mymmdod.llnds.net/component/ism/m2.ism/ manifest?filter=(type==%22video%22%26%26DisplayHeight==360)' |
DisplayWidth | number The display width (in pixels) | curl 'http://mymmdod.llnds.net/component/ism/m2.ism/ manifest.m3u8?filter=(type=="audio"%7C%7CDisplayWidth>500)' |
FourCC | string 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")' |
Maxheight | number The coded height (in pixels) | curl'http://mymmdod.llnds.net/component/ism/m2.ism/ manifest.m3u8? <br />filter=(type=="video"%26%26Maxheight==480)' |
MaxWidth | number The coded width (in pixels) | curl 'http://mymmdod.llnds.net/component/ism/m2.ism/ manifest.m3u8?filter=(type=="video"%26%26MaxWidth==480)' |
SamplingRate | number Audio sampling rate (in Hz) | curl 'http://mymmdod.llnds.net/component/ism/m2.ism/ manifest.m3u8? filter=(type=="audio"%26%26SamplingRate==44100)' |
systemBitrate | number System bitrate in Kbps | curl 'http://mymmdod.llnds.net/usp/smil/multi_b.smil/manifest.m3u8?filter=(systemBitrate<1024000%26%26type=="video")' |
systemLanguage | string 3-character language code | curl http://mymmdod.llnds.net/usp/smil/ multi_b.smil/manifest.m3u8?filter=(systemBitrate<1024000%26%26systemLanguge=="eng") |
TimeScale | number The timescale | curl 'http://mymmdod.llnds.net/component/ism/m2.ism/ manifest.m3u8? filter=(TimeScale!=1000)' |
trackID | number Track ID | curl "http://mymmdod.llnds.net/component/ism/m2.ism/ manifest.m3u8?filter=(trackID==2)" |
trackname | string Track name | curl 'http://mymmdod.llnds.net/component/ism/m2.ism/ manifest.m3u8?filter=(trackname=="audio")' |
type | string 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 Expression | Description |
---|---|
true | Adds all tracks. |
type != “video” | systemBitrate < 400000 | Adds 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
Name | Type / Format | Description / Example |
---|---|---|
base_path | String | Absolute 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_version | Integer in the range 1 through 7 | The 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. |