top

Adaptive Streaming

This document shows you how to write adaptive streaming(contain live streaming) media playing in your application. You can play audio or video from locally path or from remote URL, all using AVPlay APIs.
We recommend read "common > Using AVPlay" document prior to the beginning of this document.

Overview

Adaptive streaming is streaming which can change bitrate during playback. It has many advantages over network traffic, buffering time and picture quality of streaming media, so it becomes very popular technique for media streaming.

This guide explains how to play streaming media which is based on common media playback.

Supported Adaptive Streaming Formats

AVPlay API supports 3 popular adaptive streaming engines. If file extension name of URL of streaming is like below, streaming engine is turned on and you can play adaptive streaming.

Table 1. Streaming Formates
Streaming Engine File Extension
Smooth Streaming -----.ism/Manifest
DASH -----.xml
-----.mpd
HLS -----.m3u8
Note

HTML5 Video tag doesn’t handle adaptive streaming by itself. You should use AVPlay API to handle adaptive streaming. Samsung supports HLS V3. Please refer here (HLS version Info)

Playing Adaptive Streaming Media

Adaptive streaming media playback has the sequence of calling AVPlay API is not different with common media. AVPlay handle adaptive streaming media type based on the basic specifications of each streaming. If you need to change some bitrate value, you should call setStreamingProperty method with “ADAPTIVE_INFO” property before calling prepare() method because setStreamingProperty() has valid states which is IDLE.
The follwing table shows detailed specifications of the “ADAPTIVE_INFO” property of setStreamingProperty method. Each parameter of “ADAPTIVE_INFO” property divided into " | " character.

Table 2. Specifications of "ADAPTIVE_INFO"
Property Type Parameter Value and meaning
“BITRATES” Can be range by ‘~’ character or fix bitrate. ex: BITRATES= 5000~50000 or BITRATES=6000
“STARTBITRATE” Bitrate value for starting of adaptive streaming “LOWEST”, “HIGHEST”, “AVERAGE” or fixed number in string
“ADAPTIVE_INFO” “SKIPBITRATE” Bitrate value which should be ignored in streaming “LOWEST”, “HIGHEST”, “AVERAGE” or fixed number in string
“START_TIME” Resume time for live streaming case (In millisecond)
...
var bitRateString = 'BITRATES=5000~10000|STARTBITRATE=HIGHEST|SKIPBITRATE=LOWEST';

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

Limitations in Live Streaming

A few AVPlay methods related to live seek are limited in live streaming which methods are jumpForward(), jumpBackward(), seekTo(). If you want to use live seek, streaming server side should maintain past and future segments. The range of seekable area is limited based on maintained segments on server. The following table shows detailed specifications of live seek.

Table 3. Specifications of Live Seek
Streaming Engine Support of Live Seek
HLS Not supported
DASH Not supported
Smooth Streaming Supported