Check if the instance is healthy or not
Responses
Service is alive and processing (or ready to process)
Body
System state
Examples
System healthy
{
"result": "HEALTHY"
}
Service is in a bad state and should be restarted
Body
System state
Examples
System not healthy
{
"result": "NOT_HEALTHY"
}
Check if the instance is healthy or not
Responses
Service is alive and processing (or ready to process)
Body
System state
Examples
System healthy
{
"result": "ALIVE"
}
Service is in a bad state and should be restarted
Body
System state
Examples
System not healthy
{
"result": "NOT_ALIVE"
}
Check if the instance is configured and ready to accept traffic
Responses
System is prepared to accept traffic
Body
System state
Examples
Ready
{
"result": "READY"
}
System is not yet ready. We may become ready to accept traffic at a later point in time.
Body
System state
Examples
Not yet ready
{
"result": "NOT_READY"
}
The overall system readiness as well as the readiness of the individual (micro)services that comprise the system.
Responses
Body
Examples
Status of a SSOA instance currently optimizing, with no recent errors or warnings
[
{
"category": "System",
"status": "OK"
},
{
"category": "Input",
"status": "OK"
},
{
"category": "Output",
"status": "OK"
}
]
Status of an SSOA instance that has not received any input recently
[
{
"category": "System",
"status": "OK"
},
{
"category": "Input",
"details": [
{
"details": "No playlist arrival in 30.0 seconds",
"severity": "ERROR",
"timestamp": 1733153802469
}
]
"status": "ERROR"
},
{
"category": "Output",
"status": "OK"
}
]
System is not ready yet
Status detail of a system component
A category describing a part of the overall system
Input to the system from upstream
Internal system status
Output from the system to one or more downstream endpoints
A list of recent warnings and errors
[
{
"details": "No playlist arrival in 30.0 seconds",
"severity": "WARNING",
"timestamp": 1733153802469
}
]
Overall status of the subsystem
Sub-system has no recent errors
Sub-system has recently encountered 1 or more WARNINGs
Sub-system has recently encountered 1 or more ERRORs
Sub-system has recently encountered 1 or more CRITICAL errors
Details of a event that may affect the health of the system
Human readable details about the status event
Severity of the status event
The event is a warning and may indicate something is not right.
The event is an error and the system is likely not functioning correctly.
The event is a critical issue and the system is not functioning correctly
The time of the event as a millisecond UTC time
List system version information for the StreamSmart On-Air REST API.
Responses
Body
Software Version Information
The git branch where the release was committed.
The hashcode associated with the release’s git commit.
The UTC timestamp associated with the release’s git commit.
Indicates if the version was stamped.
The alphanumeric system version for the API.
Examples
{
"version": {
"commitBranch": "streamsmart-onair/release/1.0.0",
"commitHash": "191db597034f0635c6a4cef42cfa7ae5f8f833cd",
"commitTime": "2024-09-27T00:30:04Z",
"stamped": "true",
"versionString": "1.0.0-1"
}
}
System is not ready yet
Apply license and restart required processes
Request parameters
If set and non-zero, validate the license and return any errors but do not apply the changes
Validate and apply the changes (default)
Validate only
Responses
License applied successfully
An invalid license was provided and cannot be applied
Apply configuration, clean up processing state, and restart required processes. Note that even if the configuration has not changed a call to this endpoint will perform a cleanup and restart of required processes. Additionally, while a configuration may be applied when the product is in an unlicensed state, stream processing will not begin until a valid license is applied.
Request parameters
If set and non-zero, validate the configuration and return any errors but do not apply the changes
Validate and apply the changes (default)
Valdiate only
Request body
Examples
Responses
Configuration applied
Configuration request was invalid
Examples
The below config will start the StreamSmart On-Air container to accept input from a MediaKind encoder
- Input is MPEG_DASH mpd
- Anchor rendition will be
trackId-100
- Candidate renditions will be
trackId-101
andtrackId-102
- Full optimized ladder will be sent to an external downstream receiving entity
{
"input": {
"type": "MPEG_DASH",
"manifestPath": "channel/manifest.mpd"
},
"optimizations": [
{
"outputIdentifier": "optimized",
"anchorIdentifier": "trackId-100",
"candidateIdentifiers": [
"trackId-101",
"trackId-100"
]
}
],
"outputs": [
{
"endpoints": [
"http://x.y.z.a:pppp/downstreamEndpoint"
]
}
]
}
The below config will start the StreamSmart On-Air container to accept input from an AWS Elemental MediaLive channel
- Input is HLS m3u8
- Anchor rendition will be
channel_anchor
- Candidate renditions will be
channel_candidate1
, andchannel_candidate2
- Full optimized ladder will be sent to two external downstream receiving entities
Here is a modified example configuration to receive from AWS Elemental Media Live and send to AWS Elemental Media Package
{
"input": {
"type": "HLS",
"manifestPath": "channel.m3u8"
},
"optimizations": [
{
"outputIdentifier": "optimized.m3u8",
"anchorIdentifier": "channel_anchor.m3u8",
"candidateIdentifiers": [
"channel_candidate1.m3u8",
"channel_candidate2.m3u8"
]
}
],
"outputs": [
{
"endpoints": [
"https://wcgoaw-1.ingest.t7c7zl.mediapackagev2.us-east-1.amazonaws.com/in/v1/example-channel/1/example-full-ladder",
"https://wcgoaw-2.ingest.t7c7zl.mediapackagev2.us-east-1.amazonaws.com/in/v1/example-channel/2/example-full-ladder"
]
}
]
}
The below config will start the StreamSmart On-Air container to accept input from an HLS source (eg. AWS Elemental MediaLive channel) and to produce both an optimized only and anchor only output
- Input is HLS m3u8
- Anchor rendition will be
channel_anchor
- Candidate renditions will be
channel_candidate1
, andchannel_candidate2
- The anchor output with XVS and Candidate IDs in WebVTT format will be sent to two external downstream receiving entities
- The optimized output with XVS and Candidate IDs in WebVTT format will be sent to two external downstream receiving entities
{
"input": {
"type": "HLS",
"manifestPath": "channel.m3u8"
},
"optimizations": [
{
"outputIdentifier": "optimized.m3u8",
"anchorIdentifier": "channel_anchor.m3u8",
"candidateIdentifiers": [
"channel_candidate1.m3u8",
"channel_candidate2.m3u8"
]
}
],
"outputs": [
{
"type": "ANCHOR",
"endpoints": [
"https://wcgoaw-1.ingest.t7c7zl.mediapackagev2.us-east-1.amazonaws.com/in/v1/example-channel/1/example-original",
"https://wcgoaw-2.ingest.t7c7zl.mediapackagev2.us-east-1.amazonaws.com/in/v1/example-channel/2/example-original"
],
"playbackURL": "https://wcgoaw.egress.t7c7zl.mediapackagev2.us-east-1.amazonaws.com/out/v1/example-channel/example-original/example-original/original.m3u8",
"annotations": [
{
"type": "WEB_VTT",
"outputIdentifier": "original_subtitles.m3u8",
"fields": [
"XVS",
"CANDIDATE_ID"
]
}
]
},
{
"type": "OPTIMIZED",
"endpoints": [
"https://wcgoaw-1.ingest.t7c7zl.mediapackagev2.us-east-1.amazonaws.com/in/v1/example-channel/1/example-optimized",
"https://wcgoaw-2.ingest.t7c7zl.mediapackagev2.us-east-1.amazonaws.com/in/v1/example-channel/2/example-optimized"
],
"playbackURL": "https://wcgoaw.egress.t7c7zl.mediapackagev2.us-east-1.amazonaws.com/out/v1/example-channel/example-optimized/example-optimized/optimized.m3u8",
"annotations": [
{
"type": "WEB_VTT",
"outputIdentifier": "optimized_subtitles.m3u8",
"fields": [
"XVS",
"CANDIDATE_ID"
]
}
]
}
]
}
Fetch and return the current running configuration
Responses
Body
Examples
{
"input": {
"type": "MPEG_DASH",
"manifestPath": "channel.mpd"
},
"optimizations": [
{
"outputIdentifier": "optimized",
"anchorIdentifier": "trackId-100",
"candidateIdentifiers": [
"trackId-101",
"trackId-102"
]
}
],
"outputs": [
{
"type": "OPTIMIZED_FULL_LADDER",
"endpoints": [
"https://downstreamreceivingentity/anchor-only/endpoint1"
]
}
]
}
The following specification describes the configuration JSON schema that can be passed in to the StreamSmart On-Air container image as a command-line parameter, environment variable, or using volume or file mounting. The configuration has the following general structure:
{
"input": {
<defines the incoming video stream, such as HLS or DASH>
},
"optimizations": [
{
<specifies the settings for bitrate optimization, including the anchor and candidate renditions>
}
],
"output": {
<defines how and where the optimized output should be delivered>
}
}
See below for information on how to configure the input
, optimizations
and output
sections.
Input configuration
Optimization configuration
Output configuration
When this array is omitted from the configuration, StreamSmart On-Air functions in demo mode, where the product will output both ANCHOR
and OPTIMIZED
only streams to the local storage. The two video streams can be viewed for comparison through the internal player page.
When this array is explicitly configured, each Output
object must contain a unique value for it’s type
field. Therefore, only a single output for each one of ANCHOR
, OPTIMIZED
, OPTIMIZED_FULL_LADDER
can exist at a time.
Advanced configuration
Examples
{
"input": {
"type": "MPEG_DASH",
"manifestPath": "channel.mpd"
},
"optimizations": [
{
"outputIdentifier": "optimized",
"anchorIdentifier": "trackId-100",
"inputIdentifiers": [
"1"
],
"qualityDelta": {
"value": 1
}
}
],
"outputs": [
{
"type": "OPTIMIZED_FULL_LADDER",
"endpoints": [
"https://downstreamreceivingentity/anchor-only/endpoint1"
]
}
]
}
An object that contains two fields: type
and manifestPath
The type of the input object.
The relative path to the container’s media ingest endpoint where the manifest will be found. This is specific to HLS and MPEG_DASH input types. Must end with .m3u8 for HLS, and .mpd for MPEG_DASH
Objects describing the candidates to consider for optimization
The identifier for the optimized stream
- For HLS, the name of optimized m3u8 media playlist
- For MPEG_DASH, the ID of the optimized representation attribute in the mpd
The anchor candidate (often the original top video profile, main target for optimization)
A list of candidates to be used for optimization
- For HLS, this should be the filenames of the m3u8 media playlists as they appear in the multivariant top level playlist
- For MPEG_DASH, the IDs of the representation attribute as they appear in the mpd
["candidate1","candidate2"]
["variant2.m3u8", "variant3.m3u8"]
Output configuration
This field describes what type of output is to be pushed to a downstream endpoint. Values accepted are
Sends the received ladder (all non-candidate renditions/variants, including audio and closed captions) to the downstream receiving entity. The candidates and anchor profiles identified within the optimization configuration are replaced with the optimized version.
Sends manifests and segments containing only anchor content to the downstream receiving entity
Sends manifests and segments containing only optimized content to the downstream receiving entity
A list of downstream receiving entity URLs.
Note that all endpoints must be of the same type (http, https, or LOCAL)
StreamSmart On-Air currently supports WebDAV authentication. If the receiving entity endpoint requires authentication, the username and password must be injected through the URL in the following format:
http(s)://<username>:<password>@<host>
, e.g. http://johndoe:p@55w0rd@my.streamsmart.com
A special value LOCAL
can be used to publish the specified output type to local storage, which can be connected to by a player at:
http(s)://<host>/output/<outputType>/<outputIdentifier>
, e.g. http://my.streamsmart.com/output/OPTIMIZED_FULL_LADDER/optimized.m3u8
["https://downstreamreceivingentity/anchor-only/endpoint1","https://downstreamreceivingentity/anchor-only/endpoint2"]
Note: Only applicable for ANCHOR
and OPTIMIZED
output types.
Configures the StreamSmart On-Air internal player page to play content from an external location (eg. a downstream packager). When this value is not configured, StreamSmart On-Air defaults to playing back content from local storage.
Note: Only applicable for ANCHOR
and OPTIMIZED
output types.
Annotations to make to the output stream
The type of annotations to be included with the output
The identifier for the annotation stream
- For HLS input, the m3u8 media playlist name as it would appear in the multivariant top level playlist
- For MPEG_DASH input, the ID of the caption representation as it would appear in the mpd
Default
- For an output type of
ANCHOR
, theanchorIdentifier
within the optimization configuration with a suffix appended based on the annotationtype
(eg. channel_top_profile_web_vtt_annotations.m3u8) - For an output type of
OPTIMIZED
, theoutputIdentifier
within the optimization configuration with a suffix appended based on the annotationtype
(eg. channel_optimized_web_vtt_annotations.m3u8) OPTIMIZED_FULL_LADDER
is currently unsupported
A list of strings that identify what will be included in each annotation for the corresponding segments.
["XVS","CANDIDATE_ID","SEGMENT_ID"]
The average XVS score of the segment
The savings of this segment compared with the original top profile (anchor)
The candidate identifier of the current segment
The running segment ID (for HLS this would be similar to the Media Sequence Number, for MPEG_DASH, the $Number$ template value - if present)
The wallclock timestamp of the container
Examples
Configuration for optimized full ladder output
{
"type": "OPTIMIZED_FULL_LADDER",
"endpoints": [
"https://downstreamreceivingentity/optimized-full-ladder/endpoint1"
]
}
Configuration for anchor only output
{
"type": "ANCHOR",
"endpoints": [
"https://downstreamreceivingentity/anchor-only/endpoint1"
],
"playbackURL": "https://cdn.com/original/channel/original.m3u8",
"annotations": [
{
"type": "WEB_VTT",
"outputIdentifier": "original_subtitles",
"fields": [
"TIMESTAMP"
]
}
]
}
Configuration for optimized only output
{
"type": "OPTIMIZED",
"endpoints": [
"https://downstreamreceivingentity/optimized-only/endpoint1"
],
"playbackURL": "https://cdn.com/optimized/channel/optimized.m3u8",
"annotations": [
{
"type": "WEB_VTT",
"outputIdentifier": "original_subtitles",
"fields": [
"TIMESTAMP"
]
}
]
}
AWS Elemental
This example accepts HLS m3u8 input from AWS Elemental MediaLive, and pushes the full optimized ladder output to two MediaPackage version 2 endpoints. The input contains two additional candidate encodes (channel_candidate1.m3u8
and channel_candidate2.m3u8
) that will be used for optimization.
{
"input": {
"type": "HLS",
"manifestPath": "channel.m3u8"
},
"optimizations": [
{
"outputIdentifier": "optimized.m3u8",
"anchorIdentifier": "channel_anchor.m3u8",
"candidateIdentifiers": [
"channel_candidate1.m3u8",
"channel_candidate2.m3u8"
]
}
],
"outputs": [
{
"type": "OPTIMIZED_FULL_LADDER",
"endpoints": [
"https://abcde-1.ingest.abcde.mediapackagev2.us-east-1.amazonaws.com/in/v1/example-channel/1/example-full-ladder",
"https://abcde-2.ingest.abcde.mediapackagev2.us-east-1.amazonaws.com/in/v1/example-channel/2/example-full-ladder"
]
}
]
}
MediaKind
This example accepts MPEG-DASH mpd input from a MediaKind transcoder and pushes the full optimized ladder to a downstream endpoint. The input contains a single additional candidate encode (trackId-101
) that will be used for optimization.
{
"input": {
"type": "MPEG_DASH",
"manifestPath": "channel/manifest.mpd"
},
"optimizations": [
{
"outputIdentifier": "optimized",
"anchorIdentifier": "trackId-100",
"candidateIdentifiers": [
"trackId-101"
]
}
],
"outputs": [
{
"type": "OPTIMIZED_FULL_LADDER",
"endpoints": [
"http://x.y.z.a:pppp/downstreamEndpoint"
]
}
]
}
Local Playback
For demonstrations or testing without a downstream packager, StreamSmart On-Air can be configured to publish its output locally, and then serves the optimized output via the /output
HTTP or HTTPS endpoint. This examples could be used to accept input from AWS MediaLive, and serve the optimized output.
{
"input": {
"type": "HLS",
"manifestPath": "channel.m3u8"
},
"optimizations": [
{
"outputIdentifier": "optimized.m3u8",
"anchorIdentifier": "channel_anchor.m3u8",
"candidateIdentifiers": [
"channel_candidate1.m3u8",
"channel_candidate2.m3u8"
]
}
],
"outputs": [
{
"type": "OPTIMIZED_FULL_LADDER",
"endpoints": [
"LOCAL"
]
}
]
}
A player would be able to play the output by connecting to http://<streamsmart-host>/output/OPTIMIZED_FULL_LADDER/optimized.m3u8
.
{name}
Get the list of services with available logs
Responses
Body
Examples
[
{
"displayName": "Reverse Proxy",
"name": "reverse-proxy"
},
{
"displayName": "Controller",
"name": "controller"
},
{
"displayName": "Media Server",
"name": "media-server"
},
{
"displayName": "Analyzer",
"name": "analyzer"
},
{
"displayName": "Optimizer",
"name": "optimizer"
},
{
"displayName": "Latency Monitor",
"name": "latency-monitor"
},
{
"displayName": "Segment Arrival Monitor",
"name": "segment-arrival-monitor"
}
]
{name}
Fetch the list of available logs, or the contents of a specific log
Path variables
The service to fetch the log of
Request parameters
Instead of fetching the current log file, keep the connection open and stream the log as it updates
No tailing (default)
Enable log tailing
Responses
Plain text containing (up to) the last 2MB of the log file.
The requested log does not exist.
Get a list of available service logs and their user friendly display name
{
"displayName": "Reverse Proxy",
"name": "reverse-proxy"
}
Display friendly name for the service
Serivce name to use when querying the logs and logTail endpoints
Name of an internal StreamSmart On-Air log
Top level process monitoring input/output and internal processes
HTTP(S) server receiving and serving media
Video stream analyzer
Optimized playlist creation
HTTP(S) reverse proxy
Latency profiler/monitor
Segment arrival monitor
Probed input and output manifest information
Get details about the input/output streams
Responses
Body
Input manifest details
Output manifest details
Examples
{
"input": {
"manifest": "manifest.mpd",
"streams": [
{
"identifier": "video_1080p",
"bitrate": 6000,
"width": 1920,
"height": 1080,
"frameRate": "30",
"codec": "AVC",
"type": "video",
"language": "eng",
"tags": [
"anchor"
]
},
{
"identifier": "video_1080p_1",
"bitrate": 5000,
"width": 1920,
"height": 1080,
"frameRate": "30",
"codec": "AVC",
"type": "video",
"language": "eng",
"tags": [
"candidate 1"
]
},
{
"identifier": "video_1080p_2",
"bitrate": 4000,
"width": 1920,
"height": 1080,
"frameRate": "30",
"codec": "AVC",
"type": "video",
"language": "eng",
"tags": [
"candidate 2"
]
},
{
"identifier": "video_720p",
"bitrate": 1600,
"width": 1280,
"height": 720,
"frameRate": "30",
"codec": "AVC",
"type": "video"
},
{
"identifier": "video_360p",
"bitrate": 800,
"width": 640,
"height": 360,
"frameRate": "30",
"codec": "AVC",
"type": "video"
},
{
"identifier": "audio_eng",
"bitrate": 128,
"codec": "ac3",
"type": "audio"
},
{
"identifier": "audio_spa",
"bitrate": 128,
"type": "audio"
},
{
"identifier": "subtitles_eng",
"type": "subtitle"
}
]
},
"output": {
"manifest": "optimized.mpd",
"streams": [
{
"identifier": "video_1080p",
"bitrate": 6000,
"width": 1920,
"height": 1080,
"frameRate": "30",
"codec": "AVC",
"type": "video",
"language": "eng",
"tags": [
"optimized"
]
},
{
"identifier": "video_720p",
"bitrate": 1600,
"width": 1280,
"height": 720,
"frameRate": "30",
"codec": "AVC",
"type": "video"
},
{
"identifier": "video_360p",
"bitrate": 800,
"width": 640,
"height": 360,
"frameRate": "30",
"codec": "AVC",
"type": "video"
},
{
"identifier": "audio_eng",
"bitrate": 128,
"codec": "ac3",
"type": "audio"
},
{
"identifier": "audio_spa",
"bitrate": 128,
"type": "audio"
},
{
"name": "subtitles_eng",
"type": "subtitle"
}
]
}
}
No input or output manifests currently available
Get details about the input streams
Responses
Body
Examples
Input stream information
{
"manifest": "manifest.mpd",
"streams": [
{
"identifier": "video_1080p",
"bitrate": 7000,
"width": 1920,
"height": 1080,
"frameRate": "30",
"codec": "AVC",
"type": "video",
"tags": [
"Anchor"
]
},
{
"identifier": "video_1080p_1",
"bitrate": 6000,
"width": 1920,
"height": 1080,
"frameRate": "30",
"codec": "AVC",
"type": "video",
"tags": [
"Candidate 1"
]
},
{
"identifier": "video_1080p_2",
"bitrate": 5000,
"width": 1920,
"height": 1080,
"frameRate": "30",
"codec": "AVC",
"type": "video",
"tags": [
"Candidate 2"
]
},
{
"identifier": "video_720p",
"bitrate": 1600,
"width": 1280,
"height": 720,
"frameRate": "30",
"codec": "AVC",
"type": "video"
},
{
"identifier": "video_360p",
"bitrate": 800,
"width": 640,
"height": 360,
"frameRate": "30",
"codec": "AVC",
"type": "video"
},
{
"identifier": "audio_eng",
"bitrate": 128,
"codec": "ac3",
"type": "audio"
},
{
"identifier": "audio_spa",
"bitrate": 128,
"type": "audio"
},
{
"identifier": "subtitles_eng",
"type": "subtitle"
}
]
}
No input manifest received
Get details about the output streams
Responses
Body
Examples
Output stream information
{
"manifest": "optimized.mpd",
"streams": [
{
"identifier": "video_1080p",
"bitrate": 7000,
"width": 1920,
"height": 1080,
"frameRate": "30",
"codec": "AVC",
"type": "video"
},
{
"identifier": "video_720p",
"bitrate": 1600,
"width": 1280,
"height": 720,
"frameRate": "30",
"codec": "AVC",
"type": "video"
},
{
"identifier": "video_360p",
"bitrate": 800,
"width": 640,
"height": 360,
"frameRate": "30",
"codec": "AVC",
"type": "video"
},
{
"identifier": "audio_eng",
"bitrate": 128,
"codec": "ac3",
"type": "audio"
},
{
"identifier": "audio_spa",
"bitrate": 128,
"type": "audio"
},
{
"identifier": "subtitles_eng",
"type": "subtitle"
}
]
}
No output manifest currently available
Details about a parsed manifest
Manifest file name
List of streams in the manifest
Information of about a stream probed from the manifest
Stream identifier (Variant name in HLS, Representation ID in DASH)
Average bitrate
Pixel width of the stream (if applicable)
Pixel height of the stream (if applicable)
Frame rate of the stream (if applicable)
Codec of the stream (if applicable)
Type of stream (video, audio, subtitle, other)
The langauge of the stream (if applicable)
A tag to help organize/present the data
["anchor"]
Get stats related to the ongoing segment optimization
Get statistics for processed video segments and their optimization. A time range can be specified by providing the from
and/or to
parameters.
Request parameters
A timestamp in either relative time format or absolute (epoch) time in milliseconds
A timestamp in either relative time format or absolute (epoch) time in milliseconds
Responses
Body
The start time of the segments returned as a millisecond UTC time
The end time of the segments returned as a millisecond UTC time
The total duration of the returned segments in milliseconds
The total savings of the returned segments
List of segments that have a timestamp
between the inclusive range of startTime
and endTime
Examples
{
"durationMs": 2000,
"endTime": 1733239369191,
"startTime": 1733239369192,
"savingsPercent": 35.16483516483517,
"segments": [
{
"timestamp": 1733239367191,
"segmentId": 3,
"programTime": 0,
"durationMs": 2000,
"optimizations": [
{
"anchor": {
"identifier": "anchor.m3u8",
"xvs": 69,
"sizeBytes": 153972,
"selected": 0
},
"candidates": [
{
"identifier": "candidate1.m3u8",
"xvs": 69.2,
"sizeBytes": 124080,
"selected": 0,
"savingsPercent": 19.413919413919412
},
{
"identifier": "candidate2.m3u8",
"xvs": 69,
"sizeBytes": 99828,
"selected": 1,
"savingsPercent": 35.16483516483517
}
],
"output": {
"identifier": "optimize.m3u8",
"xvs": 69,
"sizeBytes": 99828,
"savingsPercent": 35.16483516483517
}
}
]
}
]
}
The specified to
and/or from
time argument was not in the correct format.
The segment stats could not be obtained from internal data storage.
Segment statistics, containing information about input rendition segments and optimized output rendition segments.
Timestamp for when the stats entry was created (optimization finished for segment)
The segment ID
The presentation time of the segment as a UTC epoch (in milliseconds)
The duration of the segments in milliseconds
Statistics for the optimizations for the segment
Segment statistics for an optimization
Segment statistics for the anchor stream
Segment statistics for the candidate stream(s)
Segment statistics for the optimized output stream
Statistics for a single segment within a video rendition stream
The stream identifier, as specified by the configuration
The average XVS score for the segment
The size (in bytes) of the segment
Set to 1 if the segment was selected for the optimized output, 0 otherwise
False
True
The savings percentage exhibited against the anchor for this segment.
Retrieve thumbnails of the key video streams
Get a thumbnail for the latest segment of the optimized output stream.
NOTE: The optimized thumbnail may be up to a segment duration behind the anchor thumbnail due to the analysis and optimization process.
Responses
Respond with raw PNG data for the thumbnail
A thumbnail was not available for the stream.
API endpoints to transmit media content to StreamSmart On-Air.
StreamSmart On-Air will receive media content (manifests and media segments) via HTTP PUT or HTTP POST to this endpoint. Media segments will be retained in local storage throughout and after the optimization process, while they are still referenced by their parent manifest. However, the media segments can be removed at any time from StreamSmart On-Air via an HTTP DELETE.
Note: StreamSmart On-Air will respond with a 405 Method Not Allowed
response in the event that an HTTP PUT or HTTP POST request is made to an endpoint that is not listed in this section.
{file_path}
{file_path}
{file_path}
{file_path}
{file_path}
Get media content that was previously pushed to StreamSmart On-Air
Path variables
The path that the media content was pushed with
Responses
The media content specified
The specified request is forbidden
The specified media content was not found
{file_path}
Delete media content that was previously pushed to StreamSmart On-Air
Path variables
The file path that the media content was pushed with
Responses
Specified media content was deleted
The specified request is forbidden
The file could not be deleted due to an internal error
API endpoints to retrieve media content from StreamSmart On-Air.
These endpoints can be used to get the following types of content:
- The content chosen as the anchor by StreamSmart On-Air given the specified configuration.
- The selected output that has underwent optimization by StreamSmart On-Air.
{file_path}
{file_path}