Listing configurations

Multiviewer can stores multiple configurations, but only one is active. This request gets a list of names, without content, of all the stored configurations.

Request
GET /configs

Request headers
accessKey: {full-control-access-key}

Response body

{
	"config1":{},
	"config2":{},
	…
}

Getting a complete configuration

Request
GET /configs/{configName}

Request headers
accessKey: {full-control-access-key}

Response body

{
	"stations":
	{
		"station1Name":{…}
		"station2Name":":{…}
	},
	"netStreams":
	{
		"stream1Name":{…}
		"stream2Name":":{…}
	}
}

Configuration contains two fields:

  • stations – all configured stations. Fields names are the configured names of the stations.
  • netStreams – all configured net streams. Fields are the configured names of the net streams.

Changing or creating a configuration

Any configuration can be changed weather it is active or not. To change a configuration or create a new one use the following request.
WARNING: this command will overwrite existing configuration

Request
PUT /configs/{configName}

Request headers
accessKey: {full-control-access-key}

Request body

{
	"stations":
	{
		"station1Name":{…}
		"station2Name":":{…}
	},
	"netStreams":
	{
		"stream1Name":{…}
		"stream2Name":":{…}
	}
}

Deleting a configuration

To delete a configuration use this request. Note that it’s not possible to delete an active configuration.

Request
DELETE /configs/{configName}


Activating a configuration

One of the stored configurations is active. To change the active configuration use this request:

Request
PUT /activeConfig

Request headers
accessKey: {full-control-access-key}

Request body
"nameOfConfigToActivate"


Getting active configuration

Request
GET /activeConfig

Request headers
accessKey: {full-control-access-key}

Response body
"nameOfActiveConfig"


Changing a single field in the active configuration

To change a single field in an active configuration use this request:

Request
PUT /activeConfig/stations/{stationName}/{fieldName}

*Request headers
accessKey: {full-control-access-key}

Request body
"new value for fieldName"

Getting a single field from the active configuration

Request
GET /activeConfig/stations/{stationName}/{fieldName}

Request headers
accessKey: {full-control-access-key}

Response body
"value from fieldName"

Changing a single field in a configuration

To change a single field in named configuration use this request:

Request
PUT /configs/{configName}/stations/{stationName}/{fieldName}

Request headers
accessKey: {full-control-access-key}

Request body
"new value for fieldName"

Getting a single field from a configuration

*Request8
GET /configs/{configName}/stations/{stationName}/{fieldName}

Request headers
accessKey: {full-control-access-key}

Response body
"value from fieldName"


Screen preview – list

Multiviewer serves previews of all screens and net streams in the JPG format. To get a list of names use:

Request
GET /live/screens

Request headers
accessKey: {full-control-access-key}

Response body

{
	"0.0":{},
	"1.0":{},
	"stream-0":{}
}

Screen preview – JPG image

Request
GET /live/screens/{screenName}/preview

Request headers
accessKey: {full-control-access-key}

Response body: JPG file


Live station information

Live information about each station:

  • Required license
  • Granted license
  • Audio tracks
  • Signals (errors in incoming stream)

Request
GET /live/stations

Request headers
accessKey: {full-control-access-key}

Response body:

{
	"tvp1":{
		"requiredLicense":"hd",
		"grantedLicense":"4k",
		"audioTracks":{
			"pol":{},
			"qaa":{},
			"aux":{}
		},
		"signals":["eTR290_2.4"]
	},
	"tvp2":{
		"requiredLicense":"hd",
		"grantedLicense":"4k",
		"audioTracks":{
			"pol":{},
			"qaa":{},
			"aux":{}
		},
		"signals":["eTR290_2.4"]
	}
}

Signals description

Map of all signal identifiers and their readable names

Request
GET /static/signals

Request headers
accessKey: {full-control-access-key}

Response body:

{
	"eEXTRACT":"Can't extract (Splitter)",
	"eNOPCR":"No PCR (Splitter)",
	"wVSKIP":"Renderer skipping frame",
	…,	
}

Multiviewer state

Information about

  • Multiviewer version
  • Multiviewer license
  • Whether Multiviewer is stopped or running
  • Startup error
  • CPU and GPU utilization

Request
GET /state

Request headers
accessKey: {full-control-access-key}

Response body:

