How to play list of files in order

Hello everybody, we need some help in playing a playlist.

It is possible to play single mp4 file through http:// web server where the file is presented as an in xml

Now say we have file1.mp4 , file2.mp4 , we need to play them all with single click when user selects that item to play in a sequence ,
can someone guide us how to do this. may be through a m3u8 playlist ? if yes how to format the playlist,

being VOD , does roku also support any other url other than web server http url to publish VOD ?

Thank you
Rama

HLS enables playlist support in the sense that you can mix segments from different sources. For example, you could have your main content intermixed with ads. The Roku will take care of the different pts values from the different encoding sources.

However, there is no way to do playlists of .mp4 files without buffering. If you can live with buffering between each stream in your playlist, the following solution would work:


Function displayVideo()
    print "Displaying video: "
    p = CreateObject("roMessagePort")
    video = CreateObject("roVideoScreen")
    video.setMessagePort(p)

    video2 = CreateObject("roVideoScreen")
    p2 = CreateObject("roMessagePort")
    video2.setMessagePort(p2)

    videoclip = CreateObject("roAssociativeArray")
    videoclip.StreamBitrates = [0]
    videoclip.StreamQualities = ["HD"]
    videoclip.StreamUrls = ["yourFirstStreamURL"]
    videoclip.StreamFormat="mp4"

    videoclip2 = CreateObject("roAssociativeArray")
    videoclip2.StreamBitrates = [0]
    videoclip2.StreamUrls = ["yourSecondStreamURL"]
    videoclip2.StreamQualities = ["HD"]
    videoclip2.StreamFormat = "mp4"

    lastSavedPos   = 0
    statusInterval = 10 'position must change by more than this number of seconds before saving

    video.SetContent(videoclip)
    video.SetPositionNotificationPeriod( 1 )
    video.show()
    pos1 = videoEventLoop(video, videoclip)

    video2.SetContent(videoclip2)
    video2.show()
    pos2 = videoEventLoop(video2, videoclip2)

End Function

'*************************************************************
'** videoEventLoop()
'*************************************************************
Function videoEventLoop(video As Object, videoclip As Object, nowpos=0 As Integer) As Integer
    validateParam(video, "roVideoScreen", "videoEventLoop")
    validateParam(videoclip, "roAssociativeArray", "videoEventLoop")
    lastSavedPos   = 0
    statusInterval = 10 'position must change by more than this number of seconds before saving
    while true
        msg = wait(0, video.GetMessagePort())
        if type(msg) = "roVideoScreenEvent"
            if msg.isScreenClosed() then 'ScreenClosed event
                print "Closing video screen"
                return nowpos
            else if msg.isPlaybackPosition() then
                nowpos = msg.GetIndex()
                if nowpos > 10000
                    
                end if
                if nowpos > 0
                    if abs(nowpos - lastSavedPos) > statusInterval
                        lastSavedPos = nowpos
                    end if
                end if
            else if msg.isRequestFailed()
                print "play failed: "; msg.GetMessage()
                return -1
            else
                print "Unknown event: "; msg.GetType(); " msg: "; msg.GetMessage()
            endif
        end if
    end while
    return nowpos
End Function

–Kevin

If you have the extra server space and time to do it, you could re-encode the mp4’s into one larger file, merging them, to eliminate buffering, and have that played instead.

Hmm, not a bad idea to merge, just checking the remote and i see no button there to do a skip to next track type . thought if i could publish a set of programs in one item and user would be able to select whichever program by skipping, the other way is to present each program as an item

Kevin, you got me wrong there, to insert AD’s ( it’s great idea we need in later stage though)

file1.mp4
file2.mp4
etc..

all need to be presented as play list. and

in real networks there used to be ram file where the file contained rtsp links to each file one by one, when ram file was called from web server to real player, the player plays these files one by one in sequence we are looking for same thing to do here with roku but how ?

This thread (viewtopic.php?f=34&t=32501) may be of help.