Seamless Video Playback

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:

Single Mode

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.

     webapis.avplaystore.setVideoStillMode("true"); 
    
    
  • To use setVideoStillMode() method with false:
    This method would disable still mode till the time it is enabled again.

    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:

  • The AVPlay API supports only http streaming (.mp4).
  • Maximum fps supported <= 60.0 fps as comparision to mixer mode which can play only upto 30.0 FPS.
  • MUST use same resolution and same FPS contents for seamless videos switching (Recomendation).
  • UHD seamless playback is supported using Single Mode.
  • ONLY 1 video would be displayed on the screen.

Mixer Mode

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.

  • Maximum two videos output on one display.
  • One video frame mixed with two videos frames.
  • Only one audio allocate to the first player which is prepared first.

Figure 1. 2 video player instances

Figure 1. 2 video player instances

  1. 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.

    webapis.avplaystore.setStreamingProperty("USE_VIDEOMIXER");
    webapis.avplaystore.prepare();
    
  2. The "SET_MIXEDFRAME" property is also set before play() is called.

    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

  • The AVPlay API is supported ONLY for http streaming (.mp4).
  • Maximum FPS supported <=30.0 FPS
  • UHD content is NOT supported in MIXER mode.
  • Maximum 4 AVPlayStore instances can be created at a time.