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.
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.
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.
|Streaming Engine||File Extension|
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)
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.
|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();
A few AVPlay methods related to live seek are limited in live streaming which methods are
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.
|Streaming Engine||Support of Live Seek|