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 set360Rotation(float Horizontal_angle_value, float Vertical_angle_value); void set360Zoom(long Zoom_level); AVPlay360Info get360Info(); 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); 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, Any propparam); Any getStreamingProperty(AVPlayStreamingPropertyType propertyType); DOMString getVersion(); void suspend(); void restore(DOMString URL, long resumeTime, boolean bPrepare); |
AVPlayPlaybackCallback | void onbufferingstart(); void onbufferingprogress(unsigned long percent); void onbufferingcomplete(); void oncurrentplaytime(unsigned long currentTime ); void onstreamcompleted(); void onevent(long eventid, DOMString data ); void onerror(long eventid); void ondrmevent(AVPlayDrmType type, long eventid); void onsubtitlechange(unsigned long duration, DOMString subtitles, unsigned long type, unsigned long attriCount, AVPlaySubtitleAttribute attributes); |
enum AVPlayPlayerState {
"NONE",
"IDLE",
"READY",
"PLAYING",
"PAUSED"
};
The following values are supported
enum AVPlayDisplayMode {
"PLAYER_DISPLAY_MODE_LETTER_BOX",
"PLAYER_DISPLAY_MODE_FULL_SCREEN",
"PLAYER_DISPLAY_MODE_AUTO_ASPECT_RATIO"
};
The following values are supported
enum AVPlayBufferOption {
"PLAYER_BUFFER_FOR_PLAY",
"PLAYER_BUFFER_FOR_RESUME"
};
The following values are supported
enum AVPlayBufferSizeUnit {
"PLAYER_BUFFER_SIZE_IN_BYTE",
"PLAYER_BUFFER_SIZE_IN_SECOND"
};
The following values are supported
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",
"SET_VR360_MODE"
};
The following values are supported
enum AVPlayDrmType {
"PLAYREADY",
"VERIMATRIX",
"WIDEVINE_CDM"
};
The following values are supported
enum AVPlayDrmOperation {
"SetProperties",
"InstallLicense",
"ProcessInitiator",
"GetUID",
"Initialize",
"Finalize",
"widevine_license_data",
"widevine_app_session",
"widevine_data_type"
};
The following values are supported
enum AVPlayStreamType {
"VIDEO",
"AUDIO",
"TEXT"
};
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"
};
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"
};
The following values are supported
dictionary AVPlayStreamInfo {
unsigned long index;
unsigned long adaption_index;
unsigned long alternate_index;
AVPlayStreamType type;
DOMString extra_info;
};
The following values are supported
dictionary AVPlaySubtitleAttribute {
DOMString type;
long start;
long stop;
};
The following values are supported
dictionary AVPlay360Info {
long horizontal_angle;
long vertical_angle;
long zoom_level;
};
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 set360Rotation( float Horizontal_angle_value, float Vertical_angle_value ) ;
void set360Zoom(long Zoom_level);
AVPlay360Info get360Info() ;
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) ;
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, Any propparam) ;
DOMString getStreamingProperty(AVPlayStreamingPropertyType propertyType) ;
DOMString getVersion() ;
void suspend() ;
void restore(DOMString URL, unsigned long resumeTime, boolean bPrepare) ;
};
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);
}
set360Rotation
void set360Rotation( float Horizontal_angle_value, float Vertical_angle_value );
Product : TV
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:
// Left and right rotation using the left and right keys
// For up and down rotation, change the VerticalAngle value
var HorizontalAngle = 0;
var VerticalAngle = 0;
var IntervalTimer = null;
var Interval_time = 20; // Recommended interval
document.addEventListener('keydown', handleKeydown);
document.addEventListener('keyup', handleKeyup);
function handleKeydown(event) {
switch(event.keyCode) {
case 37 : // Use left keydown for left rotation
if(IntervalTimer == null) {
intervalTimer = setInterval(function() {
HorizontalAngle--;
if(HorizontalAngle <= 0) {
HorizontalAngle = 360;
}
webapis.avplay.set360Rotation(HorizontalAngle, VerticalAngle);
}, Interval_time);
}
break;
case 39 : // Use right keydown for right rotation
if(IntervalTimer == null) {
IntervalTimer = setInterval(function() {
HorizontalAngle++;
if(HorizontalAngle >= 360) {
HorizontalAngle = 0;
}
webapis.avplay.set360Rotation(HorizontalAngle, VerticalAngle);
}, Interval_time);
}
break;
}
}
function handleKeyup(event) {
switch(event.keyCode) {
case 37: // Use left and right keyup to stop rotation
case 39:
if(IntervalTimer) {
clearInterval(IntervalTimer);
IntervalTimer = null;
}
break;
}
}
set360Zoom
void set360Zoom(long Zoom_level);
Product : TV
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:
// Zoom in and out using the up and down keys
var ZoomLevel = 0;
document.addEventListener('keydown', handleKeydown);
function handleKeydown(event) {
switch(event.keyCode) {
case 38 : // Use up keydown to zoom-in
ZoomLevel = ZoomLevel + 10;
if(ZoomLevel >= 100) {
ZoomLevel = 100;
}
break;
case 40 : // Use down keydown to zoom-out
ZoomLevel = ZoomLevel - 10;
if(ZoomLevel <= 0) {
ZoomLevel = 0;
}
break;
}
webapis.avplay.set360Zoom(ZoomLevel);
}
get360Info
AVPlay360Info get360Info();
Product : TV
Return value:
AVPlay360Info current versionConstraint
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 AVPlay360Info = webapis.avplay.get360Info();
var Horizontalangle = AVPlay360Info.horizontal_angle;
var Verticalangle = AVPlay360Info.vertical_angle;
var Zoomlevel = AVPlay360Info.zoom_level;
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);
}
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);
}
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 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 play scenario
webapis.setBufferingParam("PLAYER_BUFFER_FOR_PLAY","PLAYER_BUFFER_SIZE_IN_BYTE", 32*1024*1024); // 32 is in MBs
webapis.avplay. setBufferingParam("PLAYER_BUFFER_FOR_PLAY","PLAYER_BUFFER_SIZE_IN_SECOND", 10); // 10 is in seconds
// For resume scenario
webapis.avplay. setBufferingParam("PLAYER_BUFFER_FOR_RESUME","PLAYER_BUFFER_SIZE_IN_BYTE", 32*1024*1024); // 32 is in MBs
webapis.avplay. setBufferingParam("PLAYER_BUFFER_FOR_RESUME","PLAYER_BUFFER_SIZE_IN_SECOND", 10); // 10 is in seconds
setSpeed
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.
limitation
Widevine : -32x ~ 32x
Smooth Streaming : -16x ~ 16x
HLS : Supported only if the master M3U8 has the #EXT-X-I-FRAME-STREAM-INF tag
HTTP and HTTPS: -8x ~ 8x (Repeated seek)
MPEG-DASH: -8x ~ 8x (Trick play (forward on fast network connection (HbbTV), otherwise repeated backward and forward seek (WebApp))
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:
anyConstraint
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
//PlayReady example: Setting license server and custom data
var DrmParam = {};
DrmParam.LicenseServer = "http://license.company.com";
DrmParam.CustomData = "mycustom";
webapis.avplay.setDrm("PLAYREADY", "SetProperties", JSON.stringify(DrmParam));
//Verimatrix example: Initializing Verimatrix DRM
var DrmParam = {};
DrmParam.CompanyName ="MyCompany";
DrmParam.IPTV="public2.verimatrix.com";
DrmParam.Web="public-ott-nodrm.verimatrix.com:80";
webapis.avplay.setDrm( "VERIMATRIX", "Initialize", JSON.stringify(DrmParam));
//Verimatrix example: Retrieving the Verimatrix UID
DOMString Verimatrix_UID = webapis.avplay.setDrm( "VERIMATRIX", "GetUID", ""); // Note: For GetUID, the 3rd parameter is not needed
//Widevine CDM example:
var DrmParam = {};
// Sample session value; you must set your own
DrmParam.widevine_data_session = "AXA20a132bsd-1234-1234-1a2b-f0a12a5789";
DrmParam.widevine_data_type = "MPEG-DASH";
webapis.avplay.setDRM("WIDEVINE_CDM", "Initialize", "");
webapis.avplay.setDRM("WIDEVINE_CDM", "widevine_app_session", DrmParam.widevine_app_session);
webapis.avplay.setDRM("WIDEVINE_CDM", "widevine_data_type", DrmParam.widevine_data_type);
// After receiving challenge data through the onDrmEvent callback, the application parses and saves the "session_id", challenge, and server URL
// The challenge data is posted to the server URL and the license data is received
// Application encodes the received license data in database64 format and sends it to AVPlay
var LicenseParam = sessionId + "PARAM_START_POSITION" + dataBase64 + "PARAM_START_POSITION"; //param1 for setDrm
var LicenseDataLen = dataBase64Len; //param2 for setDrm
webapis.avplay.setDRM("WIDEVINE_CDM", "widevine_license_data", LicenseParam, LicenseDataLen);
setSoundAnalysisListener
void setSoundAnalysisListener(AVPlaySoundAnalysisCallback soundAnalysisCallback);
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.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
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 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);
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.="">
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="" +="" '';="" }="">
setStreamingProperty
void setStreamingProperty(AVPlayStreamingPropertyType propertyType, Any propparam);
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");
//Widevine example:
webapis.avplay.setStreamingProperty ("WIDEVINE","DEVICE_ID=null|DEVICET_TYPE_ID=60|DRM_URL=https://~~~|I_SEEK=TIME|CUR_TIME=PTS|PORTAL=~~");
getStreamingProperty
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") +'';
Text += 'AVAILABLE_BITRATE': ' + webapis.avplay.getStreamingProperty ("AVAILABLE_BITRATE") +'';
Text += 'LISTEN_SPARSE_TRACK' + webapis.avplay.getStreamingProperty ("LISTEN_SPARSE_TRACK") +'';
Code example:
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="" }="" }="" get_live_duration="" is="" available="" since="" 2016="" tv="" models.="" is_live,="" available_bitrate,="" get_live_duration="" and="" current_bandwith:="" supported="" for="" smooth="" streaming,="" hls,="" and="" dash.="" get_server_time_scale="" and="" get_absolute_server_time:="" supported="" for="" smooth="" streaming="">
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, long resumeTime, 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);
}
});
[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, unsigned long attriCount, 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(drmEvent, drmData) {
console.log("DRM callback: " + drmEvent + ", data: " + drmData);
}
/*
drmData
{
readonly attribute DOMString name: Message name
If the name is "Challenge", it is challenge data posted from the platform. The application can store the challenge data in the following way:
if (drmData.name == "Challenge") {
var EventDataObj = {
"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
};
}
If the name is "DrmError", DRM processing has encountered an error.
readonly attribute DOMString code : For "DrmError" message only; the DRM error code
readonly attribute DOMString message : For "Challenge", the challenge data string. For "DrmError", the DRM error message.
readonly attribute DOMString reserved : Currently unused
}
*/
onsubtitlechange
void onsubtitlechange(unsigned long duration, DOMString subtitles, unsigned long type, unsigned long attriCount, 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",
"SET_VR360_MODE"
};
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 type;
long start;
long stop;
};
dictionary AVPlay360Info {
long horizontal_angle;
long vertical_angle;
long zoom_level;
};
[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 set360Rotation( float Horizontal_angle_value, float Vertical_angle_value );
void set360Zoom(long Zoom_level);
AVPlay360Info get360Info();
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);
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, Any propparam);
DOMString getStreamingProperty(AVPlayStreamingPropertyType propertyType);
DOMString getVersion();
void suspend() ;
void restore(DOMString URL, unsigned long resumeTime, boolean bPrepare);
};
[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, unsigned long attriCount, AVPlaySubtitleAttribute attributes);
};
};