Playing simple video in Roku sdk
Posted By : Deepak Kumar | 29-May-2014
This blog will help you to understand , how a video is played on roku sdk.
The application starts from main , it simply configures theme attributes like image,logo and a short desciption about the video.
Sub Main() initTheme() 'sets attributes for themes like image logo,title.
Now initialize values to be set further for your sceen board .values like title ,desciption,length , content type for video.
itemAttributes = { ContentType:"episode" SDPosterUrl:"file://pkg:/images/CraigVenter.jpg" HDPosterUrl:"file://pkg:/images/CraigVenter.jpg" Description:"In this video Craig Venter talks about his research on fourth-generation fuels. He discusses about generating new chromosomes using digital technology, the causes why one should do this and bioethics of synthtic life." Length:1972 Title:"Craig Venter asks, Can new life be created out of this digital universe ?" } showItemDetails(itemAttributes) End Sub
Function showItemDetails(itemAttributes as object) As Boolean port = CreateObject("roMessagePort") boardScreen = CreateObject("roSpringboardScreen") boardScreen.SetMessagePort(port)
To defer screen updates temporarily to avoid flashing.
boardScreen.AllowUpdates(false)
if itemAttributes <> invalid and type(itemAttributes) = "roAssociativeArray" boardScreen.SetContent(itemAttributes) endif boardScreen.SetDescriptionStyle("generic") 'You may also use audio, movie, video, generic, generic+episode=4x3,
This will clear buttons ,if any appears on screen board
boardScreen.ClearButtons()
This will add a button on your screen board.
boardScreen.AddButton(1,"Play") boardScreen.AddButton(2,"Go Back")
If you want to disable ratings on screen, set this to false
boardScreen.SetStaticRatingEnabled(false)
boardScreen.AllowUpdates(true) boardScreen.Show() downKey=3 selectKey=6
Now we want that video must play if someone press button "Play" ,process waits untill any event occurs . If "Play" button is selected than this calls playVideo function to play video.
while true message = wait(0, boardScreen.GetMessagePort()) if type(message) = "roSpringboardScreenEvent" if message.isScreenClosed() print "Screen exit" exit while else if message.isButtonPressed() print "Button pressed: "; message.GetIndex(); " " message.GetData() if message.GetIndex() = 1 playVideo() else if message.GetIndex() = 2 return true endif else print "Unknown event: "; message.GetType(); " message: "; message.GetMessage() endif else print "Incorrect type.... type=";message.GetType(); " message: "; message.GetMessage() endif end while return true End Function
To play video we will have to configure "roVideoScreen" object set values like url, qualities,bitrates etc. Here how i did this.
Function playVideo() print "Displaying video: " port = CreateObject("roMessagePort") videoScreen = CreateObject("roVideoScreen") videoScreen.setMessagePort(port) videoclip = CreateObject("roAssociativeArray")
Set the bitrates of video
videoclip.StreamBitrates = [0]
Set the url of video
videoclip.StreamUrls = ["http://video.ted.com/talks/podcast/CraigVenter_2008_480.mp4"]
Quality of video
videoclip.StreamQualities = ["HD"]
Set the video of format
videoclip.StreamFormat = "mp4"
videoclip.Length= 1972 videoclip.Title = "Craig Venter Synthetic Life" videoScreen.SetContent(videoclip) videoScreen.show() lastSavedPos = 0 statusInterval = 10 'position must change by more than this number of seconds before saving
To forward movie by 10 seconds, the following code checks for the current playposition and increases it by 10.
while true message = wait(0, videoScreen.GetMessagePort()) if type(message) = "roVideoScreenEvent" if message.isScreenClosed() then 'ScreenClosed event print "Closing video screen" exit while else if message.isPlaybackPosition() then nowpos = message.GetIndex() if nowpos > 10000 end if if nowpos > 0 if abs(nowpos - lastSavedPos) > statusInterval lastSavedPos = nowpos end if end if else if message.isRequestFailed() print "play failed: "; message.GetMessage() else print "Unknown event: "; message.GetType(); " message: "; message.GetMessage() endif end if end while End Function

Cookies are important to the proper functioning of a site. To improve your experience, we use cookies to remember log-in details and provide secure log-in, collect statistics to optimize site functionality, and deliver content tailored to your interests. Click Agree and Proceed to accept cookies and go directly to the site or click on View Cookie Settings to see detailed descriptions of the types of cookies and choose whether to accept certain cookies while on the site.
About Author
Deepak Kumar
Deepak is a bright Web App Developer, and has good knowledge of Core Java, Advance Java (Servlet, JSP, JSTL) and Hibernate, JUnit.