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"
]
}