GUIDE

GUIDE


RTP/UDP Streaming

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

Figure:1 RTP/UDP Streaming Information


Streaming Prerequisites

    1. Wired network is MUST for IPTV streaming.
    1. IPv4 multicasting requires IGMP2 and above versions for Tizen devices.
    1. Network switch/router should support 80MBps data transfer.
    1. udp streams, UDP packet starts with sync byte x47.
    • URL MUST be udp://IP:Port
    • RTP streams, RTP packet contains extra 12 bytes header, after that UDP packet will follow.
    • URL MUST be udp://IP:Port
    1. The IP network with multicast support is required for streaming solution.

    Multicast Address:

    • 234.0.0.0 to238.255.255.255 for streaming.[Recommended]
    • [ipv4 address]The first 3 octets should be same for a group;
      • last octet should be unique for multicast streams. [i.e. 235.10.1.xxx]
    • 224.x.x.x& 239.x.x.xNOTto be used for multicast streams.

Clear Streaming

API's are different for SSSP models to play the clear streaming.

SSSP4:

  • To play RTP/UDP streaming using B2B RTP Play API.
  • MUST be included b2bapis.js file in web application.

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 :

  • Use B2B Avplay API to play streaming content.
  • MUST be included b2bavplay.js file in web application.

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); 
            }

Encrypted Streaming

API's are different on SSSP models to play the encrypted streaming.

SSSP4

  • Execute the setDrm to play encrypted content
  • MUST be included the security privilage in config.xml file.
<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:

  • Execute the setDrm to play encrypted content
  • MUST be included the security privilage in config.xml file.

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); 
            }

Streaming on Landscape & Portrait mode

  • Landscape mode & Portrait mode is supported from SSSP4 onwards.

API Syntax

Parameter:

  • PLAYER_DISPLAY_ROTATION_NONE
  • PLAYER_DISPLAY_ROTATION_90
  • PLAYER_DISPLAY_ROTATION_180
  • PLAYER_DISPLAY_ROTATION_270
webapis.avplay.setDisplayRotation("PLAYER_DISPLAY_ROTATION_0");
Par

Closed Caption support for RTP/UDP Streaming

Caption APIs are required to enable or disable captions in the streams containing them.
Caption APIs are supported for SSSP6 US models.

SSSP6:

  • Use B2B Avplay API to play streaming content.
  • Use TvInfo API to enable/disable caption in streaming.
  • webapis file must be included in web application.

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);

Streaming Limitation on SSSP Screens

  • TrickPlay/Seek is NOT supported in Unicast Streaming.
  • RTP or UDP is ONLY supported.
  • Streaming is limited to 1 playback at 1 screen.
  • Streaming + AVPlay/HTML is NOT supported on 1 screen.

위로가기