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 Json 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",
"FMLE",
"CustomSource",
"AwsElemental",
"TitanLive",
"TitanMux",
"HarmonicNmx"
]
},
"encoderSpecific": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/heroEncoders" },
{ "$ref": "#/definitions/customSource" },
{ "$ref": "#/definitions/awsElementalEncoders" },
{ "$ref": "#/definitions/titanLiveEncoders" },
{ "$ref": "#/definitions/titanMuxEncoders" },
{ "$ref": "#/definitions/harmonicNmxEncoders" }
]
},
"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/hlsLive" },
{ "$ref": "#/definitions/hlseLive" },
{ "$ref": "#/definitions/hssLive" },
{ "$ref": "#/definitions/dashLive" },
{ "$ref": "#/definitions/hdsLive" }
]
}
}
},
"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
}
}
}
}
},
"definitions": {
"streamingServers": {
"properties": {
"type": {
"type": "string",
"enum": [
"USP",
"Edgeware",
"Wowza"
]
},
"streamingServerSpecific": {
"type": "object",
"anyOf": [
{ "$ref": "#/definitions/uspLiveSchemaV1" },
{ "$ref": "#/definitions/uspLiveSchemaV2" },
{ "$ref": "#/definitions/wowza" },
{ "$ref": "#/definitions/edgewareLive" }
]
}
}
},
"awsElementalEncoders": {
"properties": {
"accessKey": { "type": "string" },
"secretKey": { "type": "string" },
"region": {
"type": "string",
"enum": [ "APNortheast1", "APNortheast2", "APSouth1", "APSoutheast1", "APSoutheast2", "CACentral1", "CNNorth1", "CNNorthWest1", "EUCentral1", "EUWest1", "EUWest2", "EUWest3", "SAEast1", "USEast1", "USEast2", "USGovCloudEast1", "USGovCloudWest1", "USWest1", "USWest2" ]
},
"channelId": { "type": "string" },
"supportsContinuousTimeStamp": { "type": "boolean" },
"startTimeout": { "type:": "integer" }
},
"required": [ "accessKey", "secretKey", "region", "channelId", "supportsContinuousTimeStamp", "startTimeout" ],
"additionalProperties": false
},
"heroEncoders": {
"properties": {
"heroApiUrlA": { "type": "string" },
"heroApiUrlB": { "type": "string" },
"heroChannelId": { "type": "integer" },
"startSleepDuration": { "type": "integer" },
"preStartSleepDuration": { "type": "integer" },
"heroDeviceId": { "type": "integer" },
"heroDeviceName": { "type": "string" },
"heroRoleId": { "type": "integer" },
"supportsContinuousTimeStamp": { "type": "boolean" },
"audioChannelLimit": { "type:": "integer" },
"inputFormat1": { "type": "string" },
"inputFormat2": { "type": "string" },
"replaceSourceImage": { "type": [ "string", "null" ] },
"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
},
"customSource": {
"properties": {
"supportsContinuousTimeStamp": { "type": "boolean" }
},
"required": [ "supportsContinuousTimeStamp" ],
"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
},
"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" }
},
"required": [ "targetNameSuffix", "sourceStreamPrefix", "sourceAudioStartPid" ],
"additionalProperties": false
}
},
"required": [ "primary", "address", "username", "password" ],
"additionalProperties": true
},
"hlsLive": {
"properties": {
"streamProtocol": { "enum": [ "HLS" ] },
"liveCdnPrimaryUrl": {
"type": "string"
},
"liveCdnSecondaryUrl": {
"type": "string"
},
"liveOriginPrimaryUrl": {
"type": "string"
},
"liveOriginSecondaryUrl": {
"type": "string"
},
"vudrmLiveCdnPrimaryUrl": {
"type": "string"
}
},
"required": [ "streamProtocol", "liveCdnPrimaryUrl", "liveOriginPrimaryUrl" ],
"additionalProperties": false
},
"hlseLive": {
"properties": {
"streamProtocol": { "enum": [ "HLSe" ] },
"liveCdnPrimaryUrl": {
"type": "string"
},
"liveCdnSecondaryUrl": {
"type": "string"
},
"liveOriginPrimaryUrl": {
"type": "string"
},
"liveOriginSecondaryUrl": {
"type": "string"
},
"vudrmLiveCdnPrimaryUrl": {
"type": "string"
}
},
"required": [ "streamProtocol", "liveCdnPrimaryUrl", "liveOriginPrimaryUrl" ],
"additionalProperties": false
},
"hssLive": {
"properties": {
"streamProtocol": { "enum": [ "HSS" ] },
"liveCdnPrimaryUrl": {
"type": "string"
},
"liveCdnSecondaryUrl": {
"type": "string"
},
"liveOriginPrimaryUrl": {
"type": "string"
},
"liveOriginSecondaryUrl": {
"type": "string"
},
"vudrmLiveCdnPrimaryUrl": {
"type": "string"
}
},
"required": [ "streamProtocol", "liveCdnPrimaryUrl", "liveOriginPrimaryUrl" ],
"additionalProperties": false
},
"dashLive": {
"properties": {
"streamProtocol": { "enum": [ "DASH" ] },
"liveCdnPrimaryUrl": {
"type": "string"
},
"liveCdnSecondaryUrl": {
"type": "string"
},
"liveOriginPrimaryUrl": {
"type": "string"
},
"liveOriginSecondaryUrl": {
"type": "string"
},
"vudrmLiveCdnPrimaryUrl": {
"type": "string"
}
},
"required": [ "streamProtocol", "liveCdnPrimaryUrl", "liveOriginPrimaryUrl" ],
"additionalProperties": false
},
"hdsLive": {
"properties": {
"streamProtocol": { "enum": [ "HDS" ] },
"liveCdnPrimaryUrl": {
"type": "string"
},
"liveCdnSecondaryUrl": {
"type": "string"
},
"liveOriginPrimaryUrl": {
"type": "string"
},
"liveOriginSecondaryUrl": {
"type": "string"
},
"vudrmLiveCdnPrimaryUrl": {
"type": "string"
}
},
"required": [ "streamProtocol", "liveCdnPrimaryUrl", "liveOriginPrimaryUrl" ],
"additionalProperties": false
},
"inputs": {
"title": "Inputs",
"type": "object",
"properties": {
"name": { "type": "string" },
"type": {
"type": "string",
"enum": [
"UDP_RTP",
"RTMP"
]
},
"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"
]
},
"outputSpecific": {
"type": "object",
"anyOf": [
{ "$ref": "#/definitions/outputUdpTsHls" },
{ "$ref": "#/definitions/outputUdpRtp" },
{ "$ref": "#/definitions/outputHttpMss" }
]
}
},
"required": [ "type", "outputSpecific" ],
"additionalProperties": false
},
"outputUdpTsHls": {
"properties": {
"address": { "type": "string" },
"id": { "type": "string" },
"outputFormat": { "type": "string" },
"outputConfiguration": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/outputConfiguration" }
]
}
},
"required": [ "address" ],
"additionalProperties": false
},
"outputUdpRtp": {
"properties": {
"address": { "type": "string" },
"id": { "type": "string" },
"outputFormat": { "type": "string" },
"outputConfiguration": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/outputConfiguration" }
]
}
},
"required": [ "address" ],
"additionalProperties": false
},
"outputHttpMss": {
"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" ] },
"transDrmType": {
"type": "string",
"enum": [
"PASS_THROUGH",
"CLEAR",
"NEW_KEYS"
]
},
"filter": { "type": [ "string", "null" ] },
"sources": {
"type": "array",
"items": {
"title": "Sources",
"type": "string"
}
}
},
"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
}
}
}
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.
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.
{
"statistics": {
"information": {
"?xml": {
"@version": "1.0"
},
"HERAStats": {
"channel_id": "5",
"processId": "705",
"configName": "Channel 20",
"cpuLoad": "4.05",
"cpuSystemIdle": "93.99",
"cpuLoadMeasureDuration": "1.21",
"processMemory": "273700",
"vmSize": "1932724",
"videoPid": "0",
"audioPid0": "0",
"audioPid1": "0",
"audioPid2": "0",
"audioPid3": "0",
"inputFrameRate": "25.00",
"inputFrameCount": "55512",
"inputFrameLost": "0",
"inputFrameBuffered": "0",
"deinterlacedFrameBuffered": "0",
"inputVideoBitRate": "124413986",
"inputAudioBitRate": "1535949",
"inputLostPackets": "0",
"inputPacketCount": "55512",
"inputAspectRatio": "4:3",
"inputByteCount": "34959237120",
"inputBytesDropped": "0",
"inputBitRate": "125953057",
"inputLastTime": "1437044031",
"startTime": "1437041811",
"currentTime": "1437044031",
"currentClock": "7524929",
"leftVolume": "255",
"rightVolume": "255",
"inputPcmLeveldB": "0.00",
"demuxerOffset": "0",
"vodProcState": "0",
"errorMessage": "",
"privateData": "",
"privateDataType": "0",
"channelPcmLevelsdB": "-1.$ -1.$ 0.0 0.0 0.0 0.0 0.0 0.0 ",
"progress": "0.00",
"outputCount": "4",
"statMode": "-1",
"sourceType": "6",
"sourceStat": "0",
"sourceInfo": "sdi[board_id:1 ch_id:1]",
"sourceReplaceFile": "",
"sourceReplaceType": "-1",
"videoFreeze": "0",
"audioSilence": "0",
"secondSource": {
"sourceType": "-1",
"sourceStat": "-1",
"sourceInfo": ""
},
"muted": "0",
"myHmsIp": "10.196.50.49",
"stream": [
{
"@id": "0",
"videoTargetRate": "1300000",
"videoRate": "1315256",
"audioTargetRate": "64000",
"audioRate": "0",
"muxRate": "1315256",
"encoderLastClock": "7524929",
"encoderFrameCount": "55472",
"muxedLastClock": "7524929",
"muxedFrameCount": "55472",
"frameRate": "25.00",
"actualEncRate": "25.02",
"currentPosition": "0",
"totalDuration": "0",
"encodingSpeed": "0",
"progress": "0.00",
"videoCodecType": "0",
"audioCodecType": "2",
"dspId": "-2",
"coreId": "-1",
"dspLoad": "0.00",
"inputFrameBuffered": "0",
"outputFrameBuffered": "0",
"inputFrameCount": "55512",
"outputFrameCount": "55472",
"bufferedFrameCount": "40",
"outputStartTime": "1437041809"
},
{
"@id": "1",
"videoTargetRate": "850000",
"videoRate": "852891",
"audioTargetRate": "64000",
"audioRate": "0",
"muxRate": "852891",
"encoderLastClock": "7524929",
"encoderFrameCount": "55473",
"muxedLastClock": "7524929",
"muxedFrameCount": "55473",
"frameRate": "25.00",
"actualEncRate": "24.99",
"currentPosition": "0",
"totalDuration": "0",
"encodingSpeed": "0",
"progress": "0.00",
"videoCodecType": "0",
"audioCodecType": "2",
"dspId": "-2",
"coreId": "-1",
"dspLoad": "0.00",
"inputFrameBuffered": "0",
"outputFrameBuffered": "0",
"inputFrameCount": "55512",
"outputFrameCount": "55474",
"bufferedFrameCount": "38",
"outputStartTime": "1437041809"
},
{
"@id": "2",
"videoTargetRate": "300000",
"videoRate": "299267",
"audioTargetRate": "64000",
"audioRate": "64054",
"muxRate": "363537",
"encoderLastClock": "7524929",
"encoderFrameCount": "55474",
"muxedLastClock": "7524929",
"muxedFrameCount": "55474",
"frameRate": "25.00",
"actualEncRate": "25.01",
"currentPosition": "0",
"totalDuration": "0",
"encodingSpeed": "0",
"progress": "0.00",
"videoCodecType": "0",
"audioCodecType": "1",
"dspId": "-2",
"coreId": "-1",
"dspLoad": "0.00",
"inputFrameBuffered": "0",
"outputFrameBuffered": "18",
"inputFrameCount": "55512",
"outputFrameCount": "55474",
"bufferedFrameCount": "38",
"outputStartTime": "1437041809"
},
{
"@id": "3",
"videoTargetRate": "850000",
"videoRate": "852336",
"audioTargetRate": "64000",
"audioRate": "64043",
"muxRate": "917146",
"encoderLastClock": "7524929",
"encoderFrameCount": "55475",
"muxedLastClock": "7524929",
"muxedFrameCount": "55474",
"frameRate": "25.00",
"actualEncRate": "25.00",
"currentPosition": "0",
"totalDuration": "0",
"encodingSpeed": "0",
"progress": "0.00",
"videoCodecType": "0",
"audioCodecType": "1",
"dspId": "-2",
"coreId": "-1",
"dspLoad": "0.00",
"inputFrameBuffered": "0",
"outputFrameBuffered": "0",
"inputFrameCount": "55512",
"outputFrameCount": "55474",
"bufferedFrameCount": "38",
"outputStartTime": "1437041809"
}
]
}
},
"isRunning": true
},
{
"information": {},
"isRunning": false
}
]
}
}
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.