Authentication
Each API request must contain authorization header for basic access authentication.
Name | Description |
---|---|
|
Basic authentication credentials in format Example: |
JSON object definitions
Pipeline
JSON object containing configuration for single pipeline.
Path | Type | Description |
---|---|---|
|
|
Version of pipeline JSON schema. Current version is |
|
|
Unique identifier of this pipeline. |
|
|
Name of this pipeline displayed in UI. |
|
|
Policy to restrict automatic pipeline loading after restart. Allowed values are |
|
|
Input stream source address. |
|
|
URL string value. It should be in format Examples: |
|
|
Specific information for SRT protocol. |
|
|
Mode of SRT connection. Allowed values are |
|
|
Buffer time to cover delivering and possible retransmitting of packets in msec. Allowed values [10, 2000]. |
|
|
Stream ID is type of information that can be interchanged when a connection is being established. Can be used in a caller-listener connection layout. Allowed string has printable character with length: [0-512] set on the caller side. To disable this functionality leave this field empty. |
|
|
Passphrase for encrypted SRT connection. Allowed phrase has printable character with length: [10-79]. To disable encryption leave this field empty. |
|
|
Specific information for NDI protocol. |
|
|
Optional group name of NDI. |
|
|
Specific information for HLS protocol. |
|
|
Optional size of buffer for HLS segments (in seconds). Decoding starts when the buffer is filled. Possible values are [0-999]. For input address only. |
|
|
Type of input stream. Allowed values are |
|
|
Shall be present when |
|
|
Optionally can be present when |
|
|
It should be in format Examples: |
|
|
Specific information for SRT protocol. |
|
|
Mode of SRT connection. Allowed values are |
|
|
Buffer time to cover delivering and possible retransmitting of packets in msec. Allowed values [10, 2000]. |
|
|
Passphrase for encrypted SRT connection. Allowed phrase has printable character with length: [10-79]. To disable encryption leave this field empty. |
|
|
Configuration of input video. |
|
|
Configuration of input audio. |
|
|
Configuration of input captions. |
|
|
Configuration of input metadata. |
|
|
Configuration of output streams. |
|
|
Configuration of input logos. |
Relation | Description |
---|---|
|
Link to this pipeline. |
|
Link to current state of this pipeline. |
Pipeline example:
{
"version" : "0.10",
"id" : 0,
"name" : "Pipeline 1",
"runningState" : "INACTIVE",
"source" : {
"streamType" : "MPEG_TS",
"address" : {
"url" : "srt://127.0.0.1:5001:lo",
"srt" : {
"mode" : "CALLER",
"latency" : 50,
"streamID" : "#!::u=admin,t=file,m=publish,r=results.csv",
"passphrase" : ""
}
},
"complianceWith" : "AUTO",
"addressPCR" : {
"url" : "srt://0.0.0.0:5000:lo",
"srt" : {
"mode" : "LISTENER",
"latency" : 50,
"passphrase" : ""
}
}
},
"video" : {
"format" : "J2K",
"width" : 1920,
"height" : 1080,
"sampling" : "4:2:2",
"depth" : 10,
"scanRate" : "50",
"scan" : "INTERLACED",
"fieldOrder" : "TOP_FIELD_FIRST",
"filters" : {
"yOffset" : 16,
"yGain" : 0.2,
"rOffset" : 1,
"rGain" : 0.01,
"gOffset" : 2,
"gGain" : 0.02,
"bOffset" : 3,
"bGain" : 0.03,
"rgbClip" : true,
"hue" : 4.5,
"saturation" : 0.5
}
},
"audio" : [ {
"id" : 0,
"pid" : 661,
"format" : "AES3",
"rate" : 48000,
"channels" : 2,
"filters" : {
"volumeGain" : 2.5
},
"passthrough" : false
} ],
"captions" : [ {
"id" : 0,
"pid" : 662,
"format" : "CEA_708_SMPTE_2038"
} ],
"metadata" : [ {
"id" : 0,
"pid" : 663,
"format" : "UNKNOWN"
} ],
"outputs" : [ {
"streamType" : "MPEG_TS",
"id" : 0,
"name" : "Output Stream 1",
"sink" : {
"address" : {
"url" : "srt://0.0.0.0:6001:lo",
"srt" : {
"mode" : "LISTENER",
"overhead" : 20,
"encryption" : "AES_256",
"passphrase" : "0123456789"
}
}
},
"ts" : {
"service" : {
"name" : "SERVICE",
"providerName" : "PROVIDER"
},
"pcrStreamLocation" : "SEPARATE",
"ebpLength" : 5,
"ebpLengthUnit" : "SECONDS",
"bitrate" : 10000000,
"outputComplianceWith" : "STANDARD"
},
"video" : {
"pid" : 670,
"format" : "H264",
"width" : 720,
"height" : 576,
"sampling" : "4:2:0",
"depth" : 8,
"scanRate" : "50",
"scan" : "INTERLACED",
"fieldOrder" : "TOP_FIELD_FIRST",
"h264" : {
"coding" : "CABAC",
"profile" : "HIGH",
"gopSize" : 120,
"bCount" : 0
},
"bitrate" : 8000000,
"captions" : 0,
"crop" : {
"fit" : "PAD",
"from" : [ 0, 10 ],
"to" : [ -1, 1070 ]
},
"logo" : {
"id" : 0,
"horizontalPosition" : 5,
"verticalPosition" : 10,
"horizontalScaling" : 150.0,
"verticalScaling" : 200.0
}
},
"audio" : [ {
"id" : 0,
"pid" : 671,
"format" : "AAC_ADTS",
"rate" : 48000,
"name" : "Output audio 1",
"bitrate" : 1000000,
"channels" : 2,
"references" : [ {
"id" : 0,
"channel" : 0
} ]
} ],
"captions" : [ {
"id" : 0,
"pid" : 672,
"format" : "CEA_708_SMPTE_2038",
"reference" : 0
} ],
"metadata" : [ {
"id" : 0,
"pid" : 673,
"format" : "UNKNOWN",
"reference" : 0
} ]
} ],
"uploadedLogos" : [ {
"id" : 0,
"name" : "logo.png",
"codestream" : "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAD0lEQVQIHQEEAPv/AP///wX+Av4DfRnGAAAAAElFTkSuQmCC"
} ],
"links" : [ {
"rel" : "self",
"href" : "https://127.0.0.1/api/pipeline/0",
"hreflang" : null,
"media" : null,
"title" : null,
"type" : null,
"deprecation" : null
}, {
"rel" : "state",
"href" : "https://127.0.0.1/api/pipeline/0/state",
"hreflang" : null,
"media" : null,
"title" : null,
"type" : null,
"deprecation" : null
} ]
}
Input video
JSON object containing configuration of input video.
Path | Type | Description |
---|---|---|
|
|
Format of input video. Allowed values are |
|
|
Video frame width. |
|
|
Video frame height. |
|
|
Video frame subsampling. Allowed values are |
|
|
Video frame samples bit-depth. |
|
|
Frame rate for progressive scan video (frames per second) or field rate for interlaced scan video (fields per second). String value should be in format Examples: |
|
|
Allowed values are |
|
|
Allowed values are |
|
|
Video filters to be applied to decoded video. Modifications in this object can be applied at runtime and thus it will not force the pipeline to be restarted. |
|
|
Y sample value to be added to all decoded sample values. Examples: |
|
|
Ratio for Y color component to modify all decoded sample values. Examples: |
|
|
R sample value to be added to all decoded sample values. Examples: |
|
|
Ratio for R color component to modify all decoded sample values. Examples: |
|
|
G sample value to be added to all decoded sample values. Examples: |
|
|
Ratio for G color component to modify all decoded sample values. Examples: |
|
|
B sample value to be added to all decoded sample values. Examples: |
|
|
Ratio for B color component to modify all decoded sample values. Examples: |
|
|
Specifies whether RGB clipping should take place. Disabled by default. |
|
|
Number of degrees to change the color hue. Examples: |
|
|
Ratio to change the color saturation. Examples: |
Input video example:
{
"format" : "J2K",
"width" : 1920,
"height" : 1080,
"sampling" : "4:2:2",
"depth" : 10,
"scanRate" : "50",
"scan" : "INTERLACED",
"fieldOrder" : "TOP_FIELD_FIRST",
"filters" : {
"yOffset" : 16,
"yGain" : 0.2,
"rOffset" : 1,
"rGain" : 0.01,
"gOffset" : 2,
"gGain" : 0.02,
"bOffset" : 3,
"bGain" : 0.03,
"rgbClip" : true,
"hue" : 4.5,
"saturation" : 0.5
}
}
Input audio
JSON object containing configuration of input audio.
Path | Type | Description |
---|---|---|
|
|
Unique identifier of input audio. |
|
|
Elementary stream identifier. |
|
|
Format of input audio. Allowed values are |
|
|
Audio sampling rate in Hz. |
|
|
Number of audio channels. |
|
|
Audio filters to be applied to decoded audio. Modifications in this object can be applied at runtime and thus it will not force the pipeline to be restarted. |
|
|
Ratio to change the audio volume. Examples: |
|
|
Specifies that audio is sent pass-through (if possible). |
Input audio example:
{
"id" : 0,
"pid" : 661,
"format" : "AES3",
"rate" : 48000,
"channels" : 2,
"filters" : {
"volumeGain" : 2.5
},
"passthrough" : false
}
Input captions
JSON object containing configuration of input captions.
Path | Type | Description |
---|---|---|
|
|
Unique identifier of input captions. |
|
|
Elementary stream identifier. |
|
|
Format of input captions. Allowed values are |
Input captions example:
{
"id" : 0,
"pid" : 662,
"format" : "CEA_708_SMPTE_2038"
}
Input metadata
JSON object containing configuration of input metadata.
Path | Type | Description |
---|---|---|
|
|
Unique identifier of input metadata. |
|
|
Elementary stream identifier. |
|
|
Format of input metadata. Allowed values are |
Input metadata example:
{
"id" : 0,
"pid" : 663,
"format" : "UNKNOWN"
}
Output stream
JSON object containing configuration of output stream.
Path | Type | Description |
---|---|---|
|
|
Unique identifier of output stream. |
|
|
Name of this output stream displayed in UI. |
|
|
Type of output stream. Allowed values are |
|
|
Output stream sink address(es). |
|
|
Specific information for SRT protocol. |
|
|
URL string value. It should be in format Examples: |
|
|
Mode of SRT connection. Allowed values are |
|
|
Bandwidth overhead above output rate in percents. Allowed values: [5, 100]. |
|
|
Settings of key length for AES encryption. Allowed values are |
|
|
Passphrase for encrypted SRT connection. Allowed phrase has printable character with length: [10-79]. To disable encryption leave this field empty. |
|
|
Specific information for NDI protocol. |
|
|
Optional group name of NDI. |
|
|
Specific information for HLS protocol. |
|
|
Specify duration of the HLS segments (in seconds). Possible values are [1-300]. For output address only. Default is 6. |
|
|
Specify how many HLS segments are playable in history. Possible values are [3-600]. For output address only. Default is 10. |
|
|
Specify how many HLS segments are available after playlist dereference. Possible values are [1-300]. For output address only. Default is 1 (nothing available). |
|
|
Specific information for MPEG_TS output stream type. |
|
|
Information about service to be embedded into SDT (Service Description Table) inside MPEG-TS. |
|
|
Name of the service to be embedded into SDT (Service Description Table) inside MPEG-TS. |
|
|
Name of the service provider to be embedded into SDT (Service Description Table) inside MPEG-TS. |
|
|
Maximum total bitrate of output stream in bits per second. |
|
|
Placement of stream with PCR. |
|
|
Encoder boundary point in seconds or multiples of GOP. |
|
|
Unit of EBP length. Can be in seconds or in multiples of GOP. Allowed values are |
|
|
MPEG-TS standard or Evertz compliance. Allowed values are |
|
|
Configuration of output video. |
|
|
Configuration of output audio. |
|
|
Configuration of output captions. |
|
|
Configuration of output metadata. |
Output stream example:
{
"streamType" : "MPEG_TS",
"id" : 0,
"name" : "Output Stream 1",
"sink" : {
"address" : {
"url" : "srt://0.0.0.0:6001:lo",
"srt" : {
"mode" : "LISTENER",
"overhead" : 20,
"encryption" : "AES_256",
"passphrase" : "0123456789"
}
}
},
"ts" : {
"service" : {
"name" : "SERVICE",
"providerName" : "PROVIDER"
},
"pcrStreamLocation" : "SEPARATE",
"ebpLength" : 5,
"ebpLengthUnit" : "SECONDS",
"bitrate" : 10000000,
"outputComplianceWith" : "STANDARD"
},
"video" : {
"pid" : 670,
"format" : "H264",
"width" : 720,
"height" : 576,
"sampling" : "4:2:0",
"depth" : 8,
"scanRate" : "50",
"scan" : "INTERLACED",
"fieldOrder" : "TOP_FIELD_FIRST",
"h264" : {
"coding" : "CABAC",
"profile" : "HIGH",
"gopSize" : 120,
"bCount" : 0
},
"bitrate" : 8000000,
"captions" : 0,
"crop" : {
"fit" : "PAD",
"from" : [ 0, 10 ],
"to" : [ -1, 1070 ]
},
"logo" : {
"id" : 0,
"horizontalPosition" : 5,
"verticalPosition" : 10,
"horizontalScaling" : 150.0,
"verticalScaling" : 200.0
}
},
"audio" : [ {
"id" : 0,
"pid" : 671,
"format" : "AAC_ADTS",
"rate" : 48000,
"name" : "Output audio 1",
"bitrate" : 1000000,
"channels" : 2,
"references" : [ {
"id" : 0,
"channel" : 0
} ]
} ],
"captions" : [ {
"id" : 0,
"pid" : 672,
"format" : "CEA_708_SMPTE_2038",
"reference" : 0
} ],
"metadata" : [ {
"id" : 0,
"pid" : 673,
"format" : "UNKNOWN",
"reference" : 0
} ]
}
Output video
JSON object containing configuration of output video.
Path | Type | Description |
---|---|---|
|
|
Elementary stream identifier. |
|
|
Format of output video. Allowed values are |
|
|
Video frame width. |
|
|
Video frame height. |
|
|
Configuration of cropping and/or padding. |
|
|
Allowed values are Use Use Use |
|
|
Array with X and Y offset in input video frame which specifies the first left/top most input pixel to be included in output frame. It can point outside of input frame area to create black bars. Examples: |
|
|
Array with X and Y offset in input video frame which specifies the first right/bottom most input pixel to not be included in output frame. It can point outside of input frame area to create black bars. Examples: |
|
|
Configuration of logo placement. |
|
|
ID of the logo present in uploadedLogos section. |
|
|
Horizontal position of the logo in number of pixels from left side. |
|
|
Vertical position of the logo in number of pixels from top side. |
|
|
Horizontal scaling of the logo in percents of original logo width. |
|
|
Vertical scaling of the logo in percents of original logo height. |
|
|
Video frame subsampling. Allowed values are |
|
|
Video frame samples bit-depth. |
|
|
Frame rate for progressive scan video (frames per second) or field rate for interlaced scan video (fields per second). String value should be in format Examples: |
|
|
Allowed values are |
|
|
Allowed values are |
|
|
Maximum bitrate of output video in bits per second. Value |
|
|
Identifier of input captions to be wrapped inside output video. |
|
|
Encoding settings for H.262 video. Valid only when |
|
|
Allowed values are |
|
|
GOP size in number of frames. Allowed values are |
|
|
Number of B frames. Allowed values are |
|
|
Encoding settings for H.264 video. Valid only when |
|
|
Allowed values are |
|
|
Allowed values are |
|
|
GOP size in number of frames. Allowed values are |
|
|
Number of B frames. Allowed values are |
Output video example:
{
"pid" : 670,
"format" : "H264",
"width" : 720,
"height" : 576,
"sampling" : "4:2:0",
"depth" : 8,
"scanRate" : "50",
"scan" : "INTERLACED",
"fieldOrder" : "TOP_FIELD_FIRST",
"h264" : {
"coding" : "CABAC",
"profile" : "HIGH",
"gopSize" : 120,
"bCount" : 0
},
"bitrate" : 8000000,
"captions" : 0,
"crop" : {
"fit" : "PAD",
"from" : [ 0, 10 ],
"to" : [ -1, 1070 ]
},
"logo" : {
"id" : 0,
"horizontalPosition" : 5,
"verticalPosition" : 10,
"horizontalScaling" : 150.0,
"verticalScaling" : 200.0
}
}
Output audio
JSON object containing configuration of output audio.
Path | Type | Description |
---|---|---|
|
|
Unique identifier of output audio. |
|
|
Name of this output audio displayed in UI. |
|
|
Elementary stream identifier. |
|
|
Format of output audio. Allowed values are |
|
|
Audio sampling rate in Hz. |
|
|
Array of output channels referencing channels from input audio. |
|
|
Identifier of referenced input audio. |
|
|
Index of channel from referenced input audio. |
|
|
Number of output audio channels which shall be down-mixed/up-mixed from the referenced input channels. Omit the field when down-mixing/up-mixing shall not be performed or use |
|
|
Maximum bitrate of output audio in bits per second. |
Output audio example:
{
"id" : 0,
"pid" : 671,
"format" : "AAC_ADTS",
"rate" : 48000,
"name" : "Output audio 1",
"bitrate" : 1000000,
"channels" : 2,
"references" : [ {
"id" : 0,
"channel" : 0
} ]
}
Output metadata
JSON object containing configuration of output metadata.
Path | Type | Description |
---|---|---|
|
|
Unique identifier of output metadata. |
|
|
Elementary stream identifier. |
|
|
Format of output metadata. Allowed values are |
|
|
Identifier of referenced input metadata. |
Output metadata example:
{
"id" : 0,
"pid" : 673,
"format" : "UNKNOWN",
"reference" : 0
}
Pipeline runtime state
JSON object containing runtime state of a running pipeline.
Path | Type | Description |
---|---|---|
|
|
Unique identifier of this pipeline. |
|
|
Allowed values are |
|
|
Allowed values are |
|
|
ISO 8601 date when license for pipeline expires on license server. |
|
|
ISO 8601 time before licenseStatus changes automatically on transcoder. |
|
|
Name of this pipeline. |
|
|
Input stream source. |
|
|
Input stream description. |
|
|
Number of decoded progressive frames/interlaced fields per second from this input stream (average over the last few seconds). |
|
|
Decoding latency of progressive frame/interlaced field in milliseconds from this input stream (average over the last few seconds). |
|
|
Number of invalid (not-decodable) progressive frames/interlaced fields per second for this input stream (average over the last few seconds). |
|
|
Messages for this pipeline. |
|
|
Allowed values are |
|
|
Message text for this pipeline |
|
|
Array of detected/configured elementary streams. |
|
|
Array of output stream states. |
Relation | Description |
---|---|
|
Link to current state of this pipeline. |
|
Link to this pipeline. |
Pipeline state example:
{
"id" : 0,
"status" : "ERROR",
"licenseStatus" : "GRANTED",
"licenseExpirationDate" : "1970-01-01T00:00:00Z",
"licenseRemainingTime" : "01:00:00",
"name" : "Pipeline 1",
"source" : "srt://127.0.0.1:5001:lo",
"description" : "JPEG2000 1920x1080 4:4:4 10-bit",
"decodedFps" : 0.0,
"decodingLatency" : 0.0,
"invalidFps" : 0.0,
"elementaryStreams" : [ {
"id" : 0,
"pid" : 501,
"type" : "UNKNOWN",
"state" : "NEW"
}, {
"id" : 0,
"pid" : 502,
"type" : "VIDEO",
"state" : "NEW",
"format" : "J2K",
"width" : 1920,
"height" : 1080,
"depth" : 10,
"sampling" : "4:2:2",
"scanRate" : "60000/1001",
"scan" : "INTERLACED",
"fieldOrder" : "BOTTOM_FIELD_FIRST"
}, {
"id" : 0,
"pid" : 503,
"type" : "AUDIO",
"state" : "NEW",
"format" : "AES3",
"channelCount" : 2,
"rate" : 48000,
"bitrate" : 128000,
"messages" : [ {
"severity" : "ERROR",
"message" : "This audio stream wasn't detected in source stream."
} ]
}, {
"id" : 0,
"pid" : 504,
"type" : "CAPTIONS",
"state" : "NEW",
"format" : "CEA_708_SMPTE_2038",
"messages" : [ {
"severity" : "ERROR",
"message" : "This video captions wasn't detected in source stream."
} ]
}, {
"id" : 0,
"pid" : 505,
"type" : "METADATA",
"state" : "NEW",
"format" : "UNKNOWN",
"info" : "INFO1"
}, {
"id" : 1,
"pid" : 506,
"type" : "METADATA",
"state" : "NEW",
"format" : "SMPTE_2038",
"info" : "BLABLA"
}, {
"id" : 2,
"pid" : 507,
"type" : "METADATA",
"state" : "NEW",
"format" : "SCTE_35",
"info" : "SAME_REKLAMY"
} ],
"outputs" : [ {
"id" : 0,
"status" : "ERROR",
"name" : "Output Stream 1",
"sink" : {
"url" : "srt://0.0.0.0:6001:lo",
"srt" : {
"mode" : "LISTENER",
"overhead" : 20,
"encryption" : "AES_256",
"passphrase" : "0123456789"
}
},
"description" : "H.264 1920x1080 4:2:0 8-bit",
"encodedFps" : 0.0,
"encodingLatency" : 0.0,
"transcodedFps" : 0.0,
"transcodingLatency" : 0.0,
"droppedFps" : 0.0,
"messages" : [ {
"severity" : "ERROR",
"message" : "Output Stream 1: Not producing any output."
} ],
"latencyAddition" : 0
} ],
"links" : [ {
"rel" : "self",
"href" : "https://127.0.0.1/api/pipeline/0/state",
"hreflang" : null,
"media" : null,
"title" : null,
"type" : null,
"deprecation" : null
}, {
"rel" : "pipeline",
"href" : "https://127.0.0.1/api/pipeline/0",
"hreflang" : null,
"media" : null,
"title" : null,
"type" : null,
"deprecation" : null
} ]
}
Elementary stream state
JSON object containing detected/configured elementary stream state.
Path | Type | Description |
---|---|---|
|
|
Unique identifier of this elementary stream in a set of elementary streams with the same |
|
|
Type of elementary stream. Allowed values are |
|
|
Current state of elementary stream. Allowed values are |
|
|
Elementary stream identifier. |
|
|
Messages for this elementary stream. |
|
|
Allowed values are |
|
|
Message text for this elementary stream |
Elementary stream example:
{
"id" : 0,
"pid" : 501,
"type" : "UNKNOWN",
"state" : "NEW"
}
Video elementary stream state
JSON object containing detected/configured video elementary stream state (type
= "VIDEO"
).
Path | Type | Description |
---|---|---|
|
|
Format of video. Allowed values are |
|
|
Video frame width. |
|
|
Video frame height. |
|
|
Video frame samples bit-depth. |
|
|
Video frame subsampling. Allowed values are |
|
|
Frame rate for progressive scan video (frames per second) or field rate for interlaced scan video (fields per second). String value should be in format Examples: |
|
|
Allowed values are |
|
|
Allowed values are |
Video elementary stream example:
{
"id" : 0,
"pid" : 502,
"type" : "VIDEO",
"state" : "NEW",
"format" : "J2K",
"width" : 1920,
"height" : 1080,
"depth" : 10,
"sampling" : "4:2:2",
"scanRate" : "60000/1001",
"scan" : "INTERLACED",
"fieldOrder" : "BOTTOM_FIELD_FIRST"
}
Audio elementary stream state
JSON object containing detected/configured audio elementary stream state (type
= "AUDIO"
).
Path | Type | Description |
---|---|---|
|
|
Format of audio. Allowed values are |
|
|
Number of audio channels. |
|
|
Audio sampling rate in Hz. |
|
|
Bitrate of audio in bits per second. |
Audio elementary stream example:
{
"id" : 0,
"pid" : 503,
"type" : "AUDIO",
"state" : "NEW",
"format" : "AES3",
"channelCount" : 2,
"rate" : 48000,
"bitrate" : 128000,
"messages" : [ {
"severity" : "ERROR",
"message" : "This audio stream wasn't detected in source stream."
} ]
}
Captions elementary stream state
JSON object containing detected/configured captions elementary stream state (type
= "CAPTIONS"
).
Path | Type | Description |
---|---|---|
|
|
Format of captions. Allowed values are |
Captions elementary stream example:
{
"id" : 0,
"pid" : 504,
"type" : "CAPTIONS",
"state" : "NEW",
"format" : "CEA_708_SMPTE_2038",
"messages" : [ {
"severity" : "ERROR",
"message" : "This video captions wasn't detected in source stream."
} ]
}
Metadata elementary stream state
JSON object containing detected/configured metadata elementary stream state (type
= "METADATA"
).
Path | Type | Description |
---|---|---|
|
|
Format of metadata. Allowed values are |
|
|
Metadata description. |
Metadata elementary stream example:
{
"id" : 0,
"pid" : 505,
"type" : "METADATA",
"state" : "NEW",
"format" : "UNKNOWN",
"info" : "INFO1"
}
Output stream state
JSON object containing current state for single output stream.
Path | Type | Description |
---|---|---|
|
|
Unique identifier of this output stream. |
|
|
Allowed values are |
|
|
Name of this output stream. |
|
|
Output stream sink(s). |
|
|
URL string value. It should be in format Examples: |
|
|
Specific information for SRT protocol. |
|
|
Mode of SRT connection. Allowed values are |
|
|
Bandwidth overhead above output rate in percents. Allowed values: [5, 100]. |
|
|
Settings of key length for AES encryption. Allowed values are |
|
|
Passphrase for encrypted SRT connection. Allowed phrase has printable character with length: [10-79]. To disable encryption leave this field empty. |
|
|
Output stream description. |
|
|
Number of encoded progressive frames/interlaced fields per second for this output stream (average over the last few seconds). |
|
|
Encoding latency of progressive frame/interlaced field in milliseconds for this output stream (average over the last few seconds). |
|
|
Number of transcoded progressive frames/interlaced fields per second for this output stream (average over the last few seconds). |
|
|
Transcoding latency of progressive frame/interlaced field in milliseconds for this output stream (average over the last few seconds). |
|
|
Latency as difference between PTS of corresponding input and output frame in msec. Negative value means undefined. |
|
|
Number of dropped progressive frames/interlaced fields per second for this output stream (average over the last few seconds). |
|
|
Messages for this output stream. |
|
|
Allowed values are |
|
|
Message text for this output stream |
Output stream state example:
{
"id" : 0,
"status" : "ERROR",
"name" : "Output Stream 1",
"sink" : {
"url" : "srt://0.0.0.0:6001:lo",
"srt" : {
"mode" : "LISTENER",
"overhead" : 20,
"encryption" : "AES_256",
"passphrase" : "0123456789"
}
},
"description" : "H.264 1920x1080 4:2:0 8-bit",
"encodedFps" : 0.0,
"encodingLatency" : 0.0,
"transcodedFps" : 0.0,
"transcodingLatency" : 0.0,
"droppedFps" : 0.0,
"messages" : [ {
"severity" : "ERROR",
"message" : "Output Stream 1: Not producing any output."
} ],
"latencyAddition" : 0
}
Configuration of All Pipelines
Allows you to list and replace configuration of all pipelines at once.
List All Existing Pipelines
You may list all existing pipelines by using this action. It returns JSON array containing all existing pipelines.
HTTP request
GET /api/pipelines HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1
Curl request
$ curl 'https://127.0.0.1/api/pipelines' -i -u 'admin:password' \
-H 'Accept: application/json'
Response data
Path | Type | Description |
---|---|---|
|
|
An array of all existing pipelines. |
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 4639
[ {
"version" : "0.10",
"id" : 0,
"name" : "Pipeline 1",
"runningState" : "INACTIVE",
"source" : {
"streamType" : "MPEG_TS",
"address" : {
"url" : "srt://127.0.0.1:5001:lo",
"srt" : {
"mode" : "CALLER",
"latency" : 50,
"streamID" : "#!::u=admin,t=file,m=publish,r=results.csv",
"passphrase" : ""
}
},
"complianceWith" : "AUTO",
"addressPCR" : {
"url" : "srt://0.0.0.0:5000:lo",
"srt" : {
"mode" : "LISTENER",
"latency" : 50,
"passphrase" : ""
}
}
},
"video" : {
"format" : "J2K",
"width" : 1920,
"height" : 1080,
"sampling" : "4:2:2",
"depth" : 10,
"scanRate" : "50",
"scan" : "INTERLACED",
"fieldOrder" : "TOP_FIELD_FIRST",
"filters" : {
"yOffset" : 16,
"yGain" : 0.2,
"rOffset" : 1,
"rGain" : 0.01,
"gOffset" : 2,
"gGain" : 0.02,
"bOffset" : 3,
"bGain" : 0.03,
"rgbClip" : true,
"hue" : 4.5,
"saturation" : 0.5
}
},
"audio" : [ {
"id" : 0,
"pid" : 661,
"format" : "AES3",
"rate" : 48000,
"channels" : 2,
"filters" : {
"volumeGain" : 2.5
},
"passthrough" : false
} ],
"captions" : [ {
"id" : 0,
"pid" : 662,
"format" : "CEA_708_SMPTE_2038"
} ],
"metadata" : [ {
"id" : 0,
"pid" : 663,
"format" : "UNKNOWN"
} ],
"outputs" : [ {
"streamType" : "MPEG_TS",
"id" : 0,
"name" : "Output Stream 1",
"sink" : {
"address" : {
"url" : "srt://0.0.0.0:6001:lo",
"srt" : {
"mode" : "LISTENER",
"overhead" : 20,
"encryption" : "AES_256",
"passphrase" : "0123456789"
}
}
},
"ts" : {
"service" : {
"name" : "SERVICE",
"providerName" : "PROVIDER"
},
"pcrStreamLocation" : "SEPARATE",
"ebpLength" : 5,
"ebpLengthUnit" : "SECONDS",
"bitrate" : 10000000,
"outputComplianceWith" : "STANDARD"
},
"video" : {
"pid" : 670,
"format" : "H264",
"width" : 720,
"height" : 576,
"sampling" : "4:2:0",
"depth" : 8,
"scanRate" : "50",
"scan" : "INTERLACED",
"fieldOrder" : "TOP_FIELD_FIRST",
"h264" : {
"coding" : "CABAC",
"profile" : "HIGH",
"gopSize" : 120,
"bCount" : 0
},
"bitrate" : 8000000,
"captions" : 0,
"crop" : {
"fit" : "PAD",
"from" : [ 0, 10 ],
"to" : [ -1, 1070 ]
},
"logo" : {
"id" : 0,
"horizontalPosition" : 5,
"verticalPosition" : 10,
"horizontalScaling" : 150.0,
"verticalScaling" : 200.0
}
},
"audio" : [ {
"id" : 0,
"pid" : 671,
"format" : "AAC_ADTS",
"rate" : 48000,
"name" : "Output audio 1",
"bitrate" : 1000000,
"channels" : 2,
"references" : [ {
"id" : 0,
"channel" : 0
} ]
} ],
"captions" : [ {
"id" : 0,
"pid" : 672,
"format" : "CEA_708_SMPTE_2038",
"reference" : 0
} ],
"metadata" : [ {
"id" : 0,
"pid" : 673,
"format" : "UNKNOWN",
"reference" : 0
} ]
} ],
"uploadedLogos" : [ {
"id" : 0,
"name" : "logo.png",
"codestream" : "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAD0lEQVQIHQEEAPv/AP///wX+Av4DfRnGAAAAAElFTkSuQmCC"
} ],
"links" : [ {
"rel" : "self",
"href" : "https://127.0.0.1/api/pipeline/0",
"hreflang" : null,
"media" : null,
"title" : null,
"type" : null,
"deprecation" : null
}, {
"rel" : "state",
"href" : "https://127.0.0.1/api/pipeline/0/state",
"hreflang" : null,
"media" : null,
"title" : null,
"type" : null,
"deprecation" : null
} ]
}, {
"version" : "0.10",
"id" : 1,
"name" : "Pipeline 2",
"source" : {
"streamType" : "MPEG_TS",
"address" : {
"url" : "rtp://0.0.0.0:5002:lo"
},
"complianceWith" : "AUTO"
},
"video" : {
"format" : "J2K",
"width" : 1920,
"height" : 1080,
"sampling" : "4:2:2",
"depth" : 10,
"scanRate" : "60000/1001",
"scan" : "PROGRESSIVE"
},
"links" : [ {
"rel" : "self",
"href" : "https://127.0.0.1/api/pipeline/1",
"hreflang" : null,
"media" : null,
"title" : null,
"type" : null,
"deprecation" : null
}, {
"rel" : "state",
"href" : "https://127.0.0.1/api/pipeline/1/state",
"hreflang" : null,
"media" : null,
"title" : null,
"type" : null,
"deprecation" : null
} ]
} ]
Replace All Pipelines
You may replace all existing pipelines by using this action. It removes all existing pipelines and creates all pipelines contained in given JSON array.
You can use the response JSON array from listing all existing pipelines as input for this action.
Request data
Path | Type | Description |
---|---|---|
|
|
An array of pipelines to be replaced. |
HTTP request
POST /api/pipelines HTTP/1.1
Content-Type: application/json
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Host: 127.0.0.1
Content-Length: 3801
[{
"id" : 0,
"name" : "Pipeline 1",
"runningState" : "INACTIVE",
"source" : {
"address" : {
"url": "srt://127.0.0.1:5001:lo",
"srt": {
"mode": "CALLER",
"latency": 50,
"streamID": "#!::u=admin,t=file,m=publish,r=results.csv",
"passphrase": ""
}
},
"streamType" : "MPEG_TS",
"complianceWith" : "AUTO",
"addressPCR" : {
"url": "srt://0.0.0.0:5000:lo",
"srt": {
"mode": "LISTENER",
"latency": 50,
"passphrase": ""
}
}
},
"video" : {
"format" : "J2K",
"width" : 1920,
"height" : 1080,
"sampling" : "4:2:2",
"depth" : 10,
"scanRate" : "50",
"scan" : "INTERLACED",
"fieldOrder" : "TOP_FIELD_FIRST",
"filters" : {
"yOffset" : 16,
"yGain" : 0.2,
"rOffset" : 1,
"rGain" : 0.01,
"gOffset" : 2,
"gGain" : 0.02,
"bOffset" : 3,
"bGain" : 0.03,
"rgbClip" : true,
"hue" : 4.5,
"saturation" : 0.5
}
},
"audio" : [ {
"id" : 0,
"pid" : 661,
"format" : "AES3",
"rate" : 48000,
"channels" : 2,
"filters" : {
"volumeGain" : 2.5
},
"passthrough" : false
} ],
"captions" : [ {
"id" : 0,
"pid" : 662,
"format" : "CEA_708_SMPTE_2038"
} ],
"metadata" : [ {
"id" : 0,
"pid" : 663,
"format" : "UNKNOWN"
} ],
"outputs" : [ {
"id" : 0,
"name" : "Output Stream 1",
"streamType" : "MPEG_TS",
"sink" : {
"address" : {
"url": "srt://0.0.0.0:6001:lo",
"srt": {
"mode": "LISTENER",
"overhead": 20,
"encryption": "AES_256",
"passphrase": "0123456789"
}
}
},
"ts" : {
"service" : {
"name" : "SERVICE",
"providerName" : "PROVIDER"
},
"pcrStreamLocation" : "SEPARATE",
"ebpLength" : 5,
"ebpLengthUnit" : "SECONDS",
"bitrate" : 10000000,
"outputComplianceWith" : "STANDARD"
},
"video" : {
"pid" : 670,
"format" : "H264",
"width" : 720,
"height" : 576,
"crop" : {
"fit" : "PAD",
"from" : [0,10],
"to" : [-1,1070]
},
"logo" : {
"id" : 0,
"horizontalPosition" : 5,
"verticalPosition" : 10,
"horizontalScaling" : 150.0,
"verticalScaling" : 200.0
},
"sampling" : "4:2:0",
"depth" : 8,
"scanRate" : "50",
"scan" : "INTERLACED",
"fieldOrder" : "TOP_FIELD_FIRST",
"captions" : 0,
"bitrate" : 8000000,
"h264" : {
"coding" : "CABAC",
"profile" : "HIGH",
"gopSize" : 120,
"bCount" : 0
}
},
"audio" : [ {
"id" : 0,
"pid" : 671,
"format" : "AAC_ADTS",
"rate" : 48000,
"name" : "Output audio 1",
"bitrate" : 1000000,
"references" : [ {
"id" : 0,
"channel" : 0
} ],
"channels" : 2
} ],
"captions" : [ {
"id" : 0,
"pid" : 672,
"format" : "CEA_708_SMPTE_2038",
"reference" : 0
} ],
"metadata" : [ {
"id" : 0,
"pid" : 673,
"format" : "UNKNOWN",
"reference" : 0
} ]
} ],
"uploadedLogos" : [ {
"id" : 0,
"name" : "logo.png",
"codestream" : "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAD0lEQVQIHQEEAPv/AP///wX+Av4DfRnGAAAAAElFTkSuQmCC"
} ]
}, {
"id" : 1,
"name" : "Pipeline 2",
"source" : {
"address" : {
"url": "rtp://0.0.0.0:5002:lo"
},
"streamType" : "MPEG_TS",
"complianceWith" : "AUTO"
},
"video" : {
"format" : "J2K",
"width" : 1920,
"height" : 1080,
"sampling" : "4:2:2",
"depth" : 10,
"scanRate" : "60000/1001",
"scan" : "PROGRESSIVE"
}
}]
Curl request
$ curl 'https://127.0.0.1/api/pipelines' -i -u 'admin:password' -X POST \
-H 'Content-Type: application/json' \
-d '[{
"id" : 0,
"name" : "Pipeline 1",
"runningState" : "INACTIVE",
"source" : {
"address" : {
"url": "srt://127.0.0.1:5001:lo",
"srt": {
"mode": "CALLER",
"latency": 50,
"streamID": "#!::u=admin,t=file,m=publish,r=results.csv",
"passphrase": ""
}
},
"streamType" : "MPEG_TS",
"complianceWith" : "AUTO",
"addressPCR" : {
"url": "srt://0.0.0.0:5000:lo",
"srt": {
"mode": "LISTENER",
"latency": 50,
"passphrase": ""
}
}
},
"video" : {
"format" : "J2K",
"width" : 1920,
"height" : 1080,
"sampling" : "4:2:2",
"depth" : 10,
"scanRate" : "50",
"scan" : "INTERLACED",
"fieldOrder" : "TOP_FIELD_FIRST",
"filters" : {
"yOffset" : 16,
"yGain" : 0.2,
"rOffset" : 1,
"rGain" : 0.01,
"gOffset" : 2,
"gGain" : 0.02,
"bOffset" : 3,
"bGain" : 0.03,
"rgbClip" : true,
"hue" : 4.5,
"saturation" : 0.5
}
},
"audio" : [ {
"id" : 0,
"pid" : 661,
"format" : "AES3",
"rate" : 48000,
"channels" : 2,
"filters" : {
"volumeGain" : 2.5
},
"passthrough" : false
} ],
"captions" : [ {
"id" : 0,
"pid" : 662,
"format" : "CEA_708_SMPTE_2038"
} ],
"metadata" : [ {
"id" : 0,
"pid" : 663,
"format" : "UNKNOWN"
} ],
"outputs" : [ {
"id" : 0,
"name" : "Output Stream 1",
"streamType" : "MPEG_TS",
"sink" : {
"address" : {
"url": "srt://0.0.0.0:6001:lo",
"srt": {
"mode": "LISTENER",
"overhead": 20,
"encryption": "AES_256",
"passphrase": "0123456789"
}
}
},
"ts" : {
"service" : {
"name" : "SERVICE",
"providerName" : "PROVIDER"
},
"pcrStreamLocation" : "SEPARATE",
"ebpLength" : 5,
"ebpLengthUnit" : "SECONDS",
"bitrate" : 10000000,
"outputComplianceWith" : "STANDARD"
},
"video" : {
"pid" : 670,
"format" : "H264",
"width" : 720,
"height" : 576,
"crop" : {
"fit" : "PAD",
"from" : [0,10],
"to" : [-1,1070]
},
"logo" : {
"id" : 0,
"horizontalPosition" : 5,
"verticalPosition" : 10,
"horizontalScaling" : 150.0,
"verticalScaling" : 200.0
},
"sampling" : "4:2:0",
"depth" : 8,
"scanRate" : "50",
"scan" : "INTERLACED",
"fieldOrder" : "TOP_FIELD_FIRST",
"captions" : 0,
"bitrate" : 8000000,
"h264" : {
"coding" : "CABAC",
"profile" : "HIGH",
"gopSize" : 120,
"bCount" : 0
}
},
"audio" : [ {
"id" : 0,
"pid" : 671,
"format" : "AAC_ADTS",
"rate" : 48000,
"name" : "Output audio 1",
"bitrate" : 1000000,
"references" : [ {
"id" : 0,
"channel" : 0
} ],
"channels" : 2
} ],
"captions" : [ {
"id" : 0,
"pid" : 672,
"format" : "CEA_708_SMPTE_2038",
"reference" : 0
} ],
"metadata" : [ {
"id" : 0,
"pid" : 673,
"format" : "UNKNOWN",
"reference" : 0
} ]
} ],
"uploadedLogos" : [ {
"id" : 0,
"name" : "logo.png",
"codestream" : "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAD0lEQVQIHQEEAPv/AP///wX+Av4DfRnGAAAAAElFTkSuQmCC"
} ]
}, {
"id" : 1,
"name" : "Pipeline 2",
"source" : {
"address" : {
"url": "rtp://0.0.0.0:5002:lo"
},
"streamType" : "MPEG_TS",
"complianceWith" : "AUTO"
},
"video" : {
"format" : "J2K",
"width" : 1920,
"height" : 1080,
"sampling" : "4:2:2",
"depth" : 10,
"scanRate" : "60000/1001",
"scan" : "PROGRESSIVE"
}
}]
'
HTTP response
HTTP/1.1 200 OK
Configuration of Pipelines
Allows you to create a new pipeline or get, modify or delete some existing pipeline.
Create a New Pipeline
You may create a new pipeline by using this action. It takes a JSON object containing the new pipeline configuration.
Request data
Path | Type | Description |
---|---|---|
|
Configuration of new pipeline. |
HTTP request
POST /api/pipeline HTTP/1.1
Content-Type: application/json
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Host: 127.0.0.1
Content-Length: 346
{
"name" : "Pipeline 3",
"source" : {
"address" : {
"url": "rtp://0.0.0.0:5003:lo"
},
"streamType" : "MPEG_TS",
"complianceWith" : "AUTO"
},
"video" : {
"format" : "J2K",
"width" : 1920,
"height" : 1080,
"sampling" : "4:2:2",
"depth" : 10,
"scanRate" : "24",
"scan" : "PROGRESSIVE"
}
}
Curl request
$ curl 'https://127.0.0.1/api/pipeline' -i -u 'admin:password' -X POST \
-H 'Content-Type: application/json' \
-d '{
"name" : "Pipeline 3",
"source" : {
"address" : {
"url": "rtp://0.0.0.0:5003:lo"
},
"streamType" : "MPEG_TS",
"complianceWith" : "AUTO"
},
"video" : {
"format" : "J2K",
"width" : 1920,
"height" : 1080,
"sampling" : "4:2:2",
"depth" : 10,
"scanRate" : "24",
"scan" : "PROGRESSIVE"
}
}'
HTTP response
HTTP/1.1 201 Created
Location: https://127.0.0.1/api/pipeline/2
Get an Existing Pipeline
You may get an existing pipeline by using this action. It takes pipeline identifier as a parameter and it returns JSON object with pipeline configuration.
HTTP request
GET /api/pipeline/0 HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1
Curl request
$ curl 'https://127.0.0.1/api/pipeline/0' -i -u 'admin:password' \
-H 'Accept: application/json'
Response data
Path | Type | Description |
---|---|---|
|
Configuration of existing pipeline. |
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 3856
{
"version" : "0.10",
"id" : 0,
"name" : "Pipeline 1",
"runningState" : "INACTIVE",
"source" : {
"streamType" : "MPEG_TS",
"address" : {
"url" : "srt://127.0.0.1:5001:lo",
"srt" : {
"mode" : "CALLER",
"latency" : 50,
"streamID" : "#!::u=admin,t=file,m=publish,r=results.csv",
"passphrase" : ""
}
},
"complianceWith" : "AUTO",
"addressPCR" : {
"url" : "srt://0.0.0.0:5000:lo",
"srt" : {
"mode" : "LISTENER",
"latency" : 50,
"passphrase" : ""
}
}
},
"video" : {
"format" : "J2K",
"width" : 1920,
"height" : 1080,
"sampling" : "4:2:2",
"depth" : 10,
"scanRate" : "50",
"scan" : "INTERLACED",
"fieldOrder" : "TOP_FIELD_FIRST",
"filters" : {
"yOffset" : 16,
"yGain" : 0.2,
"rOffset" : 1,
"rGain" : 0.01,
"gOffset" : 2,
"gGain" : 0.02,
"bOffset" : 3,
"bGain" : 0.03,
"rgbClip" : true,
"hue" : 4.5,
"saturation" : 0.5
}
},
"audio" : [ {
"id" : 0,
"pid" : 661,
"format" : "AES3",
"rate" : 48000,
"channels" : 2,
"filters" : {
"volumeGain" : 2.5
},
"passthrough" : false
} ],
"captions" : [ {
"id" : 0,
"pid" : 662,
"format" : "CEA_708_SMPTE_2038"
} ],
"metadata" : [ {
"id" : 0,
"pid" : 663,
"format" : "UNKNOWN"
} ],
"outputs" : [ {
"streamType" : "MPEG_TS",
"id" : 0,
"name" : "Output Stream 1",
"sink" : {
"address" : {
"url" : "srt://0.0.0.0:6001:lo",
"srt" : {
"mode" : "LISTENER",
"overhead" : 20,
"encryption" : "AES_256",
"passphrase" : "0123456789"
}
}
},
"ts" : {
"service" : {
"name" : "SERVICE",
"providerName" : "PROVIDER"
},
"pcrStreamLocation" : "SEPARATE",
"ebpLength" : 5,
"ebpLengthUnit" : "SECONDS",
"bitrate" : 10000000,
"outputComplianceWith" : "STANDARD"
},
"video" : {
"pid" : 670,
"format" : "H264",
"width" : 720,
"height" : 576,
"sampling" : "4:2:0",
"depth" : 8,
"scanRate" : "50",
"scan" : "INTERLACED",
"fieldOrder" : "TOP_FIELD_FIRST",
"h264" : {
"coding" : "CABAC",
"profile" : "HIGH",
"gopSize" : 120,
"bCount" : 0
},
"bitrate" : 8000000,
"captions" : 0,
"crop" : {
"fit" : "PAD",
"from" : [ 0, 10 ],
"to" : [ -1, 1070 ]
},
"logo" : {
"id" : 0,
"horizontalPosition" : 5,
"verticalPosition" : 10,
"horizontalScaling" : 150.0,
"verticalScaling" : 200.0
}
},
"audio" : [ {
"id" : 0,
"pid" : 671,
"format" : "AAC_ADTS",
"rate" : 48000,
"name" : "Output audio 1",
"bitrate" : 1000000,
"channels" : 2,
"references" : [ {
"id" : 0,
"channel" : 0
} ]
} ],
"captions" : [ {
"id" : 0,
"pid" : 672,
"format" : "CEA_708_SMPTE_2038",
"reference" : 0
} ],
"metadata" : [ {
"id" : 0,
"pid" : 673,
"format" : "UNKNOWN",
"reference" : 0
} ]
} ],
"uploadedLogos" : [ {
"id" : 0,
"name" : "logo.png",
"codestream" : "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAD0lEQVQIHQEEAPv/AP///wX+Av4DfRnGAAAAAElFTkSuQmCC"
} ],
"links" : [ {
"rel" : "self",
"href" : "https://127.0.0.1/api/pipeline/0",
"hreflang" : null,
"media" : null,
"title" : null,
"type" : null,
"deprecation" : null
}, {
"rel" : "state",
"href" : "https://127.0.0.1/api/pipeline/0/state",
"hreflang" : null,
"media" : null,
"title" : null,
"type" : null,
"deprecation" : null
} ]
}
Modify an Existing Pipeline
You may modify an existing pipeline configuration by using this action. It takes pipeline identifier and JSON object with new pipeline configuration as parameters.
Request data
Path | Type | Description |
---|---|---|
|
Configuration of new pipeline. |
HTTP request
PUT /api/pipeline/1 HTTP/1.1
Content-Type: application/json
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Host: 127.0.0.1
Content-Length: 354
{
"name" : "Pipeline 2 Changed",
"source" : {
"address" : {
"url": "rtp://0.0.0.0:5002:lo"
},
"streamType" : "MPEG_TS",
"complianceWith" : "AUTO"
},
"video" : {
"format" : "J2K",
"width" : 1920,
"height" : 1080,
"sampling" : "4:2:2",
"depth" : 10,
"scanRate" : "24",
"scan" : "PROGRESSIVE"
}
}
Curl request
$ curl 'https://127.0.0.1/api/pipeline/1' -i -u 'admin:password' -X PUT \
-H 'Content-Type: application/json' \
-d '{
"name" : "Pipeline 2 Changed",
"source" : {
"address" : {
"url": "rtp://0.0.0.0:5002:lo"
},
"streamType" : "MPEG_TS",
"complianceWith" : "AUTO"
},
"video" : {
"format" : "J2K",
"width" : 1920,
"height" : 1080,
"sampling" : "4:2:2",
"depth" : 10,
"scanRate" : "24",
"scan" : "PROGRESSIVE"
}
}'
HTTP response
HTTP/1.1 200 OK
Location: https://127.0.0.1/api/pipeline/1
Start an Existing Pipeline
You may start an existing pipeline by using this action. It takes pipeline identifier as a parameter.
HTTP request
PUT /api/pipeline/1/start HTTP/1.1
Content-Type: application/json
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Host: 127.0.0.1
Curl request
$ curl 'https://127.0.0.1/api/pipeline/1/start' -i -u 'admin:password' -X PUT \
-H 'Content-Type: application/json'
HTTP response
HTTP/1.1 200 OK
Stop an Existing Pipeline
You may stop an existing pipeline by using this action. It takes pipeline identifier as a parameter.
HTTP request
PUT /api/pipeline/1/stop HTTP/1.1
Content-Type: application/json
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Host: 127.0.0.1
Curl request
$ curl 'https://127.0.0.1/api/pipeline/1/stop' -i -u 'admin:password' -X PUT \
-H 'Content-Type: application/json'
HTTP response
HTTP/1.1 200 OK
Remove an Existing Pipeline
You may delete an existing pipeline by using this action. It takes pipeline identifier as a parameter.
HTTP request
DELETE /api/pipeline/1 HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Host: 127.0.0.1
Curl request
$ curl 'https://127.0.0.1/api/pipeline/1' -i -u 'admin:password' -X DELETE
HTTP response
HTTP/1.1 200 OK
Retrieving Pipeline State
Allows you to retrieve current state of all existing pipelines.
Get Pipeline Runtime State
You may retrieve the runtime state of a running pipeline by using this action. It takes pipeline identifier as a parameter and it returns JSON object containing the pipeline runtime state.
HTTP request
GET /api/pipeline/0/state HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1
Curl request
$ curl 'https://127.0.0.1/api/pipeline/0/state' -i -u 'admin:password' \
-H 'Accept: application/json'
Response data
Path | Type | Description |
---|---|---|
|
Current state of existing pipeline. |
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 2730
{
"id" : 0,
"status" : "ERROR",
"licenseStatus" : "GRANTED",
"licenseExpirationDate" : "1970-01-01T00:00:00Z",
"licenseRemainingTime" : "01:00:00",
"name" : "Pipeline 1",
"source" : "srt://127.0.0.1:5001:lo",
"description" : "JPEG2000 1920x1080 4:4:4 10-bit",
"decodedFps" : 0.0,
"decodingLatency" : 0.0,
"invalidFps" : 0.0,
"elementaryStreams" : [ {
"id" : 0,
"pid" : 501,
"type" : "UNKNOWN",
"state" : "NEW"
}, {
"id" : 0,
"pid" : 502,
"type" : "VIDEO",
"state" : "NEW",
"format" : "J2K",
"width" : 1920,
"height" : 1080,
"depth" : 10,
"sampling" : "4:2:2",
"scanRate" : "60000/1001",
"scan" : "INTERLACED",
"fieldOrder" : "BOTTOM_FIELD_FIRST"
}, {
"id" : 0,
"pid" : 503,
"type" : "AUDIO",
"state" : "NEW",
"format" : "AES3",
"channelCount" : 2,
"rate" : 48000,
"bitrate" : 128000,
"messages" : [ {
"severity" : "ERROR",
"message" : "This audio stream wasn't detected in source stream."
} ]
}, {
"id" : 0,
"pid" : 504,
"type" : "CAPTIONS",
"state" : "NEW",
"format" : "CEA_708_SMPTE_2038",
"messages" : [ {
"severity" : "ERROR",
"message" : "This video captions wasn't detected in source stream."
} ]
}, {
"id" : 0,
"pid" : 505,
"type" : "METADATA",
"state" : "NEW",
"format" : "UNKNOWN",
"info" : "INFO1"
}, {
"id" : 1,
"pid" : 506,
"type" : "METADATA",
"state" : "NEW",
"format" : "SMPTE_2038",
"info" : "BLABLA"
}, {
"id" : 2,
"pid" : 507,
"type" : "METADATA",
"state" : "NEW",
"format" : "SCTE_35",
"info" : "SAME_REKLAMY"
} ],
"outputs" : [ {
"id" : 0,
"status" : "ERROR",
"name" : "Output Stream 1",
"sink" : {
"url" : "srt://0.0.0.0:6001:lo",
"srt" : {
"mode" : "LISTENER",
"overhead" : 20,
"encryption" : "AES_256",
"passphrase" : "0123456789"
}
},
"description" : "H.264 1920x1080 4:2:0 8-bit",
"encodedFps" : 0.0,
"encodingLatency" : 0.0,
"transcodedFps" : 0.0,
"transcodingLatency" : 0.0,
"droppedFps" : 0.0,
"messages" : [ {
"severity" : "ERROR",
"message" : "Output Stream 1: Not producing any output."
} ],
"latencyAddition" : 0
} ],
"links" : [ {
"rel" : "self",
"href" : "https://127.0.0.1/api/pipeline/0/state",
"hreflang" : null,
"media" : null,
"title" : null,
"type" : null,
"deprecation" : null
}, {
"rel" : "pipeline",
"href" : "https://127.0.0.1/api/pipeline/0",
"hreflang" : null,
"media" : null,
"title" : null,
"type" : null,
"deprecation" : null
} ]
}
System
Version info
Allows you to retrieve information about current running version of transcoder.
HTTP request
GET /api/system/version HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1
Curl request
$ curl 'https://127.0.0.1/api/system/version' -i -u 'admin:password' \
-H 'Accept: application/json'
Response data
Path | Type | Description |
---|---|---|
|
|
Transcoder version info. |
|
|
Version in format |
|
|
Release date in format |
|
|
Version hash (unique version identifier). |
|
|
JPEG2000 SDK decoder version info. |
|
|
Version in format |
|
|
Release date in format |
|
|
Version hash (unique version identifier). |
|
|
Version stage (e.g., |
|
|
Version type (e.g., |
|
|
Array of supported technologies ( |
|
|
JPEG2000 SDK encoder version info. |
|
|
Version in format |
|
|
Release date in format |
|
|
Version hash (unique version identifier). |
|
|
Version stage (e.g., |
|
|
Version type (e.g., |
|
|
Array of supported technologies ( |
|
|
JPEG2000 SDK transcoder version info. |
|
|
Version in format |
|
|
Release date in format |
|
|
Version hash (unique version identifier). |
|
|
Version stage (e.g., |
|
|
Version type (e.g., |
|
|
Array of supported technologies ( |
|
|
NVIDIA driver version in format |
|
|
CUDA driver version in format |
|
|
CUDA runtime version in format |
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 852
{
"transcoder" : {
"version" : "1.13.0",
"date" : "2022-06-16",
"hash" : "a3f26d67b8222318fd5411c6f99b4778822e06b9"
},
"j2kDec" : {
"version" : "2.5.10",
"date" : "2018-03-27",
"hash" : "a22b87f11d83cd7a610a91e38b7ec6c8cef33664",
"stage" : "release",
"type" : "full",
"technology" : [ "cuda", "cpu" ]
},
"j2kEnc" : {
"version" : "2.5.10",
"date" : "2018-03-27",
"hash" : "a22b87f11d83cd7a610a91e38b7ec6c8cef33664",
"stage" : "release",
"type" : "full",
"technology" : [ "cuda", "cpu" ]
},
"j2kTrc" : {
"version" : "2.5.10",
"date" : "2018-03-27",
"hash" : "a22b87f11d83cd7a610a91e38b7ec6c8cef33664",
"stage" : "release",
"type" : "full",
"technology" : [ "cuda", "cpu" ]
},
"nvidiaDriver" : "384.98",
"cudaDriver" : "9.0",
"cudaRuntime" : "9.0"
}
Get list of available network interfaces
Allows you to retrieve list of all available network interfaces whose identifiers can be used in pipeline source or output stream sink.
HTTP request
GET /api/system/network-interfaces HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1
Curl request
$ curl 'https://127.0.0.1/api/system/network-interfaces' -i -u 'admin:password' \
-H 'Accept: application/json'
Response data
Path | Type | Description |
---|---|---|
|
|
Array of available network interfaces. |
|
|
Identifier of the network interface. |
|
|
Display name of the network interface. |
|
|
Indicates whether network interface is connected. |
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 336
[ {
"id" : "docker0",
"name" : "Bridge 1 (docker0)",
"connected" : false
}, {
"id" : "enp6s0",
"name" : "Ethernet card 1 (enp6s0, 1 Gb/s)",
"connected" : true
}, {
"id" : "enp7s0",
"name" : "Ethernet card 2 (enp7s0, 1 Gb/s)",
"connected" : false
}, {
"id" : "lo",
"name" : "Loopback (lo)",
"connected" : true
} ]
Get list of available SDI devices
Allows you to retrieve list of all available SDI devices whose identifiers can be used in pipeline source or output stream sink.
HTTP request
GET /api/system/sdi-devices HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1
Curl request
$ curl 'https://127.0.0.1/api/system/sdi-devices' -i -u 'admin:password' \
-H 'Accept: application/json'
Response data
Path | Type | Description |
---|---|---|
|
|
Array of available SDI devices. |
|
|
Identifier of the SDI device. |
|
|
Name of the SDI device. |
|
|
Available ports in SDI device. |
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 293
[ {
"id" : "aja-sdi-0",
"name" : "AJA SDI #0",
"ports" : [ "1", "2", "3", "4" ]
}, {
"id" : "aja-sdi-1",
"name" : "AJA SDI #1",
"ports" : [ "1", "2", "3", "4", "5", "6" ]
}, {
"id" : "aja-sdi-2",
"name" : "AJA SDI #2",
"ports" : [ "1", "2", "3", "4", "5", "6", "7", "8" ]
} ]
Perform reinstallation of the current version of the device
Triggers reinstallation process which automatically reboots machine on success. The call is synchronous. Reinstallation makes clean installation of the currently booted software version of the device. No settings are preserved - only current licenses.
HTTP request
GET /api/system/reinstall HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1
Curl request
$ curl 'https://127.0.0.1/api/system/reinstall' -i -u 'admin:password' \
-H 'Accept: application/json'
Response data
Path | Type | Description |
---|---|---|
|
|
State of the reinstallation after the call is processed on the machine, i.e.: "SUCCESS" or "FAILED". It can return "IN-PROGRESS" if the call is already being processed. |
|
|
Error message in a case of failure. |
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 191
{
"state" : "FAILED",
"errorMessage" : "Unsuccessful reinstall :\n Output:\nerror: You must be root to perform this commandostree admin os-init failed . Exit code: 1.\nException:\nnone"
}
Retrieve state of reinstallation process
It returns current state of a reinstallation process.
HTTP request
GET /api/system/reinstall-state HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1
Curl request
$ curl 'https://127.0.0.1/api/system/reinstall-state' -i -u 'admin:password' \
-H 'Accept: application/json'
Response data
Path | Type | Description |
---|---|---|
|
|
Current state of the reinstallation process. Possible values: "NOT-STARTED", "IN-PROGRESS", "FAILED", "SUCCESS". |
|
|
Error message in a case of failed reinstallation process. |
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 191
{
"state" : "FAILED",
"errorMessage" : "Unsuccessful reinstall :\n Output:\nerror: You must be root to perform this commandostree admin os-init failed . Exit code: 1.\nException:\nnone"
}
Perform factory reset of the device
Triggers factory reset process which automatically reboots machine on success. The call is synchronous.
HTTP request
GET /api/system/factory-reset HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1
Curl request
$ curl 'https://127.0.0.1/api/system/factory-reset' -i -u 'admin:password' \
-H 'Accept: application/json'
Response data
Path | Type | Description |
---|---|---|
|
|
State of the factory reset after the call is processed on the machine, i.e.: "SUCCESS" or "FAILED". It can return "IN-PROGRESS" if the call is already being processed. |
|
|
Error message in a case of failure. |
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 195
{
"state" : "FAILED",
"errorMessage" : "Unsuccessful factory reset :\n Output:\nerror: You must be root to perform this commandostree admin os-init failed . Exit code: 1.\nException:\nnone"
}
Retrieve state of factory reset process
It returns current state of a factory reset process.
HTTP request
GET /api/system/factory-reset-state HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1
Curl request
$ curl 'https://127.0.0.1/api/system/factory-reset-state' -i -u 'admin:password' \
-H 'Accept: application/json'
Response data
Path | Type | Description |
---|---|---|
|
|
Current state of the factory reset process. Possible values: "NOT-STARTED", "IN-PROGRESS", "FAILED", "SUCCESS". |
|
|
Error message in a case of failed factory reset process. |
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 195
{
"state" : "FAILED",
"errorMessage" : "Unsuccessful factory reset :\n Output:\nerror: You must be root to perform this commandostree admin os-init failed . Exit code: 1.\nException:\nnone"
}
Perform restart of main service
HTTP request
GET /api/system/restart-service HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1
Curl request
$ curl 'https://127.0.0.1/api/system/restart-service' -i -u 'admin:password' \
-H 'Accept: application/json'
Response data
Path | Type | Description |
---|---|---|
|
|
Info message what is going to happen. |
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 70
{
"message" : "Main program service will be restarted in a while."
}
Perform reboot of the machine
HTTP request
GET /api/system/reboot HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1
Curl request
$ curl 'https://127.0.0.1/api/system/reboot' -i -u 'admin:password' \
-H 'Accept: application/json'
Response data
Path | Type | Description |
---|---|---|
|
|
Info message what is going to happen. |
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 60
{
"message" : "The machine will be rebooted in a while."
}
Perform shutdown of the machine
HTTP request
GET /api/system/shutdown HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json
Host: 127.0.0.1
Curl request
$ curl 'https://127.0.0.1/api/system/shutdown' -i -u 'admin:password' \
-H 'Accept: application/json'
Response data
Path | Type | Description |
---|---|---|
|
|
Info message what is going to happen. |
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 60
{
"message" : "The machine will be shutdown in a while."
}
Errors
Error response
Path | Type | Description |
---|---|---|
|
|
Error status code. |
|
|
Error message. |
Example 1
DELETE /api/pipeline/7 HTTP/1.1
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Host: 127.0.0.1
HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 71
{
"status" : 404,
"error" : "Pipeline with id = 7 doesn't exist."
}
Example 2
POST /api/pipeline HTTP/1.1
Content-Type: application/json
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Host: 127.0.0.1
Content-Length: 19
{
"source" : {}
}
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Content-Length: 90
{
"status" : 400,
"error" : "Missing required property 'address'. (in: '{}.source')"
}
Example 3
POST /api/pipeline HTTP/1.1
Content-Type: application/json
Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Host: 127.0.0.1
Content-Length: 160
{
"source" : {
"address" : {
"url": "rtp://0.0.0.0:5000:lo"
},
"streamType" : "MPEG_TS",
"complianceWith" : "AUTO"
},
"video": {}
}
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Content-Length: 87
{
"status" : 400,
"error" : "Missing required property 'depth'. (in: '{}.video')"
}