Controller to Registry (IS-04) and Node Interactions (IS-05, IS-08)
←Controller to Authorization Server Interactions · Index↑ · Event and Tally Interactions (IS-07)→
Creating an IS-05 Connection
To create a connection between an NMOS Sender and Receiver the Controller first queries the NMOS Registry to obtain all registered NMOS Node resources.
Then it can create a connection between Senders and Receivers using the IS-05 Connection API.
Querying the NMOS Registry
The Controller uses the IS-04 Query API to obtain a list of all registered NMOS Node resources from the NMOS Registry. This API call includes a valid Access Token in the HTTP header.
Example query request including the Access Token (Authorization: Bearer
) in the HTTP header:
GET /x-nmos/query/v1.3/nodes HTTP/1.1
Host: registry.example.com
Authorization: Bearer eyJhbGciOiJSUzUxMiIsInR5cCIgOiAiSl...
Example query response:
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"api": {
"endpoints": [
{
"authorization": true,
"host": "node.example.com",
"port": 443,
"protocol": "https"
}
],
"versions": [
... etc. ...
]
},
"caps": {
... etc. ...
},
"clocks": [
... etc. ...
],
"description": "...",
"hostname": "node.example.com",
"href": "https://node.example.com/",
"id": "...",
"interfaces": [
... etc. ...
],
"label": "My Example Node",
"services": [
... etc. ...
],
"tags": {
... etc. ...
},
"version": "..."
}
]
Connection Management
Once the Controller has obtained the NMOS resource list, it can use the IS-05 Connection API to request the Sender’s SDP and make connections between Receivers and Senders.
SDP Request
Example Sender SDP request including the Access Token (Authorization: Bearer
) in the HTTP header:
GET /x-nmos/connection/v1.1/single/senders/{senderId}/transportfile HTTP/1.1
Host: node.example.com
Authorization: Bearer eyJhbGciOiJSUzUxMiIsInR5cCIgOiAiSl...
Example Sender SDP response:
HTTP/1.1 200 OK
Content-Type: application/sdp
v=0
o=- 3821785015 3821785015 IN IP4 10.1.0.29
s=My Example Node/sender/v0
t=0 0
a=group:DUP PRIMARY SECONDARY
m=video 5004 RTP/AVP 96
c=IN IP4 239.255.255.0/32
a=ts-refclk:localmac=5E-21-51-E3-62-D0
a=mediaclk:direct=0
a=source-filter: incl IN IP4 239.255.255.0 10.1.0.29
a=rtpmap:96 raw/90000
a=fmtp:96 width=1920; height=1080; exactframerate=25; interlace; sampling=YCbCr-4:2:2; depth=10; colorimetry=BT709; TCS=SDR; PM=2110GPM; SSN=ST2110-20:2017; TP=2110TPN;
a=mid:PRIMARY
m=video 5004 RTP/AVP 96
c=IN IP4 239.255.255.1/32
a=ts-refclk:localmac=0A-00-27-00-00-0F
a=mediaclk:direct=0
a=source-filter: incl IN IP4 239.255.255.1 169.254.66.179
a=rtpmap:96 raw/90000
a=fmtp:96 width=1920; height=1080; exactframerate=25; interlace; sampling=YCbCr-4:2:2; depth=10; colorimetry=BT709; TCS=SDR; PM=2110GPM; SSN=ST2110-20:2017; TP=2110TPN;
a=mid:SECONDARY
Connection Request
Example connection request including the Access Token (Authorization: Bearer
) in the HTTP header:
PATCH /x-nmos/connection/v1.1/single/receivers/{receiverId}/staged HTTP/1.1
Host: node.example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzUxMiIsInR5cCIgOiAiSl...
{
"activation": {
"mode": "activate_immediate"
},
"master_enable": true,
"sender_id": "8d26d68a-93f2-55ff-9495-acbb576897fd",
"transport_file": {
... etc. ...
}
}
Example connection response:
HTTP/1.1 200 OK
Content-Type: application/json
{
"activation": {
"activation_time": "1612804428:810443300",
"mode": "activate_immediate",
"requested_time": null
},
"master_enable": true,
"sender_id": "8d26d68a-93f2-55ff-9495-acbb576897fd",
"transport_file": {
... etc. ...
},
"transport_params": [
... etc. ...
]
}
Mapping Audio Channels (IS-08)
The purpose of using the IS-08 Channel Mapping API is to allow mapping of one or more audio Inputs to one or more audio Outputs.
Example mapping request including the Access Token (Authorization: Bearer
) in the HTTP header:
POST /x-nmos/channelmapping/v1.0/map/activations HTTP/1.1
Host: client.example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzUxMiIsInR5cCIgOiAiSl...
{
"activation": {
"mode": "activate_immediate"
},
"action" : {
... etc. ...
}
}
Example response:
HTTP/1.1 200 OK
Content-Type: application/json
{
"activation" : {
"activation_time": "1612804428:810443300",
"mode": "activate_immediate",
"requested_time": null
},
"action" : {
... etc. ...
}
}
←Controller to Authorization Server Interactions · Index↑ · Event and Tally Interactions (IS-07)→