Handle seek when using the seek bar

In Browser TVSDK, you can seek to a specific position (time) in a stream. A stream can be a sliding-window playlist or video-on-demand (VOD) content.

IMPORTANT

Seeking in a live stream is allowed only for DVR.

  1. Wait for Browser TVSDK to be in a valid state for seeking.

    Valid states are PREPARED, COMPLETE, PAUSED, and PLAYING. Being in a valid state ensures that the media resource has successfully loaded. If the player is not in a valid seekable state, attempting to call the following methods throws an IllegalStateException.

    For example, you can wait for Browser TVSDK to trigger AdobePSDK.MediaPlayerStatusChangeEvent with an event.status of AdobePSDK.MediaPlayerStatus.PREPARED.

  2. Pass the requested seek position to the MediaPlayer.seek method as a parameter in milliseconds.

    This moves the play head to a different position in the stream.

    TIP

    The requested seek position might not coincide with the actual computed position.

    void seek(long position) throws IllegalStateException;
    
  3. Wait for Browser TVSDK to trigger the AdobePSDK.PSDKEventType.SEEK_END event, which returns the adjusted position in the event’s actualPosition attribute:

    player.addEventListener(AdobePSDK.PSDKEventType.SEEK_END, onSeekComplete); 
    onSeekComplete = function (event) {
        // event.actualPosition
    }
    

    This is important because the actual start position after the seek could be different from the requested position. Some of the following rules might apply:

    • Playback behavior is affected if a seek, or other repositioning, ends in the middle of an ad break or skips ad breaks.
    • You can seek only in the asset’s seekable duration. For VOD, that is from 0 through the asset’s duration.
  4. For the seekbar that was created in the example above, listen for setPositionChangeListener() to see when the user is scrubbing:

    seekBar.setPositionChangeListener(function (pos) { 
                    var range = player.seekableRange; 
                    if (range) { 
                        var duration = range.duration; 
                        var time = duration * pos; // seek bar range is [0,1] 
                        player.seek(time); 
     
                        console.log("seek to " + time + " / " + duration); 
                    } 
     
                }); 
    
    
  5. Set up event listener callbacks for changes in the user’s seek activity.

    The seek operation is asynchronous, so Browser TVSDK dispatches these events related to seeking:
    
    • AdobePSDK.PSDKEventType.SEEK_BEGIN to indicate that seek is starting.
    • AdobePSDK.PSDKEventType.SEEK_END to indicate that seeking was successful.
    • AdobePSDK.PSDKEventType.SEEK_POSITION_ADJUSTED to indicate that the media player has readjusted the seek position provided by the user.

On this page

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now