Latency on Live
To test this feature and view the example code, please see the Browsers and Connected TV SDK 5 Example Code Quick Start guide.
HLS Streams
No configuration is required for HLS Low Latency. The latency experienced depends on the capabilities of the encoder producing the live stream as LL-HLS and the capabilities of the end user's device.
Apple officially supports HLS Low Latency support in MacOS Big Sur (v11.x), released in 2020.
DASH Streams
The CONNECT Player SDK allows for adjustments to live latency of DASH streams, i.e. the target play head point relative to the actual live edge. This section describes the steps needed to adjust the latency experience together with code examples. It should be used alongside the supplied sample application.
The applicability of adjustments to the default latency of the player depends very much on the capabilities of the encoder producing the live stream.
CMAF in chunk mode streams
Chunk mode allows media segments to be split into smaller chunks that can be made available before the entire media segment is completed.
Low Latency Mode
The player targets the play head from the last segment or even closer to the live edge by obtaining completed chunks within an incomplete segment.
The latency experienced depends on the Media Capabilities of the client device. For example, Low Latency mode with Common Media Application Format (CMAF – which employs chunked encoding and chunked transfer encoding) is only supported on Tizen and webOS Connected TVs from the 2020 model year onwards due to their internal web engine implementation.
An indication of the capabilities of the platform can be gained by calling the API OTV.utils.browser.isLowLatencyCapable()
which returns a Boolean determination of whether this device can support low-latency live streams. At your discretion, use the result of this in your configuration.
Example Code
Enabling low latency is required on a per-stream basis by setting the flag at the same time as passing the URL, mime-type and token in the loaded callback:
const playerInstance = otvplayer(
"videoPlayer",
{
plugins: {
otvtoolkit: {}
},
liveui: true
},
() => {
playerInstance.src({
src: "https://....",
type: "application/dash+xml",
token: "eyJra...",
lowLatencyEnabled: true
});
}
);