To use Samsung Product API,
<script type="text/javascript" src="$WEBAPIS/webapis/webapis.js"></script>
Should be loaded in index.html
Since : 2.3
Product : TV, AV_BD
Interface | Method |
---|---|
AVPlayManagerObject | |
AVPlayManager | void open(); void close(); void prepare(); void prepareAsync(opitional SuccessCallback? successCallback, optional ErrorCallback? errorCallback); void setDisplayRect(unsigned long x, unsigned long y, unsigned long width, unsigned long height); void play(); void seekTo(long milliseconds, optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback); void stop(); AVPlayPlayerState getState(); void pause(); void jumpForward(long milliseconds, optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback); void jumpBackward( long milliseconds, optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback ); unsigned long getDuration(); unsigned long getCurrentTime(); void setTimeoutForBuffering(unsigned long seconds); void setBufferingParam(AVPlayBufferOption option, AVPlayBufferSizeUnit unit, unsigned long amount); void setSpeed(long playbackSpeed); void setListener(AVPlayPlaybackCallback playbackCallback); DOMString setDrm(AVPlayDrmType drmType, AVPlayDrmOperation drmOperation, DOMString jsonParam); DOMString getUID(AVPlayDrmType drmType); void setSoundAnalysisListener(AVPlaySoundAnalysisCallback soundAnalysisCallback); void unsetSoundAnalysisListener(); void setSilentSubtitle(boolean onoff); void setExternalSubtitlePath(DOMString filePath); void setSubtitlePosition(long position); void setDisplayMethod(AVPlayDisplayMode displayMode); void setSelectTrack(AVPlayStreamType trackType, long trackIndex); AVPlayCurrentStreamInfo getCurrentStreamInfo(); AVPlayStreamInfo[] getTotalTrackInfo(); void setStreamingProperty(AVPlayStreamingPropertyType propertyType, DOMString propertyParam); DOMString getStreamingProperty(AVPlayStreamingPropertyType propertyType); DOMString getVersion(); void suspend(); void restore(DOMString URL, optional unsigned optional long? resumeTime, optional boolean? bPrepare) ; void restoreAsync(DOMString URL, optional unsigned optional long? resumeTime, optioanl optional boolean? bPrepare, optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback) ; |
AVPlayPlaybackCallback | void onbufferingstart(); void onbufferingprogress(unsigned long percent); void onbufferingcomplete(); void oncurrentplaytime(unsigned long currentTime ); void onstreamcompleted(); void onevent(AVPlayEvent eventid, DOMString data ); void onerror(AVPlayError eventid); void ondrmevent(AVPlayDrmType type, drmData data); void onsubtitlechange(unsigned long duration, DOMString subtitles, unsigned long type, AVPlaySubtitleAttribute attributes); |
enum AVPlayPlayerState {
"NONE",
"IDLE",
"READY",
"PLAYING",
"PAUSED"
};
Since : 2.3
The following values are supported
enum AVPlayDisplayMode {
"PLAYER_DISPLAY_MODE_LETTER_BOX",
"PLAYER_DISPLAY_MODE_FULL_SCREEN",
"PLAYER_DISPLAY_MODE_AUTO_ASPECT_RATIO"
};
Since : 2.3
The following values are supported
enum AVPlayBufferOption {
"PLAYER_BUFFER_FOR_PLAY",
"PLAYER_BUFFER_FOR_RESUME"
};
Since : 2.3
The following values are supported
enum AVPlayBufferSizeUnit {
"PLAYER_BUFFER_SIZE_IN_BYTE",
"PLAYER_BUFFER_SIZE_IN_SECOND"
};
Since : 2.3
The following values are supported
Remark :
"PLAYER_BUFFER_SIZE_IN_BYTE" property has been deprecated from Tizen version 5.0
enum AVPlayStreamingPropertyType {
"COOKIE",
"USER_AGENT",
"PREBUFFER_MODE",
"ADAPTIVE_INFO",
"SET_MODE_4K",
"PROPERTY_HD_AUDIO",
"LISTEN_SPARSE_TRACK",
"IS_LIVE",
"AVAILABLE_BITRATE",
"GET_LIVE_DURATION",
"CURRENT_BANDWIDTH",
"WIDEVINE"
};
Since : 2.3
The following values are supported
Remark :
"GET_LIVE_DURATION" is available since Tizen version 2.4.
"WIDEVINE" property has been deprecated from Tizen version 4.0.
"PROPERTY_HD_AUDIO" property has been deprecated from Tizen version 2.4.
"SET_VR360_MODE" property has been deprecated from Tizen version 5.0.
"SET_MODE_4K" property has been deprecated from Tizen version 5.0.
enum AVPlayDrmType {
"PLAYREADY",
"VERIMATRIX",
"WIDEVINE_CDM"
};
Since : 2.3
The following values are supported
enum AVPlayDrmOperation {
"SetProperties",
"InstallLicense",
"ProcessInitiator",
"GetUID",
"Initialize",
"Finalize",
"widevine_license_data",
"widevine_app_session",
"widevine_data_type"
};
Since : 2.3
The following values are supported
Remark :
GetUID' operation has been deprecated from Tizen version 5.0, rather application should use getUID() API. 'Initialize' and 'Finalize' operations have been deprecated from Tizen version 5.0. Because these are being executed by avplay itself. 'widevine_app_session' and 'widevine_data_type' operations have been deprecated from Tizen version 5.0. Because these are merged into "SetProperties". Please refer to setDrm() example.
enum AVPlayStreamType {
"VIDEO",
"AUDIO",
"TEXT"
};
Since : 2.3
The following values are supported
enum AVPlayError{
"PLAYER_ERROR_NONE",
"PLAYER_ERROR_INVALID_PARAMETER",
"PLAYER_ERROR_NO_SUCH_FILE",
"PLAYER_ERROR_INVALID_OPERATION",
"PLAYER_ERROR_SEEK_FAILED",
"PLAYER_ERROR_INVALID_STATE",
"PLAYER_ERROR_NOT_SUPPORTED_FILE",
"PLAYER_ERROR_INVALID_URI",
"PLAYER_ERROR_CONNECTION_FAILED",
"PLAYER_ERROR_GENEREIC"
};
Since : 2.3
The following values are supported
enum AVPlayEvent {
"PLAYER_MSG_NONE",
"PLAYER_MSG_RESOLUTION_CHANGED",
"PLAYER_MSG_BITRATE_CHANGE",
"PLAYER_MSG_FRAGMENT_INFO",
"PLAYER_SPARSE_TRACK_DETECT",
"PLAYER_STREAMING_EVENT",
"PLAYER_MSG_HTTP_ERROR_CODE",
"PLAYER_MSG_DRM_CHALLENGE_DATA"
};
Since : 2.3
The following values are supported
dictionary AVPlayStreamInfo {
unsigned long index;
AVPlayStreamType type;
DOMString extra_info;
};
The following values are supported
dictionary AVPlaySubtitleAttribute {
DOMString attr_type;
long start_pos;
long stop_pos;
};
The following values are supported
[NoInterfaceObject] interface AVPlayManagerObject {
readonly attribute AVPlayManager avplay;
};
WebApi implements AVPlayManagerObject;
[NoInterfaceObject] interface AVPlayManager {
void open(DOMString url) ;
void close() ;
void prepare() ;
void prepareAsync(optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback) ;
void setDisplayRect( unsigned long x, unsigned long y, unsigned long width, unsigned long height ) ;
void play() ;
void seekTo(long milliseconds, optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback);
void stop() ;
AVPlayPlayerState getState() ;
void pause() ;
void jumpForward(long milliseconds, optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback) ;
void jumpBackward( long milliseconds, optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback ) ;
unsigned long getDuration() ;
unsigned long getCurrentTime() ;
void setTimeoutForBuffering(unsigned long seconds);
void setBufferingParam(AVPlayBufferOption option, AVPlayBufferSizeUnit unit, unsigned long amount);
void setSpeed(long playbackSpeed) ;
void setListener(AVPlayPlaybackCallback playbackCallback) ;
DOMString setDrm(AVPlayDrmType drmType, AVPlayDrmOperation drmOperation, DOMString jsonParam) ;
DOMString getUID(AVPlayDrmType drmType) ;
void setSoundAnalysisListener(AVPlaySoundAnalysisCallback soundAnalysisCallback) ;
void unsetSoundAnalysisListener() ;
void setSilentSubtitle(boolean onoff) ;
void setExternalSubtitlePath(DOMString filePath) ;
void setSubtitlePosition(long position) ;
void setDisplayMethod(AVPlayDisplayMode displayMode) ;
void setSelectTrack(AVPlayStreamType trackType, long trackIndex) ;
AVPlayStreamInfo getCurrentStreamInfo() ;
AVPlayStreamInfo[] getTotalTrackInfo() ;
void setStreamingProperty(AVPlayStreamingPropertyType propertyType, DOMString propertyParam) ;
DOMString getStreamingProperty(AVPlayStreamingPropertyType propertyType) ;
DOMString getVersion() ;
void suspend() ;
void restore(DOMString URL, optional unsigned long? resumeTime, optional boolean? bPrepare);
void restoreAsync(DOMString URL, optional unsigned long? resumeTime, optioanl boolean? bPrepare, optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback);
};
open
void open(DOMString url);
Product : TV, AV_BD
Parameters:
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
try {
webapis.avplay.open(url);
}
catch (e)
{
console.log(e);
}
close
void close();
Product : TV, AV_BD
Constraint
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type UnknownError, for any other error.
Code example:
try {
webapis.avplay.close();
}
catch (e)
{
console.log(e);
}
prepare
void prepare();
Product : TV, AV_BD
Constraint
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
try {
webapis.avplay.prepare();
}
catch (e)
{
console.log(e);
}
prepareAsync
void prepareAsync(optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback);
Product : TV, AV_BD
Parameters:
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
webapis.avplay.prepareAsync(successCallback, errorCallback);
setDisplayRect
void setDisplayRect( unsigned long x, unsigned long y, unsigned long width, unsigned long height );
Product : TV, AV_BD
Parameters:
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
try {
webapis.avplay.setDisplayRect(0, 0, 1920, 1080);
}
catch (e)
{
console.log(e);
}
play
void play();
Product : TV, AV_BD
Constraint
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
try {
webapis.avplay.play();
}
catch (e)
{
console.log(e);
}
Remark :
Adaptive streaming using TS container (for e.g. HLS) with audio sample rate changing across variants may cause audio loss.seekTo
void seekTo(long milliseconds, optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback);
Product : TV, AV_BD
Parameters:
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
try {
webapis.avplay.seekTo(10000,successCallback, errorCallback);
}
catch (e)
{
console.log(e);
}
// for live cases, get the live duration as :
var StartTime = webapis.avplay.getStreamingProperty("GET_LIVE_DURATION").split('|')[0];
var EndTime = webapis.avplay.getStreamingProperty("GET_LIVE_DURATION").split('|')[1];
// seekpoint must be between StartTime and Endtime.
stop
void stop();
Product : TV, AV_BD
Constraint
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type UnknownError, for any other error.
Code example:
try {
webapis.avplay.stop();
}
catch (e)
{
console.log(e);
}
getState
AVPlayPlayerState getState();
Product : TV, AV_BD
Return value:
AVPlayPlayerState "NONE", "IDLE", "READY", "PLAYING", "PAUSED".Constraint
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type UnknownError, for any other error.
Code example:
var BRet = webapis.avplay.getState();
pause
void pause();
Product : TV, AV_BD
Constraint
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type InvalidStateError, if it is called in an invalid state.
with error type InvalidAccessError, if this API couldn't operate at the moment. (E.g. During the async operation such as seekTo, etc.)
with error type UnknownError, for any other error.
Code example:
try {
webapis.avplay.pause();
}
catch (e)
{
console.log(e);
}
jumpForward
void jumpForward(long milliseconds, optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback);
Product : TV, AV_BD
Parameters:
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
webapis.avplay.jumpForward(5000, successCallback, errorCallback);
jumpBackward
void jumpBackward( long milliseconds, optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback );
Product : TV, AV_BD
Parameters:
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
webapis.avplay.jumpBackward(5000, successCallback, errorCallback);
getDuration
unsigned long getDuration();
Product : TV, AV_BD
Return value:
unsigned long number Duration, in millisecondsConstraint
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type UnknownError, for any other error.
Code example:
duration = calcPlaytime(webapis.avplay.getDuration());
function calcPlaytime(totalMilisec) {
var Hours = Math.floor(totalMilisec/3600000);
var Minutes = Math.floor((totalMilisec - (Hours * 3600000)) / 60000);
var Seconds = Math.floor((totalMilisec - (Hours * 3600000) - (Minutes * 60000)) / 1000);
var Milisec = totalMilisec - (Hours * 3600000) - (Minutes * 60000) - (Seconds * 1000);
return {
Hours: Hours,
Minutes: Minutes,
Seconds: Seconds,
milisec: Milisec,
totalMilisec: totalMilisec
}
}
getCurrentTime
unsigned long getCurrentTime();
Product : TV, AV_BD
Return value:
unsigned long number Current playback time, in milliseconds.Constraint
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type UnknownError, for any other error.
Code example:
var CurrentPlayTime = webapis.avplay.getCurrentTime();
setTimeoutForBuffering
void setTimeoutForBuffering(unsigned long seconds);
Product : TV, AV_BD
Parameters
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
webapis.avplay.setTimeoutForBuffering(10);
setBufferingParam
void setBufferingParam(AVPlayBufferOption option, AVPlayBufferSizeUnit unit, unsigned long amount);
Product : TV, AV_BD
Parameters
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
// For the initial buffering
webapis.avplay.setBufferingParam("PLAYER_BUFFER_FOR_PLAY","PLAYER_BUFFER_SIZE_IN_SECOND", 5); // 5 is in seconds
// For the rebuffering
webapis.avplay. setBufferingParam("PLAYER_BUFFER_FOR_RESUME","PLAYER_BUFFER_SIZE_IN_SECOND", 15); // 15 is in seconds
Remark:
unit "PLAYER_BUFFER_SIZE_IN_BYTE" has been deprecated from Tizen version 5.0setSpeed
void setSpeed(long playbackSpeed);
Product : TV, AV_BD
Parameters:
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
try {
webapis.avplay.setSpeed(2);
}
catch (e)
{
console.log(e);
}
setListener
void setListener(AVPlayPlaybackCallback playbackCallback);
Product : TV, AV_BD
Parameters:
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type UnknownError, for any other error.
Code example:
var Listener = {
onbufferingstart: function() {
console.log("Buffering start.");
},
onbufferingprogress: function(percent) {
console.log("Buffering progress data : " + data1);
},
onbufferingcomplete: function() {
console.log("Buffering complete.");
},
oncurrentplaytime: function(currentTime) {
console.log("Current Playtime : " + data1);
},
onbufferingcomplete: function() {
console.log("Buffering complete.");
},
onevent: function(eventType, eventData) {
console.log("event type error : " + eventType + ", data: " + eventData);
},
onerror: function(eventType) {
console.log("event type error : " + eventType);
},
onsubtitlechange: function(duration, text, data3, data4) {
console.log("Subtitle Changed.");
},
ondrmevent: function(drmEvent, drmData) {
console.log("DRM callback: " + drmEvent + ", data: " + drmData);
},
onstreamcompleted: function() {
console.log("Stream Completed");
}
}
webapis.avplay.setListener(Listener);
setDrm
DOMString setDrm(AVPlayDrmType drmType, AVPlayDrmOperation drmOperation, DOMString jsonParam);
Product : TV, AV_BD
Privilege level: Public
Privilege: http://developer.samsung.com/privilege/drmplay
Parameters
Return value:
DRMStringConstraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type SecurityError, if the application does not have the privilege to call this method.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Examples of exception scenarios include an invalid DRM session, or failure to create the underlying DRM module or configuration. In these scenarios, an exception is thrown and the method call returns FALSE.
Code example:
// Implementing DRM support
// 1. PlayReady example: Setting license server and custom data
// 1.1 PlayReady with GenChallenge
var Listener =
{
ondrmevent: function(drmType, drmData)
{
if(drmData.name === 'Challenge')
{
// take drmData.challenge to obtain license data.
}
}
}
webapis.avplay.setListener(Listener);
var appdata={DeleteLicenseAfterUse:true,GetChallenge:true,"LicenseServer":"http://license.company.com", "CustomData":"mycustom}
webapis.avplay.setDrm("PLAYREADY", "SetProperties", JSON.stringify(appdata));
// The avplay will configure and provide challenged data through ondrmevent() callback.
// Once challenge data is received, the application should first decode challenge data using base64, and obtain license from the license server.
var license_data;// After obtaining license data, encode it using base64 and save into this 'license_data'.
webapis.avplay.setDrm("PLAYREADY", "InstallLicense", license_data);
// 1.2. PlayReady without GenChallenge
var appdata={"DeleteLicenseAfterUse":true, "LicenseServer":"http://license.company.com", "CustomData":"mycustom"}
webapis.avplay.setDrm("PLAYREADY", "SetProperties", JSON.stringify(appdata));
// 2. Verimatrix example: Initializing Verimatrix DRM
// Application should call GetUID only once and save it for further use, after every open API GetUID need not be called.
if (true)
{
// Since Tizen version 5.0
DOMString Verimatrix_UID = webapis.avplay.getUID("VERIMATRIX");
}
else
{
// Before Tizen version 5.0
webapis.avplay.setDrm( "VERIMATRIX", "GetUID", "");
}
// After open application should follow following sequence
var DrmParam = {}
DrmParam.CompanyName ="MyCompany";
DrmParam.IPTV="public2.verimatrix.com";
DrmParam.Web="public-ott-nodrm.verimatrix.com:80";
if (true)
{
// Since Tizen version 5.0
webapis.avplay.setDrm( "VERIMATRIX", "SetProperties", JSON.stringify(DrmParam));
}
else
{
// Before Tizen version 5.0
webapis.avplay.setDrm( "VERIMATRIX", "Initialize", JSON.stringify(DrmParam));
}
// 3. Widevine Modular example
var sessionId;
var Listener =
{
ondrmevent: function(drmType, drmData)
{
if(drmData.name === 'Challenge')
{
sessionId = drmData.session_id;
// take drmData.challenge and drmData.serverurl to obtain license data.
}
}
}
webapis.avplay.setListener(Listener);
var DrmParam = {}
// Sample session value; App must set there own session id.
DrmParam.AppSession = "test-session";
DrmParam.DataType = "MPEG-DASH";
if (true)
{
// Since Tizen version 5.0
webapis.avplay.setDrm("WIDEVINE_CDM", "SetProperties", JSON.stringify(DrmParam));
}
else
{
// Before Tizen version 5.0
webapis.avplay.setDrm("WIDEVINE_CDM", "Initialize", "");
webapis.avplay.setDrm("WIDEVINE_CDM", "widevine_app_session", DrmParam.AppSession);
webapis.avplay.setDrm("WIDEVINE_CDM", "widevine_data_type", DrmParam.DataType);
}
// The avplay will configure and provide challenged data and session id through ondrmevent() callback.
// Once challenge data is received, the application should first decode challenge data using base64, and obtain license from the license server.
var license_data;// After obtaining license data, encode it using base64 and save into this 'license_data'.
var LicenseParam = sessionId + "PARAM_START_POSITION" + license_data + "PARAM_START_POSITION";
webapis.avplay.setDrm("WIDEVINE_CDM", "widevine_license_data", LicenseParam);
Remark :
'GetUID' operation has been deprecated from Tizen version 5.0, rather application should use getUID() API. 'Initialize' and 'Finalize' operations have been deprecated from Tizen version 5.0. Because these are being executed by avplay itself. 'widevine_app_session' and 'widevine_data_type' operations have been deprecated from Tizen version 5.0. Because these are merged into "SetProperties". Please refer to setDrm() example.getUID
DOMString getUID(AVPlayDrmType drmType);
Product : TV, AV_BD
Parameters :
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type SecurityError, if the application does not have the privilege to call this method.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
var verimatrixUID = webapis.avplay.getUID("VERIMATRIX"); //Verimatrix example: Retrieving the Verimatrix UID
setSoundAnalysisListener
void setSoundAnalysisListener(AVPlaySoundAnalysisCallback soundAnalysisCallback);
Product : TV, AV_BD
Parameters:
Constraint
Deprecated : 2.4
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
webapis.avplay.setSoundAnalysisListener(soundAnalysisListener);
function soundAnalysisListener(dataArray)
{
// Listener registered to and receiving data from AVPlay
var BarHeight = 0;
var AbsValue = 0;
var Threshold = 70;
for (var I = 0; I < dataArray.length; I++)
{
AbsValue = Math.abs(dataArray[I]);
if (AbsValue > Threshold)
{
BarHeight = Main.barContainerHeight;
}
else
{
BarHeight = Math.round((AbsValue/Threshold) * Main.barContainerHeight);
}
if (BarHeight == 0) BarHeight = 1;
{
document.getElementById('frequencyBar' + I).style.height = BarHeight + 'px';
}
console.log("Sound analysis: " + dataArray.toString());
}
}
unsetSoundAnalysisListener
void unsetSoundAnalysisListener();
Product : TV, AV_BD
Constraint
Deprecated : 2.4
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
webapis.avplay.unsetSoundAnalysisListener();
setSilentSubtitle
void setSilentSubtitle(boolean onoff);
Product : TV, AV_BD
Parameters:
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
webapis.avplay.setSilentSubtitle(true);
setExternalSubtitlePath
void setExternalSubtitlePath(DOMString filePath);
Product : TV, AV_BD
Parameters:
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
webapis.avplay.setExternalSubtitlePath(uri);
setSubtitlePosition
void setSubtitlePosition(long position);
Product : TV, AV_BD
Parameters:
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
webapis.avplay.setSubtitlePosition(position_millisec);
setDisplayMethod
void setDisplayMethod(AVPlayDisplayMode displayMode);
Product : TV, AV_BD
Parameters:
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
webapis.avplay.setDisplayMethod("PLAYER_DISPLAY_MODE_FULL_SCREEN");
setSelectTrack
void setSelectTrack(AVPlayStreamType trackType, long trackIndex);
Product : TV, AV_BD
Parameters:
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
var totalTrackInfo = webapis.avplay.getTotalTrackInfo();
for (var i=0; i < totalTrackInfo.length; i++)
{
if(totalTrackInfo.type == 'TEXT')
{
console.log('Find subtitle track.');
console.log('subtitle track index is ' + totalTrackInfo.index);
console.log('subtitle track language is ' + totalTrackInfo.extra_info.track_lang);
}
}
// Choose subtitle track index 2
webapis.avplay.setSelectTrack('TEXT',2);
Remark :
Since tizen version 5.0, the trackType "AUDIO" is supported for DASH streaming.getCurrentStreamInfo
AVPlayCurrentStreamInfo getCurrentStreamInfo();
Product : TV, AV_BD
Return value:
AVPlayStreamInfo structure containing tracktype, extraInfo and index for the current stream
Constraint
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
var StreamInfo = webapis.avplay.getCurrentStreamInfo();
var Text = '';
for (var I = 0; I < StreamInfo.length; I++)
{
Text += 'index: ' + StreamInfo[I].index + '';
Text += 'type: ' + StreamInfo[I].type + '';
Text += 'extra_info: ' + StreamInfo[I].extra_info + '';
}
//All streams have extra_info as a JSONString.
//video extra_info example : "{fourCC:"H264","Width":"1920","Height":"1080","Bit_rate":" 477000"}"
//audio extra_info example : "{"language":"eng","channels":"2","sample_rate":"44100","bit_rate":"96000","fourCC":"AACL"}"
//text(subtitle) extra_info example : "{"track_num":"0","track_lang":"eng","subtitle_type":"-1","fourCC":"TTML"}"
//If the stream is invalid, the DOMString is null and the index value is -1.
Remark :
For the adaptive streaming such as HLS, DASH and SmoothStreaming, the 'language' is same as what represented on given manifest file.getTotalTrackInfo
AVPlayStreamInfo[] getTotalTrackInfo();
Product : TV, AV_BD
Return value:
AVPlayStreamInfo[] structure containing tracktype, extraInfo and Index of current streamConstraint
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
var TrackInfo = webapis.avplay.getTotalTrackInfo();
var Text = 'type of track info: ' + typeof TrackInfo + '';
Text += 'length: ' + TrackInfo.length + '';
for (var I = 0; I < TrackInfo.length; I++)
{
Text += 'index: ' + TrackInfo[I].index + '';
Text += 'type: ' + TrackInfo[I].type + '';
Text += 'extra_info: ' + TrackInfo[I].extra_info + '';
}
Remark :
For the adaptive streaming such as HLS, DASH and SmoothStreaming, the 'language' is same as what represented on given manifest file.setStreamingProperty
void setStreamingProperty(AVPlayStreamingPropertyType propertyType, DOMString propertyParam);
Product : TV, AV_BD
Parameters:
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
//Smooth Streaming example:
var BitRateString = "BITRATES=5000~10000|STARTBITRATE=HIGHEST|SKIPBITRATE=LOWEST"; webapis.avplay.setStreamingProperty("ADAPTIVE_INFO", BitRateString);
//Prebuffer mode example:
webapis.avplay.setStreamingProperty("PREBUFFER_MODE", time_in_miliseconds);
Player1 => Playback of Main Content
Player2 => Playback of advertisement (Buffered the ad content before playback).
Player1 = webapis.avplaystore.getPlayer();
Player2 = webapis.avplaystore.getPlayer();
Player1.open('http://www.example.com/example_1.mp4');
Player1.setDisplayRect(x, y, width, height);
Player1.prepare();
Player1.play();
Player2.open('http://www.example.com/example_2.mp4');
Player2.setStreamingProperty("PREBUFFER_MODE", "5000");
Player2.setDisplayRect(x, y, width, height);
Player2.prepare();
Player1.stop();
Player2.play();
//User-agent example:
webapis.avplay.setStreamingProperty("USERAGENT", "samsungsmooth-agent/1.1");
//Setting resolution information for HLS/DASH
webapis.avplay.setStreamingProperty("ADAPTIVE_INFO", "FIXED_MAX_RESOLUTION=7680X4320");
Remark :
"WIDEVINE" unit has been deprecated from Tizen version 4.0getStreamingProperty
DOMString getStreamingProperty(AVPlayStreamingPropertyType propertyType);
Product : TV, AV_BD
Parameters:
Return value:
DOMString Property valueConstraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
var Text = 'AVAILABLE_BITRATE: ' + webapis.avplay.getStreamingProperty ("AVAILABLE_BITRATE") ;
Text += 'CURRENT_BANDWIDTH: ' + webapis.avplay.getStreamingProperty ("CURRENT_BANDWIDTH") + '';
Text += 'IS_LIVE: ' + webapis.avplay.getStreamingProperty ("IS_LIVE") +'';
@endparblock @code
var StartTime = webapis.avplay.getStreamingProperty("GET_LIVE_DURATION").split('|')[0];
var EndTime = webapis.avplay.getStreamingProperty("GET_LIVE_DURATION").split('|')[1];
if (StartTime > targetSeekTime)
{
if (EndTime < targetSeekTime)
{
webapis.avplay.seekTo(targetSeekTime); //ms
}
}
Remark :
GET_SERVER_TIME_SCALE and GET_ABSOLUTE_SERVER_TIME: Supported for Smooth Streaming only.getVersion
DOMString getVersion();
Product : TV, AV_BD
Return value:
DOMString string current versionConstraint
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type UnknownError, for any other error.
Code example:
var Version = webapis.avplay.getVersion();
suspend
void suspend();
Product : TV, AV_BD
Constraint
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
document.addEventListener("visibilitychange", function()
{
if(document.hidden)
{
// Something you want to do when application is paused.
console.log("lifecycle [pause]");
webapis.avplay.suspend();
}
else
{
// Something you want to do when application is resumed.
console.log("lifecycle [resume]");
webapis.avplay.restore();
}
});
restore
void restore(DOMString URL, optional unsigned long? resumeTime, optional boolean? bPrepare);
Product : TV, AV_BD
Parameters
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
document.addEventListener("visibilitychange", function()
{
if(document.hidden)
{
// Something you want to do when application is paused
console.log("lifecycle [pause]");
webapis.avplay.suspend();
}
else
{
// Something you want to do when application is resumed
console.log("lifecycle [resume]");
webapis.avplay.restore(url, 0, false);
}
});
restoreAsync
void restoreAsync(DOMString URL, optional unsigned long? resumeTime, optioanl boolean? bPrepare, optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback);
Product : TV, AV_BD
Parameters
Constraint
Exceptions:
with error type TypeMismatchError, if an input parameter is not compatible with its expected type.
with error type NotSupportedError, if this feature is not supported.
with error type InvalidValuesError, if any input parameter contains an invalid value.
with error type InvalidStateError, if it is called in an invalid state.
with error type UnknownError, for any other error.
Code example:
document.addEventListener("visibilitychange", function()
{
if(document.hidden)
{
// Something you want to do when application is paused
console.log("lifecycle [pause]");
webapis.avplay.suspend();
}
else
{
// Something you want to do when application is resumed
console.log("lifecycle [resume]");
try
{
var successCallback = function()
{
console.log("success");
}
var errorCallback = function(err)
{
throw new Error('Error:' + err.name);
}
webapis.avplay.restoreAsync(url, 0, false, successCallback, errorCallback);
}
catch (e)
{
console.log(e);
}
}
});
[Callback=FunctionOnly, NoInterfaceObject] interface AVPlayPlaybackCallback{
void onbufferingstart();
void onbufferingprogress(unsigned long percent);
void onbufferingcomplete();
void oncurrentplaytime(unsigned long currentTime );
void onstreamcompleted();
void onevent(AVPlayEvent eventid, DOMString data );
void onerror(AVPlayError eventid);
void ondrmevent(AVPlayDrmType type, drmData data);
void onsubtitlechange(unsigned long duration, DOMString subtitles, unsigned long type, AVPlaySubtitleAttribute attributes);
};
onbufferingstart
void onbufferingstart();
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type UnknownError, for any other error.
Code example:
onbufferingstart: function()
{
console.log("Buffering start.");
}
onbufferingprogress
void onbufferingprogress(unsigned long percent);
Parameters:
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type UnknownError, for any other error.
Code example:
onbufferingprogress: function(percent)
{
console.log("Buffering progress data : " + percent);
}
onbufferingcomplete
void onbufferingcomplete();
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type UnknownError, for any other error.
Code example:
onbufferingcomplete: function()
{
console.log("Buffering complete.");
}
oncurrentplaytime
void oncurrentplaytime(unsigned long currentTime );
Parameters:
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type UnknownError, for any other error.
Code example:
oncurrentplaytime: function(currentTime)
{
console.log("Current playtime: " + currentTime);
}
onstreamcompleted
void onstreamcompleted();
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type UnknownError, for any other error.
Code example:
onstreamcompleted: function(currentTime)
{
console.log("Stream Completed");
}
onevent
void onevent(AVPlayEvent eventid, DOMString data );
Parameters:
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type UnknownError, for any other error.
Code example:
onevent: function(eventType, eventData)
{
console.log("OnEvent Callback with eventType: " + eventType);
}
onerror
void onerror(AVPlayError eventid);
Parameters:
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type UnknownError, for any other error.
Code example:
onerror: function(eventType)
{
console.log("OnError Event Callback with eventType: " + eventType);
}
ondrmevent
void ondrmevent(AVPlayDrmType type, drmData data);
Parameters:
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type UnknownError, for any other error.
Code example:
ondrmevent: function(drmType, drmData)
{
console.log("DRM callback, type: " + drmType + ", data: " + drmData);
if(drmData.name === 'Challenge')
{
var ChallengeData =
{
"NAME": drmData.name,
"SESSION_ID": drmData.session_id,
"CHALLENGE": drmData.challenge,
"CHALLENGE_LEN": drmData.challenge_len,
"SERV_URL": drmData.serverurl,
"SERV_URL_LEN": drmData.serverurl_len
}
// Use challenge data to get drm license.
}
else if (drmData.name === 'DrmError')
{
var ErrorInfo =
{
"NAME": drmData.name,
"ERROR_CODE": drmData.code,
"ERROR_MESSAGE": drmData.message // Generally, it's human readable message.
}
}
}
onsubtitlechange
void onsubtitlechange(unsigned long duration, DOMString subtitles, unsigned long type, AVPlaySubtitleAttribute attributes);
Parameters:
Exceptions:
with error type NotSupportedError, if this feature is not supported.
with error type UnknownError, for any other error.
Code example:
onsubtitlechange: function(duration, text, data3, data4)
{
console.log("Subtitle Changed.");
}
module AVPlay {
enum AVPlayPlayerState {
"NONE",
"IDLE",
"READY",
"PLAYING",
"PAUSED"
};
enum AVPlayDisplayMode {
"PLAYER_DISPLAY_MODE_LETTER_BOX",
"PLAYER_DISPLAY_MODE_FULL_SCREEN",
"PLAYER_DISPLAY_MODE_AUTO_ASPECT_RATIO"
};
enum AVPlayBufferOption {
"PLAYER_BUFFER_FOR_PLAY",
"PLAYER_BUFFER_FOR_RESUME"
};
enum AVPlayBufferSizeUnit {
"PLAYER_BUFFER_SIZE_IN_BYTE",
"PLAYER_BUFFER_SIZE_IN_SECOND"
};
enum AVPlayStreamingPropertyType {
"COOKIE",
"USER_AGENT",
"PREBUFFER_MODE",
"ADAPTIVE_INFO",
"SET_MODE_4K",
"PROPERTY_HD_AUDIO",
"LISTEN_SPARSE_TRACK",
"IS_LIVE",
"AVAILABLE_BITRATE",
"GET_LIVE_DURATION",
"CURRENT_BANDWIDTH",
"WIDEVINE"
};
enum AVPlayDrmType {
"PLAYREADY",
"VERIMATRIX",
"WIDEVINE_CDM"
};
enum AVPlayDrmOperation {
"SetProperties",
"InstallLicense",
"ProcessInitiator",
"GetUID",
"Initialize",
"Finalize",
"widevine_license_data",
"widevine_app_session",
"widevine_data_type"
};
enum AVPlayStreamType {
"VIDEO",
"AUDIO",
"TEXT"
};
enum AVPlayError{
"PLAYER_ERROR_NONE",
"PLAYER_ERROR_INVALID_PARAMETER",
"PLAYER_ERROR_NO_SUCH_FILE",
"PLAYER_ERROR_INVALID_OPERATION",
"PLAYER_ERROR_SEEK_FAILED",
"PLAYER_ERROR_INVALID_STATE",
"PLAYER_ERROR_NOT_SUPPORTED_FILE",
"PLAYER_ERROR_INVALID_URI",
"PLAYER_ERROR_CONNECTION_FAILED",
"PLAYER_ERROR_GENEREIC"
};
enum AVPlayEvent {
"PLAYER_MSG_NONE",
"PLAYER_MSG_RESOLUTION_CHANGED",
"PLAYER_MSG_BITRATE_CHANGE",
"PLAYER_MSG_FRAGMENT_INFO",
"PLAYER_SPARSE_TRACK_DETECT",
"PLAYER_STREAMING_EVENT",
"PLAYER_MSG_HTTP_ERROR_CODE",
"PLAYER_MSG_DRM_CHALLENGE_DATA"
};
dictionary AVPlayStreamInfo {
unsigned long index;
unsigned long adaption_index;
unsigned long alternate_index;
AVPlayStreamType type;
DOMString extra_info;
};
dictionary AVPlaySubtitleAttribute {
DOMString attr_type;
long start_pos;
long stop_pos;
};
[NoInterfaceObject] interface AVPlayManagerObject {
readonly attribute AVPlayManager avplay;
};
WebApi implements AVPlayManagerObject;
[NoInterfaceObject] interface AVPlayManager {
void open(DOMString url);
void close();
void prepare();
void prepareAsync(optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback);
void setDisplayRect( unsigned long x, unsigned long y, unsigned long width, unsigned long height );
void play();
void seekTo(long milliseconds, optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback);
void stop();
AVPlayPlayerState getState();
void pause();
void jumpForward(long milliseconds, optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback);
void jumpBackward( long milliseconds, optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback );
unsigned long getDuration() ;
unsigned long getCurrentTime() ;
void setTimeoutForBuffering(unsigned long seconds);
void setBufferingParam(AVPlayBufferOption option, AVPlayBufferSizeUnit unit, unsigned long amount);
void setSpeed(long playbackSpeed);
void setListener(AVPlayPlaybackCallback playbackCallback);
DOMString setDrm(AVPlayDrmType drmType, AVPlayDrmOperation drmOperation, DOMString jsonParam);
DOMString getUID ( AVPlayDrmType drmType )
void setSoundAnalysisListener (AVPlaySoundAnalysisCallback soundAnalysisCallback);
void unsetSoundAnalysisListener();
void setSilentSubtitle(boolean onoff);
void setExternalSubtitlePath(DOMString filePath);
void setSubtitlePosition(long position);
void setDisplayMethod(AVPlayDisplayMode displayMode);
void setSelectTrack(AVPlayStreamType trackType, long trackIndex);
AVPlayStreamInfo getCurrentStreamInfo();
AVPlayStreamInfo[] getTotalTrackInfo();
void setStreamingProperty(AVPlayStreamingPropertyType propertyType, DOMString propertyParam);
DOMString getStreamingProperty(AVPlayStreamingPropertyType propertyType);
DOMString getVersion();
void suspend() ;
void restore(DOMString URL, unsigned long resumeTime, boolean bPrepare);
void restoreAsync(DOMString URL, optional unsigned optional long? resumeTime, optioanl optional boolean? bPrepare, optional SuccessCallback? successCallback, optional ErrorCallback? errorCallback) ;
};
[Callback=FunctionOnly, NoInterfaceObject] interface AVPlayPlaybackCallback{
void onbufferingstart();
void onbufferingprogress(unsigned long percent);
void onbufferingcomplete();
void oncurrentplaytime(unsigned long currentTime );
void onstreamcompleted();
void onevent(AVPlayEvent eventid, DOMString data );
void onerror(AVPlayError eventid);
void ondrmevent(AVPlayDrmType type, drmData data);
void onsubtitlechange(unsigned long duration, DOMString subtitles, unsigned long type, AVPlaySubtitleAttribute attributes);
};
};