{
	"current":"RUNNING",
	"error":"",
	"version":"  config 5.2b4.9031",
	"utilization":
{
	"gpu":[{
			"temperature":50,
			"decoder":19,
			"encoder":21,
			"gpuUtilization":20,
			"memoryUtilization":20,
			"memoryUsed":1863766016,
			"memoryFree":4578684928,
			"memoryTotal":6442450944,
			"memoryBar1Used":2097152,
			"memoryBar1Free":266338304,
			"memoryBar1Total":268435456
		}],
	"memory":{
		"totalMiB":32768,
		"availableMiB":5553.65625,
		"committedMiB":33013.5390625
	},
	"cpu":{
		"totalUsage":2.6146587065488447,
		"coresUsage":[0,4,0,0,0,0,0,0,7,8,13,8,2,0,0,0,0,0,2,0]
	}
},
	"licenseExpireDate":"2024-01-30",
	"licenseExpireDateSoftware":"2024-01-30",
	"licenseExpireDateLicense":"permanent",
	"licenseExpireInHours":1036,
	"licenseInfoClient":"zbik MV ignore",
	"licenseOptionAlarms":1,
	"licenseOptionDVBSubtitles":1,
	"licenseOptionSCTE35":1,
	"licenseOptionTR101290":1,
	"licenseOptionAPIAlarms":1,
	"licenseOptionAudio":1,
	"licenseOptionAudioAdv":1,
	"licenseStations":{
		"stationsSd":0,
		"stationsHd":0,
		"stations4k":100,
		"usedStationsSd":0,
		"usedStationsHd":0,
		"usedStations4k":2,
		"requiredStationsSd":0,
		"requiredStationsHd":2,
		"requiredStations4k":0
	}
}

Starting Multiviewer

Request
PUT /state/intended

Request headers
accessKey: {full-control-access-key}

Request body
"RUNNING"


Stopping Multiviewer

Request
PUT /state/intended

Request headers
accessKey: {full-control-access-key}

Request body
"STOPPED"


Restarting Source

Request
PUT /state/sources/{sourceName}/restart
where {{{sourceName}}} is URL-encoded source field from the configuration.

Request headers
accessKey: {full-control-access-key}


Restarting Decoder

Request
PUT /state/decoders/{stationName}/restart

Request headers
accessKey: {full-control-access-key}


Restarting Renderer

Request
PUT /state/renderer/restart

Request headers
accessKey: {full-control-access-key}


Restarting Config

Request
PUT /state/config/restart

Request headers
accessKey: {full-control-access-key}


Web page Watch

To open the web page where you can watch an output net stream from Multiviewer use URL:
/files/watch.html#stream={streamName}
where {{{streamName}}} is the name of a stream from the netStreams field of the active configuration.


Maximizing a station

Makes one station fill an entire screen. Other stations from the same screen are no longer displayed. Other screens are unaffected. Making the request again returns to normal screen layout.

Request
POST /screenclick

Request headers
accessKey: {full-control-access-key}

Request body

{
	"screen": "netStream 0",
	"x": "491",
	"y": "194",
	"w": "1537",
	"h": "865"
}
  • screen
    • name of a screen where the station is displayed or
    • string “netStream” followed by a net stream name
  • w, h – an arbitrary resolution of the screen
  • x, y – coordinates where the station is located on the screen in the same scale as w and h

Hardware and OS information

Information from the operating system

  • Screens connected to the computer
  • Audio outputs
  • Network adapters
  • Available time zones
  • Installed Decklink cards

Request
GET /hardware

Request headers
accessKey: {full-control-access-key}

Response body

{
"networkAdapters": [ "10.5.5.55", "127.0.0.1"],
"gpus": {
	"0": { "description": "NVIDIA GeForce GTX 1660 22 multiprocessors 1830MHz 4095MB capability 7.5" }
},
"screens": {
	"0.0": {
		"width": "3424",
		"height": "1440"
	}
},
"decklinkCards": {
	"DeckLink Duo (1)": "1"
},
"decklinkModes": {
	"NTSC 16:9": "1",
	"NTSC 4:3": "1"
},
"audioOutputs": [
	{
		"id": "default",
		"caption": "Default Output Device"
	},
	{
		"id": "{3.0.0.00000001}.{6C26BA7D-F0B2-4225-B422-8168C5261E45}",
		"caption": "Remote Audio"
	}
],
"timezones": [
	"(UTC) Coordinated Universal Time",
	"(UTC+00:00) Dublin, Edinburgh, Lisbon, London",
	"(UTC+00:00) Monrovia, Reykjavik"
]
}