Live Playout Profiles
- Live Playout Profile object
- Origin Manifest Sync Result object
- Event Playout States
- Playout Profile configuration JSON
- Bad Request object
- Supported Actions
All POST
and PUT
calls require the Content-Type
header to be set to application/json
All actions require the appropriate Live Playout Profile feature permissions
Live Playout Profile object
Property | Type | Notes |
---|---|---|
id | GUID string | |
configurationJson | string | Escaped JSON |
name | string |
Origin Manifest Sync Result object
Property | Type | Notes |
---|---|---|
profileId | GUID | |
eventId | GUID | |
success | bool | |
errors | string[] |
Updating or deleting a Live Playout Profile will perform a sync operation for Events associated with the Profile where the Event’s state is any one of the Playout States.
The sync operation creates/updates/removes playout manifests on the origin server(s) specified in each Event’s Channel configuration.
Any actions which perform these operations return an array of Origin Manifest Sync Result objects, indicating which Profile/Event combinations had a sync operation performed and whether each operation succeeded or not.
Failure to sync origin manifests do not fail the request, and will still yield a 200 OK
status code to indicate that the data in the VIS successfully updated. Callers should check the response bodies of these requests to know about partial or total failures of these sync operations.
Event Playout States
LIVE_UNPUBLISHED
LIVE_PUBLISHED
STOPPED
SUSPENDED
INSTANT_VOD
INSTANT_VOD_BACKUP
These EventStates are considered “Playout States”, where the Publishing Point should exist for the Event on the origin server(s) specified in the Event’s Channel configuration.
When an Event transitions into any of these states, playout manifests are created on the origin server(s) for the collection of Live Playout Profiles associated with the Event.
When an Event is in any of these states, the playout manifests for the collection of associated Live Playout Profiles should exist on the origin server(s) and any updates to such Live Playout Profiles are reflected automatically in the playout manifests.
When an Event transitions out of these states, the playout manifests created for the associated Live Playout Profiles are automatically removed.
Playout Profile configuration JSON
This is an example using only DRM CENC and limiting the tracks available in the stream manifests.
{
"manifestFile": "/playout/pc01/{0}/cenc.isml",
"allowedPublishingPoints": [
"/live/pc01/{0}/{0}.isml"
],
"mp4splitOptions": "--archive_segment_length=600 --archiving=0 --dvr_window_length=30 --restart_on_encoder_reconnect --iss.disable --hds.disable --hls.disable",
"drm": {
"drm_provider": "VUALTO",
"drm_data": [
{
"name": "CENC"
}
]
},
"tracks": [
{
"kind": "video",
"criteria": {
"MaxWidth": 416,
"MaxHeight": 234
}
},
{
"kind": "video",
"criteria": {
"MaxWidth": 480,
"MaxHeight": 270
}
},
{
"kind": "video",
"criteria": {
"MaxWidth": 640,
"MaxHeight": 360
}
},
{
"kind": "video",
"criteria": {
"MaxWidth": 764,
"MaxHeight": 432
}
},
{
"kind": "video",
"criteria": {
"MaxWidth": 960,
"MaxHeight": 540
}
},
{
"kind": "audio"
},
{
"kind": "textstream"
}
],
"outputUrls": [
{
"streamProtocol": "DASH",
"liveCdnPrimaryUrl": "https://{CDN-Address}/playout/pc01/{0}/cenc.isml/.mpd",
"liveCdnSecondaryUrl": "https://{CDN-Address2}.vualto.com/playout/pc01/{0}/cenc.isml/.mpd",
"liveOriginPrimaryUrl": "https://{Origin1}.vualto.com/playout/pc01/{0}/cenc.isml/.mpd",
"liveOriginSecondaryUrl": "https://{Origin2}.vualto.com/playout/pc01/{0}/cenc.isml/.mpd"
}
]
}
Field | Description |
---|---|
manifestFile | The name of the server manifest file. This can be a relative or absolute path. |
allowedPublishingPoints | Targets specific publishing points. If not specified it will target all by default. |
mp4splitOptions | The parameters for MP4Split. |
drm | Configure the DRM settings. It uses the standard DRM JSON configuration. |
tracks | Configure the tracks available in the stream manifest. |
outputUrls | Configure the available output URLs to be returned via the API. |
DRM
At minimum if using DRM provided by Vualto you can specify like so. We also support other providers so please contact us if you want more information.
"drm": {
"drm_provider": "VUALTO"
}
If using another DRM provider not supported natively, you can specify the keys manually like so:
"drm": {
"drm_provider": "THIRDPARTY",
"drm_data": [
{
"key_id": "",
"key_iv": "",
"name": "CENC",
"content_id": "",
"playready_laurl": "",
"widevine_laurl": "",
"widevine_drmspecific": ""
},
{
"key_id": "",
"key_iv": "",
"name": "FAIRPLAY",
"laurl": "",
"ask": ""
}
]
}
Track Kind and Criteria properties
Kind
Field | Description |
---|---|
video | Specify that the Video tracks should be available. |
audio | Specify that the Audio tracks should be available. |
textstream | Specify that the text tracks should be available. e.g. Captions. |
Criteria
Specify no criteria to not filter.
Field | Description |
---|---|
MaxWidth | Filter by the Max Width. e.g. 640 |
MaxHeight | Filter by the Max Height. e.g. 360 |
systemBitrate | Filter by the bitrate in bps. e.g. 64000 |
FourCC | Filter by codec. e.g. AVC1, HEV1, AACH, AACL |
Bad Request object
Property | Type | Notes |
---|---|---|
message | string | Explanation of the error |
Supported Actions
GET /playoutprofile
Get all Live Playout Profiles, or all Live Playout Profile IDs if idsOnly=true
Query Parameters
Name | Type | Required |
---|---|---|
idsOnly | bool | No (default: false ) |
Responses
Scenario | Code | Body |
---|---|---|
idsOnly=false | 200 | Array of Live Playout Profile objects |
idsOnly=true | 200 | Array of GUID strings |
Example Request
/playoutprofile
Example Response
[
{
"id": "a782bfee-5609-40da-94b6-8e92295c8da4",
"configurationJson": "{\"manifestFile\":\"clear_profile.isml\", ...}"
"name": "Clear Profile"
},
{
"id": "053ee005-13ba-4278-b36a-c75c835cfb80",
"configurationJson": "{\"manifestFile\":\"drm_profile.isml\", ...}"
"name": "DRM Profile"
}
]
Example Request
/playoutprofile?idsOnly=true
Example Response
[
"a782bfee-5609-40da-94b6-8e92295c8da4",
"053ee005-13ba-4278-b36a-c75c835cfb80"
]
GET /playoutprofile/{id}
Get the Live Playout Profile with the specified ID
Responses
Scenario | Code | Body |
---|---|---|
Success | 200 | A Live Playout Profile object |
Invalid ID | 404 |
Example Request
/playoutprofile/24bd0ed9-bc1d-42c2-a111-824e18265514
Example Response
{
"id": "a782bfee-5609-40da-94b6-8e92295c8da4",
"configurationJson": "{\"manifestFile\":\"clear_profile.isml\", ...}"
"name": "Clear Profile"
}
GET /playoutprofile/{id}/events
Get the Events associated with the Live Playout Profile with the specified ID. Requires the Event Get permission.
Query Parameters
Name | Type | Required |
---|---|---|
idsOnly | bool | No (default: false ) |
Responses
Scenario | Code | Body |
---|---|---|
idsOnly=false | 200 | Array of Event objects |
idsOnly=true | 200 | Array of GUID strings |
Invalid ID | 404 |
Example Request
/playoutprofile/24bd0ed9-bc1d-42c2-a111-824e18265514/events
Example Response
See Event object
POST /playoutprofile
Add a new Live Playout Profile
Request Body
A Live Playout Profile object. Required properties: configurationJson
, name
. The id
property if specified is ignored.
Responses
Scenario | Code | Body |
---|---|---|
Success | 201 | The newly added Live Playout Profile object |
Missing or invalid properties | 400 | Bad Request object |
Example Request
/playoutprofile
{
"name": "My New Profile",
"configurationJson": "{\"manifestFile\":\"live_profile.isml\",\"outputUrls\":[{\"streamProtocol\":\"HLS\",\"liveCdnPrimaryUrl\":\"https://mycdn.net/live/{0}/live_profile.isml/.m3u8\", ... }]}"
}
Example Response
{
"id": "bc8d6a88-f7ea-44d5-903b-38b3f01c1c74",
"name": "My New Profile",
"configurationJson": "{\"manifestFile\":\"live_profile.isml\",\"outputUrls\":[{\"streamProtocol\":\"HLS\",\"liveCdnPrimaryUrl\":\"https://mycdn.net/live/{0}/live_profile.isml/.m3u8\", ... }]}"
}
PUT /playoutprofile/{id}
Update the Live Playout Profile with the specified ID. Any Events associated with the Profile which are in a playable state will have the playout manifest for the Profile updated on each Event Channel’s origin server(s).
Request Body
A Live Playout Profile object. Only include properties to update. id
is ignored.
Note that because configurationJson
is a string, it cannot be partially updated and the complete JSON object must be serialised.
Responses
Scenario | Code | Body |
---|---|---|
Success | 200 | Array of Origin Manifest Sync Result objects |
Invalid properties | 400 | Bad Request object |
Invalid ID | 404 |
Example Request
Update the Configuration JSON of a Playout Profile, keeping the existing Name
/playoutprofile/0eb38086-7f83-47a0-aefc-8d8cd7e9b5a7
{
"configurationJson": "{\"manifestFile\":\"updated_profile.isml\",\"outputUrls\":[{\"streamProtocol\":\"HLS\",\"liveCdnPrimaryUrl\":\"https://mycdn.net/live/{0}/live_profile.isml/.m3u8\", ... }]}"
}
Example Response
[
{
"profileId": "0eb38086-7f83-47a0-aefc-8d8cd7e9b5a7",
"eventId": "434628b6-054a-4786-bf2b-09b4bbb977e8",
"success": true
},
{
"profileId": "0eb38086-7f83-47a0-aefc-8d8cd7e9b5a7",
"eventId": "5f8e4481-33ce-4785-9974-9f16f10b2e66",
"success": false,
"errors": [
"Example error"
]
}
]
DELETE /playoutprofile/{id}
Remove the Live Playout Profile with the specified ID. Any Events associated with the Profile which are in a playable state will have the playout manifest for the Profile removed on each Event Channel’s origin server(s).
Responses
Scenario | Code | Body |
---|---|---|
Success | 200 | Array of Origin Manifest Sync Result objects |
Invalid ID | 404 |
Example Request
/playoutprofile/0eb38086-7f83-47a0-aefc-8d8cd7e9b5a7
Example Response
[
{
"profileId": "0eb38086-7f83-47a0-aefc-8d8cd7e9b5a7",
"eventId": "434628b6-054a-4786-bf2b-09b4bbb977e8",
"success": true
},
{
"profileId": "0eb38086-7f83-47a0-aefc-8d8cd7e9b5a7",
"eventId": "5f8e4481-33ce-4785-9974-9f16f10b2e66",
"success": false,
"errors": [
"Example error"
]
}
]