This topic describes how to play seamless video on a device.
Samsung devices support seamless video playback. Seamless video playback means to play several videos one after another seamlessl.
There are 2 ways for seamless video playback:
This mode can be used when you wants to play videos seamlessly in a single frame. This can be achieved using AVPlay API.
To use setVideoStillMode() method with true: This method would keep the last frame of the video will be shown untill video starts again. This is applicable if you wants to use 2 different videos (one after the other) using seamless playback.
setVideoStillMode()
true
webapis.avplaystore.setVideoStillMode("true");
To use setVideoStillMode() method with false: This method would disable still mode till the time it is enabled again.
false
webapis.avplaystore.playing.setVideoStillMode(“false") ;
Sample code:
var player1 = webapis.avplaystore.getPlayer(); var player2 = webapis.avplaystore.getPlayer(); listener2 = { onstreamcompleted: function() { player2.setVideoStillMode("true"); player2.stop(); player1.open(“http://test.com/test1.mp4”); player1.setListener(Listener1); player1.setDisplayRect(0, 0, 1920, 1080); player1.prepare(); player1.setVideoStillMode("false"); player1.play(); }; listener1 = { onstreamcompleted: function() { player1.setVideoStillMode("true"); player1.stop(); player2.open(“http://test.com/test2.mp4”); player2.setListener(Listener2); player2.setDisplayRect(0, 0, 1920, 1080); player2.prepare(); player2.setVideoStillMode("false"); player2.play(); }; try { player1.open(“http://test.com/test1.mp4”); player1.setListener(listener1); Player1.setDisplayRect(0, 0, 1920, 1080); player1.avplay.prepare(); player1.avplay.play(); } catch (e) { console.log(e); }
The followings are single mode limitations:
This mode can be used when you need to play videos onto 2 separate display rectangles (simultaneously at a time) onto a single screen (1920x1080). It means there can play two playlists in seamless manner when using this mode.
Figure 1. 2 video player instances
To enable mixer mode using setStreamingProperty() with USE_VIDEOMIXER property: This method should be called before prepare() is called and SET_MIXEDFRAME property is set.
setStreamingProperty()
USE_VIDEOMIXER
prepare()
SET_MIXEDFRAME
webapis.avplaystore.setStreamingProperty("USE_VIDEOMIXER"); webapis.avplaystore.prepare();
The "SET_MIXEDFRAME" property is also set before play() is called.
"SET_MIXEDFRAME"
play()
webapis.avplaystore.setStreamingProperty("SET_MIXEDFRAME"); webapis.avplaystore.play();
The below call sequence is for two video areas which can play videos in seamless mode:
Sample code for 2 videos:
try { var player1 = webapis.avplaystore.getPlayer(); var player2 = webapis.avplaystore.getPlayer(); player1.open(url1); player2.open(url2); //listner1 can be used for switching videos in seamless manner related to playlist1. player1.setListener(listener1); // listner2 can be used for switching videos in seamless manner related to playlist2 player2.setListener(listener2); player1.setStreamingProperty("USE_VIDEOMIXER"); player2.setStreamingProperty("USE_VIDEOMIXER"); player1.setDisplayRect(0, 0, 960,540); player2.setDisplayRect(960,540,960,540); player1.prepare(); player2.prepare(); player1.setStreamingProperty("SET_MIXEDFRAME"); player2.setStreamingProperty("SET_MIXEDFRAME"); player1.play(); player2.play(); } catch (e) { console.log(e); }
Sample code for 1 video:
try { var player1 = webapis.avplaystore.getPlayer(); player1.open(url1); player1.setListener(listener1); //listener1 can be used for switching videos in seamless manner related to playlist1 player1.setStreamingProperty("USE_VIDEOMIXER"); player1.setDisplayRect(0, 0, 960,540); player1.prepare(); player1.setStreamingProperty("SET_MIXEDFRAME"); player1.setDisplayRotation("PLAYER_DISPLA Y_ROTATION_90"); //To play portrait content player1.play(); } catch (e) { console.log(e); }
The followings are mixer mode limitations
AVPlayStore