Forum Discussion

doctorew's avatar
doctorew
Visitor
10 years ago

How to switch (or stop) hls stream based on time event

Hi,

I got the sample player script to successfully play an m3u8 we stream throughout the day. However, I want to switch that stream at a particular time to a second stream.

I have my time method working fine (if the app on the private channel begins within either the 1500 or 1600 hour, stream 2 plays, otherwise stream 1 plays.

And in my event loop, I am checking the time. My debug console shows that the time code fires; however, I do not know how to reinitialize the video player:

Tried this:


date = CreateObject("roDateTime")
showtime = date.getHours()'date.getSeconds()
print "|-o-| ts " + videoclip.StreamUrls + " :: " + Str(date.getHours()) + " : " + Str(date.getMinutes()) + " : " + Str(date.getSeconds())
if showtime = 19 Or showtime = 20 then
'if showtime > 19 And showtime < 30 then
print "It's Showtime!!! " + videoclip.StreamUrls + " :: " + Str(date.getHours()) + " : " + Str(date.getMinutes()) + " : " + Str(date.getSeconds())
if videoclip.StreamUrls = "http://path/to/stream_6@156963/master.m3u" then
player.Stop()
video.Close()
videoclip.StreamUrls = "http://path/to/stream_7@156963/master.m3u"
video.SetContent(videoclip)
video.show()
endif


The roku lives in the office (no tv at home :D), so tomorrow, I will attempt to call the initial method:


date = CreateObject("roDateTime")
showtime = date.getHours()'date.getSeconds()
print "|-o-| ts " + videoclip.StreamUrls + " :: " + Str(date.getHours()) + " : " + Str(date.getMinutes()) + " : " + Str(date.getSeconds())
if showtime = 19 Or showtime = 20 then
'if showtime > 19 And showtime < 30 then
print "It's Showtime!!! " + videoclip.StreamUrls + " :: " + Str(date.getHours()) + " : " + Str(date.getMinutes()) + " : " + Str(date.getSeconds())
if videoclip.StreamUrls = "http://path/to/stream_6@156963/master.m3u" then
player.Stop()
video.Close()
showSpringboardScreen(item)
endif


But if somebody has a better idea, I'll try that, too.

Thanks,

Drew

1 Reply

  • I believe I figured this one out:

    In the showSpringboardScreen function:

    date = CreateObject("roDateTime")
    showtime = date.getMinutes()'date.getSeconds()'date.getHours()'screen.GetMessagePort()
    if showtime = 0 or showtime = 10 or showtime = 20 or showtime = 30 or showtime = 40 or showtime = 50 then
    fcstream = "http://uri/i/adultswim_7@156963/master.m3u8"
    else
    fcstream = "http://uri/i/adultswim_6@156963/master.m3u8"
    endif
    DisplayVideo(fcstream)


    displayVideo accepts fcstream as String

    Then in the roVideoScreenEvent loop, I check the time (looking at minutes instead of hours to test the functionality)

    date = CreateObject("roDateTime")
    showtime = date.getMinutes()'date.getSeconds()'date.getHours()'screen.GetMessagePort()
    print "|-oo-| ts " + videoclip.StreamUrls + " :: " + Str(date.getHours()) + " : " + Str(date.getMinutes()) + " : " + Str(date.getSeconds())
    if showtime = 0 or showtime = 10 or showtime = 20 or showtime = 30 or showtime = 40 or showtime = 50 then
    if videoclip.StreamUrls = "http://uri/i/adultswim_6@156963/master.m3u8" then
    print "{-o-} player.Stop()"
    player.Stop()
    print "{-oo-} video.Close()"
    video.Close()
    print "@@ It's Showtime!! " + videoclip.StreamUrls + " :: " + Str(date.getHours()) + " : " + Str(date.getMinutes()) + " : " + Str(date.getSeconds())
    displayVideo("http://uri/i/adultswim_7@156963/master.m3u8")
    endif
    else if showtime = 5 or showtime = 15 or showtime = 25 or showtime = 35 or showtime = 45 or showtime = 55 then
    if videoclip.StreamUrls = "http://uri/i/adultswim_7@156963/master.m3u8" then
    print "{-o-} player.Stop()"
    player.Stop()
    print "{-oo-} video.Close()"
    video.Close()
    print "@@@It's RerunTime!! " + videoclip.StreamUrls + " :: " + Str(date.getHours()) + " : " + Str(date.getMinutes()) + " : " + Str(date.getSeconds())
    displayVideo("http://uri/i/adultswim_6@156963/master.m3u8")
    endif
    endif


    Now that I have the functionality working, I'll look for more elegant / efficient solution.

    Thanks,