This topic describes how to play Live(RTP/UDP) streaming on SSSP device.
RTP/UDP streaming supported on Samsung Smart Signage Platform.To play Live streaming content using the AVplay API .
Below tabel describe the supported protocols & Digital Right Management (DRM).
Figure:1 RTP/UDP Streaming Information
Multicast Address:
API's are different for SSSP models to play the clear streaming.
SSSP4:
Code Example
url = "rtp://239.10.10.11:11000"; or (url = "udp://239.10.10.11:11000";)
var b2brtpplayCallback = function (eventName, param) {
//code for handling Middleware event
console.log ("[setEventListener] eventName : " + eventName
+ " | param : " + param);
});
var onSuccess = function(val) {
console.log("[setDrm] success result: " + val);
};
var onError = function(error) {
console.log("[setDrm] code :" + error.code + " error name: " + error.name + " message " + error.message);
};
b2bapis.b2brtpplay.setEventListener(b2brtpplayCallback);
b2bapis.b2brtpplay.playChannel(url, onSuccess, onError);
b2bapis.b2brtpplay.setDisplayRect(0, 0, 1920, 1080,onSuccess,onError);
SSSP5 onwards Models :
Code Example
var Player = webapis.avplay;
var url =”udp://<IP>:<Port>”;
var listener =function() {
onevent: function(eventType, eventData) {
console.log("event type error : " + eventType + ", data: " + eventData);
},
ondrmevent: function(drmEvent, drmData) {
console.log("DRM callback: " + drmEvent + ", data: " + drmData);
},
onerror: function(eventType) {
console.log("event type error : " + eventType);
}
}
try {
Player.open(url);
Player.setDisplayRect(0, 0, 1920, 1080);
Player.setListener(listener);
Player.prepareAsync(function() {
Player.play();
});
} catch (error) {
console.log("Error name = "+ error.name + ", Error message = " + error.message);
}
API's are different on SSSP models to play the encrypted streaming.
SSSP4
<tizen:privilegename="http://developer.samsung.com/privilege/drmplay”/>
API Syntax:
var onSuccess = function(val) {
console.log("[setDrm] success result: " + val);
};
var onError = function(error) {
console.log("[setDrm] code :" + error.code + " error name: " + error.name + " message " + error.message);
};
console.log("[setDrm]");
b2bapis.b2brtpplay.setDrm("LYNK","NONE", onSuccess, onError);
Code Example:
url = "rtp://239.10.10.11:11000"; or (url = "udp://239.10.10.11:11000";)
var b2brtpplayCallback = function (eventName, param) {
//code for handling Middleware event
console.log ("[setEventListener] eventName : " + eventName + " | param : " + param);
});
var onSuccess = function(val) {
console.log("[setDrm] success result: " + val);
};
var onError = function(error) {
console.log("[setDrm] code :" + error.code + " error name: " + error.name + " message " + error.message);
};
console.log("[setDrm]");
b2bapis.b2brtpplay.setEventListener(b2brtpplayCallback);
b2bapis.b2brtpplay.setDrm("LYNK","NONE", onSuccess, onError);
b2bapis.b2brtpplay.playChannel(url, onSuccess, onError);
b2bapis.b2brtpplay.setDisplayRect(0, 0, 1920, 1080,onSuccess,onError);
SSSP5 onwards Model:
API Syntax:
try
{
var drmParam = new Object();
drmParam.lynkServer ="NONE";
drmParam.lynkType ="1";
webapis.avplay.setDrm( "LYNK", "Initialize", JSON.stringify(drmParam));
}
catch (e)
{
console.log(e);
}
Code Example
var Player = webapis.avplay;
var url =”udp://231.1.1:12345”;
var listener =function() {
onevent: function(eventType, eventData) {
console.log("event type error : " + eventType + ", data: " + eventData);
},
ondrmevent: function(drmEvent, drmData) {
console.log("DRM callback: " + drmEvent + ", data: " + drmData);
},
onerror: function(eventType) {
console.log("event type error : " + eventType);
}
}
var drmParam = {
LYNKServer:"NONE", // No LYNK server required
type: "1"
};
try {
Player.open(url);
Player.setDisplayRect(0, 0, 1920, 1080);
Player.setListener(listener);
Player.setDrm("LYNK", "Initialize", JSON.stringify(drmParam));
Player.prepareAsync(function() {
Player.play();
});
} catch (error) {
console.log("Error name = "+ error.name + ", Error message = " + error.message);
}
API Syntax
Parameter:
webapis.avplay.setDisplayRotation("PLAYER_DISPLAY_ROTATION_0");
Par
Caption APIs are required to enable or disable captions in the streams containing them.
Caption APIs are supported for SSSP6 US models.
SSSP6:
Code Example
var Player = webapis.avplay;
var url="udp://231.1.1.21:12345";
var rtpUrl="rtp://239.10.10.21:12345";
//Listener for Player
var listener = {
onbufferingstart: function () {
console.log("buffering start");
},
onbufferingprogress: function (percent) {
document.getElementById('test').innerHTML ='<br/>'+'Buffering progress... percent = '+percent+'<br/>';
console.log("Buffering progress... percent = "+percent);
},
onbufferingcomplete: function () {
console.log("buffering complete...");
},
oncurrentplaytime: function (currentTime) {
//console.log("current playtime :: " + currentTime);
},
onevent: function (eventType, eventData) {
console.log("onevent " + eventType + " data " + eventData);
},
onstreamcompleted: function () {
console.log("stream completed...");
},
onerror: function (eventType) {
console.log("Error has occured: "+eventType);
},
onsubtitlechange: function (duration, text, data3, data4) {
console.log("Subtitle changed: duration = "+duration+" | text = "+text+" | data3 = "+data3+" | data4 = "+data4);
},
ondrmevent: function (drmEvent, drmData) {
console.log("DRM callback: " + drmEvent + ", data: " + drmData);
}
};
// start playback for streaming
var play = function(url) {
try {
Player.open(url);
Player.setDisplayRect(0, 0, 1920, 1080);
Player.setListener(listener);
Player.prepareAsync(function() {
Player.play();
});
} catch (error) {
console.log("Could not play the requested URL: "+url+" - exception occurred:"+error+" Error name = "+ error.name + ", Error message = " + error.message);
}
};
//stop playback for streaming
function stop () {
try {
if (Player.getState() !== 'NONE') {
Player.stop();
}
} catch (error) {
console.log("Could not stop the requested URL: "+url+" - exception occurred:"+error+" Error name = "+ error.name + ", Error message = " + error.message);
}
}
// Call sequence for enabling Close Caption in Streaming
var key = webapis.tvinfo.TvInfoMenuKey.CAPTION_ONOFF_KEY;
console.log('key:'+ key);
var value = webapis.tvinfo.TvInfoMenuValue.CAPTION_ON;
console.log('value:'+ value);
var onsuccess = function() {
console.log("caption enable");
};
var onerorr = function() {
console.log("Problem occured .");
};
webapis.tvinfo.setMenuValue(key, value, onsuccess, onerorr);
// Call sequence for disabling Close Caption in Streaming
var key = webapis.tvinfo.TvInfoMenuKey.CAPTION_ONOFF_KEY;
console.log('key:'+ key);
var value = webapis.tvinfo.TvInfoMenuValue.CAPTION_OFF;
console.log('value:'+ value);
var onsuccess = function() {
console.log("caption disable");
};
var onerorr = function() {
console.log("Problem occured .");
};
webapis.tvinfo.setMenuValue(key, value, onsuccess, onerorr);