Forum Discussion

krazy's avatar
krazy
Visitor
15 years ago

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 <item> 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

5 Replies

  • 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
  • destruk's avatar
    destruk
    Streaming Star
    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 ?