Channels
Channels represent a configuration between encoders, streaming servers, and the output URLs for the streaming. There is a large amount of configuration to these, and generally every client has a different setup.
Channel Object
A Channel object or response will contain the following:
{
"id": "221529f1-965a-4197-b38a-ebcbe16103b0",
"name": "Channel 01 (Example)",
"referenceId": "channel01",
"configurationJson": "{...}"
}
The configurationJson
property contains all of the configuration, and is the essential part.
ConfigurationJson
Example:
{
"encoders": [
{
"name": "FS CRW01 Channel01",
"raiseOnError": true,
"type": "MediaExcelHero",
"encoderSpecific": {
"heroApiUrlA": "http://10.196.50.49/hms/soapproxy.php",
"heroApiUrlB": "http://10.196.50.49/hms/soapproxy.php",
"heroChannelId": 830,
"heroDeviceId": 5,
"supportsContinousTimeStamp": true
},
"streamingServer": {
"type": "USP",
"streamingServerSpecific": {
"primaryPublishingPoint": {
"publishingpointUrl": "http://10.196.50.53:8080/live/fs/crw01
/ch01/channel1/live.isml",
"uspAPI": "http://80.169.3.216:9292",
"uspAPIKey": "dff32df7-59a3-49e1-ae02-976e342beb55",
"dvrWindowLength": 30,
"filePath": "/home/user/live/fs/crw01/ch01/channel1/"
},
"secondaryPublishingPoint": {
"publishingpointUrl": "",
"uspAPI": "",
"uspAPIKey": "",
"dvrWindowLength": 30,
"filePath": ""
}
}
},
"outputUrls": [
{
"streamProtocol": "HLS",
"liveCdnUrl": "http://cdn.channel1.vis.org/live.isml/live.m3u8",
"vodCdnUrl": "http://cdn.channel1.vis.org/vod.ism/vod.m3u8",
"liveOriginPrimaryUrl": "http://cc.vualto.org/live/fs/crw01
/ch01/channel1/live.isml/live.m3u8",
"vodOriginPrimaryUrl": "http://cc.vualto.org/live/fs/crw01
/ch01/channel1/vod.ism/vod.m3u8",
"liveOriginSecondaryUrl": "",
"vodOriginSecondaryUrl": ""
},
{
"streamProtocol": "DASH",
"liveCdnUrl": "http://cdn.channel1.vis.org/live.isml/live.mpd",
"vodCdnUrl": "http://cdn.channel1.vis.org/vod.ism/vod.mpd",
"liveOriginPrimaryUrl": "http://cc.vualto.org/live/fs/crw01
/ch01/channel1/live.isml/live.mpd",
"vodOriginPrimaryUrl": "http://cc.vualto.org/live/fs/crw01
/ch01/channel1/vod.ism/vod.mpd",
"liveOriginSecondaryUrl": "",
"vodOriginSecondaryUrl": ""
},
{
"streamProtocol": "HSS",
"liveCdnUrl": "http://cdn.channel1.vis.org/live.isml/Manifest",
"vodCdnUrl": "http://cdn.channel1.vis.org/vod.ism/Manifest",
"liveOriginPrimaryUrl": "http://cc.vualto.org/live/fs/crw01
/ch01/channel1/live.isml/Manifest",
"vodOriginPrimaryUrl": "http://cc.vualto.org/live/fs/crw01
/ch01/channel1/vod.ism/Manifest",
"liveOriginSecondaryUrl": "",
"vodOriginSecondaryUrl": ""
},
{
"streamProtocol": "DASH",
"liveCdnUrl": "http://cdn.channel1.vis.org/live.isml/live.f4m",
"vodCdnUrl": "http://cdn.channel1.vis.org/vod.ism/vod.f4m",
"liveOriginPrimaryUrl": "http://cc.vualto.org/live/fs/crw01
/ch01/channel1/live.isml/live.f4m",
"vodOriginPrimaryUrl": "http://cc.vualto.org/live/fs/crw01
/ch01/channel1/vod.ism/vod.f4m",
"liveOriginSecondaryUrl": "",
"vodOriginSecondaryUrl": ""
}
]
},
{
"name": "FS CHF01 Channel01",
"type": "MediaExcelHero",
"raiseOnError": false,
"encoderSpecific": {
"heroApiUrlA": "http://80.169.3.218:80/hms/soapproxy.php",
"heroApiUrlB": "http://80.169.3.219:80/hms/soapproxy.php",
"heroChannelId": 829,
"heroDeviceId": 5,
"supportsContinousTimeStamp": true
},
"streamingServer": {
"type": "USP",
"streamingServerSpecific": {
"primaryPublishingPoint": {
"publishingpointUrl": "http://10.196.50.54:8080/live/fs/chf01
/ch01/channel1/live.isml",
"uspAPI": "http://80.169.3.217:9292",
"uspAPIKey": "dff32df7-59a3-49e1-ae02-976e342beb55",
"dvrWindowLength": 30,
"filePath": "/home/user/live/fs/chf01/ch01/channel1/"
},
"secondaryPublishingPoint": {
"publishingpointUrl": "",
"uspAPI": "",
"uspAPIKey": "",
"dvrWindowLength": 30,
"filePath": ""
}
}
},
"outputUrls": [
{
"streamProtocol": "HLS",
"liveCdnUrl": "http://cdn.channel1.vis.org/live.isml/live.m3u8",
"vodCdnUrl": "http://cdn.channel1.vis.org/vod.ism/vod.m3u8",
"liveOriginPrimaryUrl": "http://cc.vualto.org/live/fs/chf01
/ch01/channel1/live.isml/live.m3u8",
"vodOriginPrimaryUrl": "http://cc.vualto.org/live/fs/chf01
/ch01/channel1/vod.ism/vod.m3u8",
"liveOriginSecondaryUrl": "",
"vodOriginSecondaryUrl": ""
},
{
"streamProtocol": "DASH",
"liveCdnUrl": "http://cdn.channel1.vis.org/live.isml/live.mpd",
"vodCdnUrl": "http://cdn.channel1.vis.org/vod.ism/vod.mpd",
"liveOriginPrimaryUrl": "http://cc.vualto.org/live/fs/chf01
/ch01/channel1/live.isml/live.mpd",
"vodOriginPrimaryUrl": "http://cc.vualto.org/live/fs/chf01
/ch01/channel1/vod.ism/vod.mpd",
"liveOriginSecondaryUrl": "",
"vodOriginSecondaryUrl": ""
},
{
"streamProtocol": "HSS",
"liveCdnUrl": "http://cdn.channel1.vis.org/live.isml/Manifest",
"vodCdnUrl": "http://cdn.channel1.vis.org/vod.ism/Manifest",
"liveOriginPrimaryUrl": "http://cc.vualto.org/live/fs/chf01
/ch01/channel1/live.isml/Manifest",
"vodOriginPrimaryUrl": "http://cc.vualto.org/live/fs/chf01
/ch01/channel1/vod.ism/Manifest",
"liveOriginSecondaryUrl": "",
"vodOriginSecondaryUrl": ""
},
{
"streamProtocol": "HDS",
"liveCdnUrl": "http://cdn.channel1.vis.org/live.isml/live.f4m",
"vodCdnUrl": "http://cdn.channel1.vis.org/vod.ism/vod.f4m",
"liveOriginPrimaryUrl": "http://cc.vualto.org/live/fs/chf01
/ch01/channel1/live.isml/live.f4m",
"vodOriginPrimaryUrl": "http://cc.vualto.org/live/fs/chf01
/ch01/channel1/vod.ism/vod.f4m",
"liveOriginSecondaryUrl": "",
"vodOriginSecondaryUrl": ""
}
]
}
]
}
Schema:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Channel Schema",
"description": "Channel Json",
"type": "object",
"properties": {
"encoders": {
"type": "array",
"items": {
"title": "encoder",
"type": "object",
"properties": {
"name": { "type": "string" },
"raiseOnError": { "type": "boolean" },
"sendEndOfStream": { "type": [ "boolean", "null" ] },
"type": {
"type": "string",
"enum": [
"FFMPEGWindows",
"FFMPEGLinux",
"ExpressionEncoder",
"MediaExcelHero",
"MediaExcelHeroV4",
"MediaExcelHeroV5",
"FMLE",
"CustomSource",
"AwsElemental",
"TitanLive",
"TitanMux",
"HarmonicNmx",
"Ceeblue"
]
},
"encoderSpecific": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/heroEncoders" },
{ "$ref": "#/definitions/customSource" },
{ "$ref": "#/definitions/awsElementalEncoders" },
{ "$ref": "#/definitions/titanLiveEncoders" },
{ "$ref": "#/definitions/titanMuxEncoders" },
{ "$ref": "#/definitions/harmonicNmxEncoders" },
{ "$ref": "#/definitions/ceeblueEncoders" }
]
},
"streamingServer": {
"title": "Streaming Servers",
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/streamingServers" }
]
},
"additionalStreamingServers": {
"type": "array",
"items": {
"title": "Other streaming servers",
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/streamingServers" }
]
}
},
"fileServer": {
"title": "file Server",
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"HERO"
]
},
"fileServerSpecific": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/heroFileServer" }
]
}
}
},
"otherOutputs": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/outputs" }
]
}
},
"outputUrls": {
"type": "array",
"items": {
"title": "stream",
"type": "object",
"anyOf": [
{ "$ref": "#/definitions/outputStreamLiveV1" },
{ "$ref": "#/definitions/outputStreamLiveV2" }
]
}
}
},
"required": [ "name", "type", "raiseOnError", "encoderSpecific", "streamingServer", "outputUrls" ]
}
},
"rampServers": {
"type": "array",
"items": {
"title": "rampServer",
"type": "object",
"properties": {
"serverAddress": { "type": "string" },
"apiKey": { "type": "string" },
"proxyPass": { "type": "string" },
"proxyPassEmpty": { "type": "string" },
"location": { "type": "string" },
"playerAddress": { "type": "string" }
},
"required": [ "serverAddress", "apiKey", "proxyPass", "location", "playerAddress" ]
}
},
"live2VodConfiguration": {
"title": "Live 2 VOD",
"type": "object",
"properties": {
"convertors": {
"type": "array",
"items": {
"title": "Convertors",
"type": "object",
"properties": {
"name": { "type": "string" },
"contentId": { "type": "string" },
"enabled": { "type": "boolean" },
"outputFolder": { "type": "string" },
"type": {
"type": "string",
"enum": [
"USP",
"Edgeware"
]
},
"convertorSpecific": {
"type": "object",
"anyOf": [
{ "$ref": "#/definitions/uspLive2Vod" },
{ "$ref": "#/definitions/edgewareLive2Vod" }
]
}
},
"required": [ "name", "contentId", "enabled", "type", "outputFolder", "convertorSpecific" ],
"additionalProperties": false
}
}
}
}
},
"required": [ "encoders" ],
"additionalProperties": false,
"definitions": {
"streamingServers": {
"properties": {
"type": {
"type": "string",
"enum": [
"USP",
"Edgeware",
"Wowza",
"MediaPackage"
]
},
"streamingServerSpecific": {
"type": "object",
"anyOf": [
{ "$ref": "#/definitions/uspLiveSchemaV1" },
{ "$ref": "#/definitions/uspLiveSchemaV2" },
{ "$ref": "#/definitions/wowza" },
{ "$ref": "#/definitions/edgewareLive" },
{ "$ref": "#/definitions/mediaPackage" }
]
}
}
},
"awsElementalEncoders": {
"properties": {
"accessKey": { "type": "string" },
"secretKey": { "type": "string" },
"region": { "type": "string" },
"channelId": { "type": [ "string", "null" ] },
"supportsContinuousTimeStamp": { "type": "boolean" },
"startTimeout": { "type:": "integer" },
"replaceSourceMethod": {
"type": [ "null", "string" ],
"enum": [ null, "NONE", "OVERLAY", "INPUT_SWITCH", "BLACKOUT_SLATE" ]
},
"inputResolution": {
"type": [ "null", "object" ],
"oneOf": [ { "$ref": "#/definitions/videoResolution" } ]
},
"inputs": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/inputs" }
]
}
},
"outputs": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/outputs" }
]
}
},
"imageOverlay": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/imageOverlay" }
]
},
"mediaConnectArns": {
"type": [ "null", "array" ],
"items": { "type": "string" }
},
"awsChannel": {
"type": [ "object", "null" ],
"properties": {
"channelTemplate": { "type": [ "string", "null" ] },
"inputSettings": {
"type": [ "array", "null" ],
"items": [
{
"type": "object",
"properties": {
"_mediaConnectFlows": {
"type": [ "array", "null" ],
"items": [
{
"type": "object",
"properties": {
"_tags": { "type": [ "object", "null" ] }
}
}
]
},
"_securityGroups": { "type": [ "array", "null" ] }
}
}
]
},
"channel": {
"type": [ "object", "null" ],
"properties": {
"name": { "type": "string" },
"channelClass": { "type": "string" }
},
"required": [ "name", "channelClass" ],
"additionalProperties": true
}
},
"required": [ "channel" ],
"additionalProperties": true
}
},
"required": [ "accessKey", "secretKey", "region", "supportsContinuousTimeStamp", "startTimeout" ],
"additionalProperties": false
},
"heroEncoders": {
"properties": {
"heroApiUrlA": { "type": "string" },
"heroApiUrlB": { "type": "string" },
"heraApiUrl": { "type": "string" },
"heroChannelId": { "type": [ "integer", "null" ] },
"heroDeviceId": { "type": [ "integer", "null" ] },
"heroDeviceName": { "type": [ "string", "null" ] },
"heroRoleId": { "type": [ "integer", "null" ] },
"startSleepDuration": { "type": "integer" },
"preStartSleepDuration": { "type": "integer" },
"supportsContinuousTimeStamp": { "type": "boolean" },
"audioChannelLimit": { "type:": "integer" },
"inputFormat1": { "type": "string" },
"inputFormat2": { "type": "string" },
"replaceSourceImage": { "type": [ "string", "null" ] },
"clipcastReloadPolicy": { "type": [ "integer", "null" ] },
"clipcastApiUrl": { "type": [ "string", "null" ] },
"clipcastDirectory": { "type": [ "string", "null" ] },
"heroChannel": { "type": [ "object", "null" ] },
"videoRouter": {
"type": "object",
"properties": {
"groupId": { "type": "integer" },
"inputPort": { "type": [ "integer", "string" ] },
"outputPort": { "type": [ "integer", "string" ] }
},
"required": [ "groupId", "inputPort", "outputPort" ],
"additionalProperties": false
},
"imageOverlay": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/imageOverlay" }
]
},
"inputs": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/inputs" }
]
}
},
"outputs": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/outputs" }
]
}
}
},
"required": [ "heroApiUrlA", "heroApiUrlB", "heroChannelId", "supportsContinuousTimeStamp" ],
"additionalProperties": false
},
"titanLiveEncoders": {
"properties": {
"apiUrl": { "type": "string" },
"apiPassword": { "type": "string" },
"serviceName": { "type": "string" },
"supportsContinuousTimeStamp": { "type": "boolean" },
"startSleepDuration": { "type": "integer" },
"preStartSleepDuration": { "type": "integer" },
"muxes": {
"type": "array",
"items": {
"title": "mux",
"type": "object",
"properties": {
"name": { "type": "string" },
"raiseOnError": { "type": "boolean" },
"sendEndOfStream": { "type": [ "boolean", "null" ] },
"type": {
"type": "string",
"enum": [
"TitanMux"
]
},
"encoderSpecific": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/titanMuxEncoders" }
]
}
},
"required": [ "name", "type", "raiseOnError", "encoderSpecific" ]
}
},
"inputs": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/inputs" }
]
}
},
"outputs": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/outputs" }
]
}
}
},
"required": [ "apiUrl", "apiPassword", "serviceName", "supportsContinuousTimeStamp" ],
"additionalProperties": false
},
"titanMuxEncoders": {
"properties": {
"apiUrl": { "type": "string" },
"apiPassword": { "type": "string" },
"serviceName": { "type": "string" },
"supportsContinuousTimeStamp": { "type": "boolean" },
"startSleepDuration": { "type": "integer" },
"preStartSleepDuration": { "type": "integer" },
"inputs": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/inputs" }
]
}
},
"outputs": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/outputs" }
]
}
}
},
"required": [ "apiUrl", "apiPassword", "serviceName", "supportsContinuousTimeStamp" ],
"additionalProperties": false
},
"harmonicNmxEncoders": {
"properties": {
"apiUrl": { "type": "string" },
"apiUsername": { "type": "string" },
"apiPassword": { "type": "string" },
"servicePlanId": { "type": "string" },
"outputTransportId": { "type": "string" },
"supportsContinuousTimeStamp": { "type": "boolean" },
"startSleepDuration": { "type": "integer" },
"preStartSleepDuration": { "type": "integer" },
"inputs": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/inputs" }
]
}
},
"outputs": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/outputs" }
]
}
}
},
"required": [ "apiUrl", "apiUsername", "apiPassword", "servicePlanId", "outputTransportId", "supportsContinuousTimeStamp" ],
"additionalProperties": false
},
"ceeblueEncoders": {
"properties": {
"apiUrl": { "type": "string" },
"apiUsername": { "type": "string" },
"apiPassword": { "type": "string" },
"locationIp": { "type": "string" },
"streamId": { "type": "string" },
"transcodeTracks": { "type": "array" },
"supportsContinuousTimeStamp": { "type": "boolean" },
"startSleepDuration": { "type": "integer" },
"preStartSleepDuration": { "type": "integer" },
"inputs": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/inputs" }
]
}
},
"outputs": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/outputs" }
]
}
}
},
"required": [ "apiUrl", "apiUsername", "apiPassword", "locationIp", "streamId", "transcodeTracks", "supportsContinuousTimeStamp" ],
"additionalProperties": false
},
"customSource": {
"properties": {
"supportsContinuousTimeStamp": { "type": "boolean" }
},
"required": [ "supportsContinuousTimeStamp" ],
"additionalProperties": false
},
"imageOverlay": {
"properties": {
"opacity": { "type": "integer" },
"heightMultiplier": { "type": [ "integer", "null" ] },
"height": { "type": [ "integer", "null" ] },
"yOffset": { "type": "integer" },
"xOffset": { "type": "integer" },
"widthMultiplier": { "type": [ "integer", "null" ] },
"width": { "type": [ "integer", "null" ] },
"overlayImage": { "type": [ "string", "null" ] },
"insertAtStart": { "type": "boolean" },
"insertAtStartProfile": { "type": [ "string", "null" ] },
"fadeInMs": { "type": [ "integer", "null" ] },
"durationMs": { "type": [ "integer", "null" ] },
"fadeOutMs": { "type": [ "integer", "null" ] }
},
"required": [ "opacity", "yOffset", "xOffset", "overlayImage", "insertAtStart" ],
"additionalProperties": false
},
"heroFileServer": {
"properties": {
"fileName": { "type": "string" },
"fileSuffix": { "type": "string" },
"fileType": { "type": "integer" },
"fileSaveControl": { "type": "integer" },
"fileNaming": { "type": "integer" },
"fileSizeUnit": { "type": "integer" },
"fileSize": { "type": "integer" }
},
"required": [ "fileName" ],
"additionalProperties": false
},
"uspLiveSchemaV1": {
"properties": {
"primaryPublishingPoint": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/uspLivePublishingPoint" }
]
},
"secondaryPublishingPoint": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/uspLivePublishingPoint" }
]
},
"tertiaryPublishingPoint": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/uspLivePublishingPoint" }
]
}
},
"required": [ "primaryPublishingPoint", "secondaryPublishingPoint" ],
"additionalProperties": false
},
"uspLiveSchemaV2": {
"properties": {
"publishingPoints": {
"type": "array",
"items": {
"title": "publishingPoints",
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/uspLivePublishingPoint" }
]
},
"required": [ "publishingPoints" ]
}
},
"additionalProperties": false
},
"uspLivePublishingPoint": {
"type": "object",
"properties": {
"publishingpointUrl": { "type": "string" },
"archiverCapturePublishingpointUrl": { "type": "string" },
"uspAPI": { "type": "string" },
"uspAPIKey": { "type": "string" },
"filePath": { "type": "string" },
"create": { "type": "boolean" },
"liveName": { "type": "string" },
"liveVuDrmName": { "type": "string" },
"id": { "type": "string" },
"name": { "type": "string" },
"statusCheckStrategy": {
"type": "string",
"enum": [ "ALL", "USP_ARCHIVE", "USP_API", "STATUS_PHP", "NONE" ]
},
"outputConfiguration": {
"type": "object",
"properties": {
"outputIndexMinimum": { "type": "integer" },
"outputIndexMaximum": { "type": "integer" },
"isPrimary": { "type": "boolean" }
}
}
},
"required": [ "publishingpointUrl", "uspAPI", "uspAPIKey", "filePath" ]
},
"edgewareLive": {
"type": "object",
"properties": {
"publishingPoints": {
"type": "array",
"items": {
"title": "publishingPoints",
"type": "object",
"properties": {
"configApiUrl": { "type": "string" },
"statsApiUrl": { "type": "string" },
"create": { "type": "boolean" },
"name": { "type": "string" },
"defaultConfig": { "type": "object" },
"statusCheckStrategy": {
"type": "string",
"enum": [ "ALL", "EDGEWARE_TIMESTAMP", "NONE" ]
}
},
"required": [ "defaultConfig", "configApiUrl", "statsApiUrl" ],
"additionalProperties": false
},
"required": [ "publishingPoints" ]
}
},
"additionalProperties": false
},
"mediaPackage": {
"type": "object",
"properties": {
"publishingPoints": {
"type": "array",
"items": {
"title": "publishingPoints",
"type": "object",
"properties": {
"create": { "type": "boolean" },
"id": { "type": "string" },
"name": { "type": "string" },
"manifestName": { "type": "string" },
"statusCheckStrategy": {
"type": "string",
"enum": [ "ALL", "NONE", "MEDIA_PACKAGE" ]
}
},
"required": [ "id" ],
"additionalProperties": false
},
"required": [ "publishingPoints" ]
}
},
"additionalProperties": false
},
"wowza": {
"properties": {
"primary": { "type": "boolean" },
"address": { "type": "string" },
"username": { "type": "string" },
"password": { "type": "string" },
"dynamicTargets": {
"type": "object",
"properties": {
"targetNameSuffix": { "type": "string" },
"sourceStreamPrefix": { "type": "string" },
"sourceAudioStartPid": { "type": "integer" },
"vhost": { "type": "string" },
"profile": { "type": "string" },
"serverName": { "type": "string" },
"mediaCasterType": { "type": "string" }
},
"required": [ "targetNameSuffix", "sourceStreamPrefix", "sourceAudioStartPid" ],
"additionalProperties": false
}
},
"required": [ "primary", "address", "username", "password" ],
"additionalProperties": true
},
"outputStreamLiveV1": {
"$comment": "Generic representation of OutputStreams with 'live' prefix.",
"properties": {
"streamProtocol": { "enum": [ "HLS", "HLSe", "HSS", "DASH", "HDS" ] },
"liveCdnPrimaryUrl": { "type": "string" },
"liveCdnSecondaryUrl": { "type": [ "string", "null" ] },
"liveOriginPrimaryUrl": { "type": "string" },
"liveOriginSecondaryUrl": { "type": [ "string", "null" ] },
"vudrmLiveCdnPrimaryUrl": { "type": [ "string", "null" ] }
},
"required": [ "streamProtocol", "liveCdnPrimaryUrl", "liveOriginPrimaryUrl" ],
"additionalProperties": false
},
"outputStreamLiveV2": {
"$comment": "Generic representation of OutputStreams wihtout 'live' prefix.",
"properties": {
"streamProtocol": { "enum": [ "HLS", "HLSe", "HSS", "DASH", "HDS" ] },
"cdnPrimaryUrl": { "type": "string" },
"cdnSecondaryUrl": { "type": [ "string", "null" ] },
"originPrimaryUrl": { "type": "string" },
"originSecondaryUrl": { "type": [ "string", "null" ] },
"vudrmLiveCdnPrimaryUrl": { "type": [ "string", "null" ] }
},
"required": [ "streamProtocol", "cdnPrimaryUrl", "originPrimaryUrl" ],
"additionalProperties": false
},
"inputs": {
"title": "Inputs",
"type": "object",
"properties": {
"name": { "type": "string" },
"type": {
"type": "string",
"enum": [
"UDP_RTP",
"RTP_PULL",
"RTMP",
"RTMP_PULL",
"SDI",
"FILE",
"SRT"
]
},
"inputSpecific": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/inputDefault" }
]
}
},
"required": [ "type", "inputSpecific" ],
"additionalProperties": false
},
"inputDefault": {
"properties": {
"address": { "type": "string" },
"displayAddress": { "type": "string" },
"id": { "type": "string" },
"additonalAddresses": {
"type": "array",
"items": {
"oneOf": [
{ "type": "string" }
]
}
}
},
"required": [ "address" ],
"additionalProperties": false
},
"outputs": {
"title": "Outputs",
"type": "object",
"properties": {
"name": { "type": "string" },
"type": {
"type": "string",
"enum": [
"TS_UDP_HLS",
"UDP_RTP",
"HTTP_MSS",
"HTTP_CMAF",
"RTMP",
"MEDIA_PACKAGE"
]
},
"outputSpecific": {
"type": "object",
"anyOf": [
{ "$ref": "#/definitions/outputDefault" }
]
}
},
"required": [ "type", "outputSpecific" ],
"additionalProperties": false
},
"outputDefault": {
"properties": {
"address": { "type": "string" },
"id": { "type": "string" },
"outputFormat": { "type": [ "string", "object" ] },
"outputConfiguration": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/outputConfiguration" }
]
}
},
"required": [ "address" ],
"additionalProperties": false
},
"outputHttpCmaf": {
"properties": {
"address": { "type": "string" },
"id": { "type": "string" },
"outputFormat": { "type": "string" },
"outputConfiguration": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/outputConfiguration" }
]
}
},
"required": [ "address" ],
"additionalProperties": false
},
"outputConfiguration": {
"properties": {
"outputIndexMinimum": { "type": "integer" },
"outputIndexMaximum": { "type": "integer" },
"isPrimary": { "type": "boolean" },
"audioOutputLimit": { "type": "integer" },
"audioStartPid": { "type": "integer" }
}
},
"uspLive2Vod": {
"title": "Live 2 VOD Configuration for USP",
"type": "object",
"properties": {
"frameAccurate": { "type": [ "boolean", "null" ] },
"copyTimestamps": { "type": [ "boolean", "null" ] },
"generateMp4": { "type": [ "boolean", "null" ] },
"mezzanine": { "type": [ "boolean", "null" ] },
"priority": { "type": [ "integer", "null" ] },
"thumbnailTime": { "type": [ "string", "null" ] },
"previewThumbnailsInterval": { "type": [ "integer", "null" ] },
"transDrmType": {
"type": "string",
"enum": [
"PASS_THROUGH",
"CLEAR",
"NEW_KEYS"
]
},
"filter": { "type": [ "string", "null" ] },
"sources": {
"type": "array",
"items": {
"title": "Sources",
"type": "string"
}
},
"previewThumbnailsBoundaries": {
"type": [ "null", "array" ],
"items": [
{
"type": "object",
"properties": {
"minimum": { "type": [ "null", "string" ] },
"maximum": { "type": [ "null", "string" ] },
"interval": { "type": "integer" }
},
"required": [ "interval" ]
}
]
}
},
"required": [ "frameAccurate", "copyTimestamps", "sources", "transDrmType" ],
"additionalProperties": false
},
"edgewareLive2Vod": {
"title": "Live 2 VOD Configuration for Edgeware",
"type": "object",
"properties": {
"sourceRateLimit": { "type": "integer" },
"channel": { "type": "string" },
"ingest": { "type": "string" }
},
"required": [ "sourceRateLimit", "channel", "ingest" ],
"additionalProperties": false
},
"videoResolution": {
"title": "Video Resolution",
"type": "object",
"properties": {
"width": { "type": "integer" },
"height": { "type": "integer" }
},
"required": [ "width", "height" ]
}
}
}
Supported Actions
POST /channel/
Add a Channel.
{
"id": "90b3e9c7-b304-479a-92c1-09ff4af001d5",
"name": "channel-name",
"referenceId": "reference-id-here",
"configurationJson": "{...}"
}
Response: 200 OK
PUT /channel/{id}
Update a Channel by Id.
This request is the same as the above, but with the Id in the route instead of the body.
Response: 200 OK
GET /channel/
Get all Channels.
Query Parameters:
Name | Type | Required | Description |
---|---|---|---|
noCache | bool | No | Whether or not to skip cache. Defaults to False. |
Response: 200 OK
and JSON array containing multiple Channel objects.
GET /channel/{id}
Get Channel by Id.
Query Parameters:
Name | Type | Required | Description |
---|---|---|---|
noCache | bool | No | Whether or not to skip cache. Defaults to False. |
Response:
200 OK
and JSON containing Channel object.
or
204 No Content
if no Channel exists with the given Id.
GET /channel/reference
Get Channel by Reference Id.
Query Parameters:
Name | Type | Required | Description |
---|---|---|---|
id | string | Yes | The reference ID. Must be percent-encoded. |
noCache | bool | No | Whether or not to skip cache. Defaults to False. |
Response:
200 OK
and JSON containing Channel object.
or
204 No Content
if no Channel exists with the given Id.
GET /channel/statistics/{id}
Get statistics for the Channel by Id. This can be used to get the ingest stream, check the encoder locks, and the encoding state.
Response:
200 OK
and JSON containing statistic information:
[
{
"stats": "{\"arn\":\"arn:aws:medialive:us-east-1:xxx:channel:xxx\",\"cdiInputSpecification\":null,\"channelClass\":{\"value\":\"SINGLE_PIPELINE\"},\"destinations\":[{\"id\":\"poc14-channel06-us-east-1-ml-OUTPUT-USP-A\",\"mediaPackageSettings\":[],\"multiplexSettings\":null,\"settings\":[{\"passwordParam\":null,\"streamName\":null,\"url\":\"http://10.196.59.8/live/72734ee8-412e-4369-9baf-c65146e4b262/live.isml\",\"username\":null}]},{\"id\":\"poc14-channel06-us-east-1-ml-OUTPUT-Wowza-A1\",\"mediaPackageSettings\":[],\"multiplexSettings\":null,\"settings\":[{\"passwordParam\":null,\"streamName\":\"poc14-channel06-us-east-1-ml\",\"url\":\"rtmp://10.196.56.224/live\",\"username\":null}]}],\"egressEndpoints\":[{\"sourceIp\":\"10.196.56.157\"}],\"encoderSettings\":{\"audioDescriptions\":[{\"audioNormalizationSettings\":null,\"audioSelectorName\":null}",
"isRunning": true,
"encodingState": 3,
"name": "poc14-channel06-us-east-1-ml",
"inputs": [
{
"inputType": 7,
"addresses": [
"srt://54.152.224.47:7390"
],
"name": "poc14-channel06-us-east-1-ml-INPUT-MEDIACONNECT",
"id": "8111463",
"displayAddress": "srt://54.152.224.47:7390",
"stats": "{\"input\":{\"arn\":\"arn:aws:medialive:us-east-1:xxx:input:xxx\",\"attachedChannels\":[\"4893379\"],\"destinations\":[],\"id\":\"8111463\",\"inputClass\":{\"value\":\"SINGLE_PIPELINE\"},\"inputDevices\":[],\"inputPartnerIds\":[],\"inputSourceType\":{\"value\":\"STATIC\"},\"mediaConnectFlows\":[{\"flowArn\":\"arn:aws:mediaconnect:us-east-1:xxx:flow:1-DwoFBgIPAwRVVVRS-17551db7a062:poc14-channel06-us-east-1-ml-MEDIACONNECT\"},{\"flowArn\":\"\"}],\"name\":\"poc14-channel06-us-east-1-ml-INPUT-MEDIACONNECT\",\"roleArn\":\"arn:aws:iam::xxx:role/MediaLiveAccessRole\",\"securityGroups\":[],\"sources\":[],\"state\":{\"value\":\"ATTACHED\"},\"tags\":{\"owner\":\"POC-MediaLive-User\",\"project\":\"jw-poc14\",\"product\":\"encoder\",\"24x7\":\"false\"},\"type\":{\"value\":\"MEDIACONNECT\"},\"responseMetadata\":{\"requestId\":\"d7d4f753-afb0-4ce0-acb2-22acc2a499b7\",\"metadata\":{},\"checksumAlgorithm\":0,\"checksumValidationStatus\":0},\"contentLength\":863,\"httpStatusCode\":200},\"flow\":{\"availabilityZone\":\"us-east-1a\",\"description\":\"SRT\",\"egressIp\":\"54.152.224.47\",\"entitlements\":[],\"flowArn\":\"arn:aws:mediaconnect:us-east-1:xxx:flow:1-DwoFBgIPAwRVVVRS-17551db7a062:poc14-channel06-us-east-1-ml-MEDIACONNECT\",\"maintenance\":null,\"mediaStreams\":[],\"name\":\"poc14-channel06-us-east-1-ml-MEDIACONNECT\",\"outputs\":[{\"bridgeArn\":null,\"bridgePorts\":[],\"dataTransferSubscriberFeePercent\":0,\"description\":\"Output created automatically by MediaLive for account xxx to input ARN arn:aws:medialive:us-east-1:xxx:input:xxx\",\"destination\":null,\"encryption\":null,\"entitlementArn\":null,\"listenerAddress\":null,\"mediaLiveInputArn\":\"arn:aws:medialive:us-east-1:xxx:input:xxx\",\"mediaStreamOutputConfigurations\":[],\"name\":\"MediaLive-5f9730410ab8\",\"outputArn\":\"arn:aws:mediaconnect:us-east-1:xxx:output:1-DwoFBgIPAwRVVVRS-17551db7a062:MediaLive-5f9730410ab8\",\"outputStatus\":{\"value\":\"ENABLED\"},\"port\":0,\"transport\":null,\"vpcInterfaceAttachment\":null}],\"source\":{\"dataTransferSubscriberFeePercent\":0,\"decryption\":null,\"description\":\"SRT\",\"entitlementArn\":null,\"gatewayBridgeSource\":null,\"ingestIp\":\"54.152.224.47\",\"ingestPort\":7390,\"mediaStreamSourceConfigurations\":[],\"name\":\"E27a50b197ab\",\"senderControlPort\":0,\"senderIpAddress\":null,\"sourceArn\":\"arn:aws:mediaconnect:us-east-1:xxx:source:1-DwoFBgIPAwRVVVRS-17551db7a062:E27a50b197ab\",\"transport\":{\"cidrAllowList\":[],\"maxBitrate\":80000000,\"maxLatency\":0,\"maxSyncBuffer\":0,\"minLatency\":2000,\"protocol\":{\"value\":\"srt-listener\"},\"remoteId\":null,\"senderControlPort\":0,\"senderIpAddress\":null,\"smoothingLatency\":0,\"sourceListenerAddress\":null,\"sourceListenerPort\":0,\"streamId\":null},\"vpcInterfaceName\":null,\"whitelistCidr\":\"0.0.0.0/0\"},\"sourceFailoverConfig\":null,\"sourceMonitoringConfig\":null,\"sources\":[{\"dataTransferSubscriberFeePercent\":0,\"decryption\":null,\"description\":\"SRT\",\"entitlementArn\":null,\"gatewayBridgeSource\":null,\"ingestIp\":\"54.152.224.47\",\"ingestPort\":7390,\"mediaStreamSourceConfigurations\":[],\"name\":\"E27a50b197ab\",\"senderControlPort\":0,\"senderIpAddress\":null,\"sourceArn\":\"arn:aws:mediaconnect:us-east-1:xxx:source:1-DwoFBgIPAwRVVVRS-17551db7a062:E27a50b197ab\",\"transport\":{\"cidrAllowList\":[],\"maxBitrate\":80000000,\"maxLatency\":0,\"maxSyncBuffer\":0,\"minLatency\":2000,\"protocol\":{\"value\":\"srt-listener\"},\"remoteId\":null,\"senderControlPort\":0,\"senderIpAddress\":null,\"smoothingLatency\":0,\"sourceListenerAddress\":null,\"sourceListenerPort\":0,\"streamId\":null},\"vpcInterfaceName\":null,\"whitelistCidr\":\"0.0.0.0/0\"}],\"status\":{\"value\":\"ACTIVE\"},\"vpcInterfaces\":[]},\"flowMediaInfo\":{\"programs\":[{\"pcrPid\":256,\"programName\":\"mpegts output\",\"programNumber\":1,\"programPid\":4096,\"streams\":[{\"channels\":0,\"codec\":\"H264\",\"frameRate\":\"30\",\"frameResolution\":{\"frameHeight\":720,\"frameWidth\":1280},\"pid\":256,\"sampleRate\":0,\"sampleSize\":0,\"streamType\":\"Video\"},{\"channels\":2,\"codec\":\"AAC\",\"frameRate\":null,\"frameResolution\":null,\"pid\":257,\"sampleRate\":48000,\"sampleSize\":16,\"streamType\":\"Audio\"}]}]}}"
}
],
"lockSummary": {
"eventId": "72734ee8-412e-4369-9baf-c65146e4b262",
"lockedAt": "2024-11-07T12:55:00Z"
}
}
]
Encoding States:
- None = 0 - this means no status was available.
- Idle = 1 - this means the encoder is not currently running but could be locked.
- Starting = 2
- Started = 3
- Stopping = 4
- Unreachable = 5 - this means the system failed to reach the encoder.
Notes:
- The
stats
value varies from encoder vendor and is not guarunteed to be a JSON object. - The
isRunning
property is deprecated and instead favour checking theencodingState
is “Started”. - The
lockSummary
object will be null for any channel not in use by the system. - Multiple statistic models are returned if the Channel contains multiple encoders and your integration should reflect this.
GET /channel/statistics/event/{id}
Get statistics for the Channel by Event ID. This can be used to get the ingest stream.
Response:
200 OK
and JSON containing statistic information*
or
204 No Content
if none are available.
*An example is shown below, but this varies between Encoder types.
[
{
"stats": "{\"arn\":\"arn:aws:medialive:us-east-1:xxx:channel:xxx\",\"cdiInputSpecification\":null,\"channelClass\":{\"value\":\"SINGLE_PIPELINE\"},\"destinations\":[{\"id\":\"poc14-channel06-us-east-1-ml-OUTPUT-USP-A\",\"mediaPackageSettings\":[],\"multiplexSettings\":null,\"settings\":[{\"passwordParam\":null,\"streamName\":null,\"url\":\"http://10.196.59.8/live/72734ee8-412e-4369-9baf-c65146e4b262/live.isml\",\"username\":null}]},{\"id\":\"poc14-channel06-us-east-1-ml-OUTPUT-Wowza-A1\",\"mediaPackageSettings\":[],\"multiplexSettings\":null,\"settings\":[{\"passwordParam\":null,\"streamName\":\"poc14-channel06-us-east-1-ml\",\"url\":\"rtmp://10.196.56.224/live\",\"username\":null}]}],\"egressEndpoints\":[{\"sourceIp\":\"10.196.56.157\"}],\"encoderSettings\":{\"audioDescriptions\":[{\"audioNormalizationSettings\":null,\"audioSelectorName\":null}",
"isRunning": true,
"encodingState": 3,
"name": "poc14-channel06-us-east-1-ml",
"inputs": [
{
"inputType": 7,
"addresses": [
"srt://54.152.224.47:7390"
],
"name": "poc14-channel06-us-east-1-ml-INPUT-MEDIACONNECT",
"id": "8111463",
"displayAddress": "srt://54.152.224.47:7390",
"stats": "{\"input\":{\"arn\":\"arn:aws:medialive:us-east-1:xxx:input:xxx\",\"attachedChannels\":[\"4893379\"],\"destinations\":[],\"id\":\"8111463\",\"inputClass\":{\"value\":\"SINGLE_PIPELINE\"},\"inputDevices\":[],\"inputPartnerIds\":[],\"inputSourceType\":{\"value\":\"STATIC\"},\"mediaConnectFlows\":[{\"flowArn\":\"arn:aws:mediaconnect:us-east-1:xxx:flow:1-DwoFBgIPAwRVVVRS-17551db7a062:poc14-channel06-us-east-1-ml-MEDIACONNECT\"},{\"flowArn\":\"\"}],\"name\":\"poc14-channel06-us-east-1-ml-INPUT-MEDIACONNECT\",\"roleArn\":\"arn:aws:iam::xxx:role/MediaLiveAccessRole\",\"securityGroups\":[],\"sources\":[],\"state\":{\"value\":\"ATTACHED\"},\"tags\":{\"owner\":\"POC-MediaLive-User\",\"project\":\"jw-poc14\",\"product\":\"encoder\",\"24x7\":\"false\"},\"type\":{\"value\":\"MEDIACONNECT\"},\"responseMetadata\":{\"requestId\":\"d7d4f753-afb0-4ce0-acb2-22acc2a499b7\",\"metadata\":{},\"checksumAlgorithm\":0,\"checksumValidationStatus\":0},\"contentLength\":863,\"httpStatusCode\":200},\"flow\":{\"availabilityZone\":\"us-east-1a\",\"description\":\"SRT\",\"egressIp\":\"54.152.224.47\",\"entitlements\":[],\"flowArn\":\"arn:aws:mediaconnect:us-east-1:xxx:flow:1-DwoFBgIPAwRVVVRS-17551db7a062:poc14-channel06-us-east-1-ml-MEDIACONNECT\",\"maintenance\":null,\"mediaStreams\":[],\"name\":\"poc14-channel06-us-east-1-ml-MEDIACONNECT\",\"outputs\":[{\"bridgeArn\":null,\"bridgePorts\":[],\"dataTransferSubscriberFeePercent\":0,\"description\":\"Output created automatically by MediaLive for account xxx to input ARN arn:aws:medialive:us-east-1:xxx:input:xxx\",\"destination\":null,\"encryption\":null,\"entitlementArn\":null,\"listenerAddress\":null,\"mediaLiveInputArn\":\"arn:aws:medialive:us-east-1:xxx:input:xxx\",\"mediaStreamOutputConfigurations\":[],\"name\":\"MediaLive-5f9730410ab8\",\"outputArn\":\"arn:aws:mediaconnect:us-east-1:xxx:output:1-DwoFBgIPAwRVVVRS-17551db7a062:MediaLive-5f9730410ab8\",\"outputStatus\":{\"value\":\"ENABLED\"},\"port\":0,\"transport\":null,\"vpcInterfaceAttachment\":null}],\"source\":{\"dataTransferSubscriberFeePercent\":0,\"decryption\":null,\"description\":\"SRT\",\"entitlementArn\":null,\"gatewayBridgeSource\":null,\"ingestIp\":\"54.152.224.47\",\"ingestPort\":7390,\"mediaStreamSourceConfigurations\":[],\"name\":\"E27a50b197ab\",\"senderControlPort\":0,\"senderIpAddress\":null,\"sourceArn\":\"arn:aws:mediaconnect:us-east-1:xxx:source:1-DwoFBgIPAwRVVVRS-17551db7a062:E27a50b197ab\",\"transport\":{\"cidrAllowList\":[],\"maxBitrate\":80000000,\"maxLatency\":0,\"maxSyncBuffer\":0,\"minLatency\":2000,\"protocol\":{\"value\":\"srt-listener\"},\"remoteId\":null,\"senderControlPort\":0,\"senderIpAddress\":null,\"smoothingLatency\":0,\"sourceListenerAddress\":null,\"sourceListenerPort\":0,\"streamId\":null},\"vpcInterfaceName\":null,\"whitelistCidr\":\"0.0.0.0/0\"},\"sourceFailoverConfig\":null,\"sourceMonitoringConfig\":null,\"sources\":[{\"dataTransferSubscriberFeePercent\":0,\"decryption\":null,\"description\":\"SRT\",\"entitlementArn\":null,\"gatewayBridgeSource\":null,\"ingestIp\":\"54.152.224.47\",\"ingestPort\":7390,\"mediaStreamSourceConfigurations\":[],\"name\":\"E27a50b197ab\",\"senderControlPort\":0,\"senderIpAddress\":null,\"sourceArn\":\"arn:aws:mediaconnect:us-east-1:xxx:source:1-DwoFBgIPAwRVVVRS-17551db7a062:E27a50b197ab\",\"transport\":{\"cidrAllowList\":[],\"maxBitrate\":80000000,\"maxLatency\":0,\"maxSyncBuffer\":0,\"minLatency\":2000,\"protocol\":{\"value\":\"srt-listener\"},\"remoteId\":null,\"senderControlPort\":0,\"senderIpAddress\":null,\"smoothingLatency\":0,\"sourceListenerAddress\":null,\"sourceListenerPort\":0,\"streamId\":null},\"vpcInterfaceName\":null,\"whitelistCidr\":\"0.0.0.0/0\"}],\"status\":{\"value\":\"ACTIVE\"},\"vpcInterfaces\":[]},\"flowMediaInfo\":{\"programs\":[{\"pcrPid\":256,\"programName\":\"mpegts output\",\"programNumber\":1,\"programPid\":4096,\"streams\":[{\"channels\":0,\"codec\":\"H264\",\"frameRate\":\"30\",\"frameResolution\":{\"frameHeight\":720,\"frameWidth\":1280},\"pid\":256,\"sampleRate\":0,\"sampleSize\":0,\"streamType\":\"Video\"},{\"channels\":2,\"codec\":\"AAC\",\"frameRate\":null,\"frameResolution\":null,\"pid\":257,\"sampleRate\":48000,\"sampleSize\":16,\"streamType\":\"Audio\"}]}]}}"
}
],
"lockSummary": {
"eventId": "72734ee8-412e-4369-9baf-c65146e4b262",
"lockedAt": "2024-11-07T12:55:00Z"
}
}
]
GET /channel/{id}/events/
Get any Event(s) which have the given Channel set.
Query Parameters:
Name | Type | Required | Description |
---|---|---|---|
pageSize | int | No | Number of results to fetch per Page. |
pageNumber | int | No | Number of the page to fetch. |
order | QueryOrder | No | The order to sort by, either ASC or DESC. Defaults to ASC. |
noCache | bool | No | Whether or not to skip cache. Defaults to False. |
Response: 200 OK
and the following JSON structure, where results
contains multiple Event objects.
{
"results": [],
"totalCount": 4,
"pageSize": 4
}
DELETE /channel/{id}
Delete a Channel by Id.
Response: 200 OK
or 204 No Content
if the ID was not found.