19 September 2019
Ad_break enhancement
Added different marker types for <ad_break /> parameter for advanced_hls, fmp4_hls, and advanced_fmp4 (HLS manifest) output formats.
<?xml version="1.0"?>
<query>
<userid><<id>></userid> <!-- required-->
<userkey><<key>></userkey> <!-- required-->
<action>[Action]</action> <!-- required-->
<format>
<output>[advanced_hls|fmp4_hls|advanced_fmp4]</output>
<!-- multiple ad_breaks may be included -->
<ad_break>
<start>[StartTime]</start>
<end>[EndTime]</end>
<duration>[BreakDuration]</duration>
<drop_segments>[yes|no]</drop_segments>
<marker_type>[MarkerType]</marker_type>
<id>[BreakID]</id>
</ad_break>
<ad_break>
<!-- ad_break params -->
</ad_break>
<!-- multiple cue_inserts may be included -->
<cue_insert>
<start>[StartTime]</start>
<end>[EndTime]</end>
<duration>[BreakDuration]</duration>
<drop_segments>[yes|no]</drop_segments>
<marker_type>[MarkerType]</marker_type>
<id>[BreakID]</id>
</cue_insert>
<cue_insert>
<!-- cue_insert params -->
</cue_insert>
</format>
</query>
{
"query": {
"userid": "<<id>>",
"userkey": "<<key>>",
"action": "[Action]",
"format": {
"output": "[advanced_hls|fmp4_hls|advanced_fmp4]",
"ad_break": [
{
"start": "[StartTime]",
"end": "[EndTime]",
"duration": "[BreakDuration]",
"drop_segments": "[yes|no]",
"marker_type": "[MarkerType]",
"id": "[BreakID]"
}
],
"cue_insert": [
{
"start": "[StartTime]",
"end": "[EndTime]",
"duration": "[BreakDuration]",
"drop_segments": "[yes|no]",
"marker_type": "[MarkerType]",
"id": "[BreakID]"
}
]
}
}
}
SCTE35 creditsFor SCTE35 opening and closing credits, you can use <cue_insert /> parameter block. It has the same sub-parameters as <ad_break /> except <marker_type/>.
Parameter | Description | Allowed Values | Default Values |
---|---|---|---|
| Break Marker Type |
| cue-out-in |
|
| scte35-opening-credit | |
id | Marker ID attribute | Valid string | None |
start | Place cue IN marker in it's value position of HLS manifest |
| None |
end | Place cue OUT marker in it's value position of HLS manifest |
| None |
duration | Specify the break duration in seconds. |
| None |
For duration and end parametersIf
parameter is specified will be ignored.
Manifest examples
Parameter | Value |
---|---|
id | 103038 |
start | 1322 |
duration | 195 |
drop_segments | yes |
#EXTM3U
#EXT-X-TARGETDURATION:6
#EXT-X-VERSION:7
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
...
#EXT-X-DISCONTINUITY
#EXT-X-CUE-OUT:DURATION=195.000,BREAKID=103038
...
#EXT-X-CUE-OUT-CONT:6.008/195.000
...
#EXT-X-CUE-IN
...
#EXT-X-ENDLIST
#EXTM3U
#EXT-X-TARGETDURATION:6
#EXT-X-VERSION:7
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
...
#EXT-X-DISCONTINUITY
#EXT-X-SCTE35:CUE="/DAlAAAAAAAAAP/wFAUAAZJ+f+/+AAAAAH4BC8qwAAAAAAAAYX3uzw==",ID="103038"
...
#EXT-X-SCTE35:CUE="/DAgAAAAAAAAAP/wDwUAAZJ+f0/+AAAAAAAAAAAAAI6soYY=",ID="103038"
...
#EXT-X-ENDLIST
#EXTM3U
#EXT-X-TARGETDURATION:6
#EXT-X-VERSION:7
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
...
#EXT-X-DISCONTINUITY
#EXT-X-CUE:TYPE="SpliceOut",ID=103038,TIME=887853233700,DURATION=195.000
...
#EXT-X-CUE:TYPE="SpliceOut",ID=103038,TIME=887853233700,DURATION=195.000,ELAPSED=6.008,CAID=eyJjdWVUeXBlIjoic3RhbmRhcmQiLCJrZXkiOiIiLCJ2YWx1ZSI6IiJ9
...
#EXT-X-ENDLIST
#EXTM3U
#EXT-X-TARGETDURATION:6
#EXT-X-VERSION:7
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
...
#EXT-X-DISCONTINUITY
#EXT-X-DATERANGE:ID="103038",START-DATE="2019-01T00:15:00Z\",DURATION=195.000,SCTE35-OUT=0xfc302500000000000000fff014050001927e7feffe000000007e010bcab0000000000000617dee
...
#EXT-X-DATERANGE:ID="103038",START-DATE="2019-01T00:15:00Z\",SCTE35-IN=0xfc302000000000000000fff00f050001927e7f4ffe000000000000000000008eaca186
...
#EXT-X-ENDLIST
Media request metadata
Added new parameter for AddMedia requests.
To pass custom data from AddMedia request to GetStatus response or Notifications you can add parameter to the
Request
<?xml version="1.0"?>
<query>
<userid><<id>></userid>
<userkey><<key>></userkey>
<action>[AddMedia|AddMediaBenchmark]</action>
<meta>Some random data</meta>
</query>
{
"query": {
"userid": "<<id>>",
"userkey": "<<key>>",
"action": "[AddMedia|AddMediaBenchmark]",
"meta": "Some random data"
}
}
<?xml version="1.0"?>
<query>
<userid><<id>></userid>
<userkey><<key>></userkey>
<action>[AddMedia|AddMediaBenchmark]</action>
<meta>
<a>1</a>
<b>2</b>
</meta>
</query>
{
"query": {
"userid": "<<id>>",
"userkey": "<<key>>",
"action": "[AddMedia|AddMediaBenchmark]",
"meta": {
"a": "1"
"b": "2"
}
}
}
<?xml version="1.0"?>
<query>
<userid><<id>></userid>
<userkey><<key>></userkey>
<action>[AddMedia|AddMediaBenchmark]</action>
<meta>foo</meta>
<meta>
<bar>baz</bar>
</meta>
</query>
{
"query": {
"userid": "<<id>>",
"userkey": "<<key>>",
"action": "[AddMedia|AddMediaBenchmark]",
"meta": [
"foo",
{"bar": "baz"}
]
}
}
GetStatus Response
<?xml version="1.0"?>
<response>
<id>[MediaID]</id>
<userid><<id>></userid>
<sourcefile>[SourceFile]</sourcefile>
<status>[MediaStatus]</status>
<!-- ... -->
<meta>Some random data</meta>
</response>
{
"response": {
"id": "[MediaID]",
"userid": "<<id>>",
"sourcefile": "[SourceFile]",
"status": "[MediaStatus]",
"meta": "Some random data"
}
}
<?xml version="1.0"?>
<response>
<id>[MediaID]</id>
<userid><<id>></userid>
<sourcefile>[SourceFile]</sourcefile>
<status>[MediaStatus]</status>
<!-- ... -->
<meta>
<a>1</a>
<b>2</b>
</meta>
</response>
{
"response": {
"id": "[MediaID]",
"userid": "<<id>>",
"sourcefile": "[SourceFile]",
"status": "[MediaStatus]",
"meta": {
"a": "1"
"b": "2"
}
}
}
<?xml version="1.0"?>
<response>
<id>[MediaID]</id>
<userid><<id>></userid>
<sourcefile>[SourceFile]</sourcefile>
<status>[MediaStatus]</status>
<!-- ... -->
<meta>foo</meta>
<meta>
<bar>baz</bar>
</meta>
</response>
{
"response": {
"id": "[MediaID]",
"userid": "<<id>>",
"sourcefile": "[SourceFile]",
"status": "[MediaStatus]",
"meta": [
"foo",
{"bar": "baz"}
]
}
}
HTTP Notification Body
<?xml version="1.0"?>
<result>
<id>[MediaID]</id>
<userid><<id>></userid>
<sourcefile>[SourceFile]</sourcefile>
<status>[MediaStatus]</status>
<!-- ... -->
<meta>Some random data</meta>
</result>
{
"result": {
"id": "[MediaID]",
"userid": "<<id>>",
"sourcefile": "[SourceFile]",
"status": "[MediaStatus]",
"meta": "Some random data"
}
}
<?xml version="1.0"?>
<result>
<id>[MediaID]</id>
<userid><<id>></userid>
<sourcefile>[SourceFile]</sourcefile>
<status>[MediaStatus]</status>
<!-- ... -->
<meta>
<a>1</a>
<b>2</b>
</meta>
</result>
{
"result": {
"id": "[MediaID]",
"userid": "<<id>>",
"sourcefile": "[SourceFile]",
"status": "[MediaStatus]",
"meta": {
"a": "1"
"b": "2"
}
}
}
<?xml version="1.0"?>
<result>
<id>[MediaID]</id>
<userid><<id>></userid>
<sourcefile>[SourceFile]</sourcefile>
<status>[MediaStatus]</status>
<!-- ... -->
<meta>foo</meta>
<meta>
<bar>baz</bar>
</meta>
</result>
{
"result": {
"id": "[MediaID]",
"userid": "<<id>>",
"sourcefile": "[SourceFile]",
"status": "[MediaStatus]",
"meta": [
"foo",
{"bar": "baz"}
]
}
}
Email Notification Body
...
Media ID: [MediaID]
Source file: [SourceFile]
Status: [MediaStatus]
Meta: Some random data
...
Media ID: [MediaID]
Source file: [SourceFile]
Status: [MediaStatus]
Meta: {
"a": "1"
"b": "2"
}
...
Media ID: [MediaID]
Source file: [SourceFile]
Status: [MediaStatus]
Meta: [
"foo",
{"bar": "baz"}
]
Advanced_fmp4 fragment duration
Added option to customize fragment duration for advanced_fmp4 output format.
<?xml version="1.0"?>
<query>
<userid><<id>></userid> <!-- required-->
<userkey><<key>></userkey> <!-- required-->
<action>[Action]</action> <!-- required-->
<format>
<output>advanced_fmp4</output>
<fragment_duration>[Duration]</fragment_duration>
</format>
</query>
{
"query": {
"userid": "<<id>>",
"userkey": "<<key>>",
"action": "[Action]",
"format": {
"output": "advanced_fmp4",
"fragment_duration": "[Duration]"
}
}
}
Parameter | Description | Available Values | Default Value |
---|---|---|---|
fragment_duration | fMP4 fragment duration in seconds | Positive integer number | equals to <segment_duration /> |
For fragment_duration parameter<fragment_duration /> parameter available only for advanced_fmp4 output format.