top

Adaptive Streaming

This topic describes how to implement media playback using adaptive bitrate streaming, including live streaming.

Adaptive streaming is media streaming which adjusts its bit rate during playback. It offers reduced network usage and buffering time, and increased picture quality compared to traditional media streaming. For more information, see Adaptive bitrate streaming on Wikipedia.

The AVPlay API supports 3 common adaptive streaming engines. The following table lists the file extensions for which adaptive streaming is enabled.

Table 1. Supported file extensions for adaptive streaming
Streaming Engine File Extensions
Smooth Streaming .ism/Manifest
MPEG-DASH .xml
.mpd
HTTP Live Streaming (HLS) .m3u8
Note

For more information on the versions of HLS supported on Samsung TVs, see the General Features.
The HTML5 video element does not support adaptive streaming. You must use the AVPlay API.

Playing Adaptive Streaming Media

Adaptive streaming media playback is implemented using the AVPlay API in the same way as other media. The AVPlay instance handles the adaptive streaming media type based on the basic specifications for the stream.

When the AVPlay instance is in the IDLE state, you can adjust some adaptive streaming parameters by calling the setStreamingProperty() method with the ADAPTIVE_INFO property:

...
var bitRateString = 'BITRATES=5000~10000|STARTBITRATE=HIGHEST|SKIPBITRATE=LOWEST';

webapis.avplay.setStreamingProperty('ADAPTIVE_INFO', bitRateString);
...
webapis.avplay.prepare();

The following table specifies the allowed parameters and values for the ADAPTIVE_INFO property. You can set multiple parameters by separating them with a “|” character.

Table 2. ADAPTIVE_INFO parameters
Parameter Description Values
“BITRATES” Bit rate of the stream Range indicated by a “~” character, or a fixed bit rate.
For example:
  • BITRATES= 5000~50000
  • BITRATES=6000
“STARTBITRATE” Bit rate for the start of adaptive streaming “LOWEST”, “HIGHEST”, “AVERAGE”, or a fixed number as a string
“SKIPBITRATE” Bit rate to ignore during streaming “LOWEST”, “HIGHEST”, “AVERAGE”, or a fixed number as a string
“START_TIME” Resume time for live streaming Time in milliseconds

Live Streaming Limitations

The jumpForward(), jumpBackward(), and seekTo() methods of the AVPlay API, which are related to live seeking, have limited functionality in live streaming. If you want to use live seek, the streaming server must maintain past and future segments. The seekable range is limited to the segments maintained on the server. The following table lists the streaming engines that support live seek.

Table 3. Streaming engines supporting live seek
Streaming Engine Live Seek Support
Smooth Streaming Supported
MPEG-DASH Not supported
HTTP Live Streaming (HLS) Not supported