jvalero
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-11-2012
03:57 PM
Custom Remote Commands w/ roImageCanvas
I've had mixed success trying to setup custom remote actions using isRemoteKeyPressed() on my roImageCanvas object that is running underneath my roVideoPlayer object. I am able to successfully register remote key presses, I've been able to set <LEFT> to restart from the beginning of the video using
However, I'm having trouble with the other three actions I am trying to setup.
For <RIGHT> I want to skip to the next item in the Video Player playlist. As I haven't been able to find a built in function to do this for me, I've tried the following:
This does seem to jump forward, but for some reason it won't jump to the end of the video like I want it to. And I've checked to make sure the values are lining up by printing them to the console.
See the following log snippet:
Current Length = The length in seconds that the current video playing is.
Button Length = The value in seconds that the the forward press should be using to determine Seek() position e.g. player.Seek(25 * 1000)
As you can see these values are the same, but for some reason it does not jump to the end. It seemingly jumps to a random position on each video, but jumps to the same position if I press more than once on same video.
For the <FFWD> and <REV> I have the following:
As you can see I am trying to increment + or - 5 seconds for each push. However, <REV> starts from the beginning of the video and <FFWD> again jumps to random position for each video.
For clarity sake here is my entire Event Loop
position = 0
player.Seek(position)
However, I'm having trouble with the other three actions I am trying to setup.
For <RIGHT> I want to skip to the next item in the Video Player playlist. As I haven't been able to find a built in function to do this for me, I've tried the following:
position = playList[currentIndex].Length.toInt()
player.Seek(position * 1000)
This does seem to jump forward, but for some reason it won't jump to the end of the video like I want it to. And I've checked to make sure the values are lining up by printing them to the console.
See the following log snippet:
Playlist #: 0
Current Position: 0
Current Video Length: 25
msg = | index = 1
Playlist #: 0
Current Position: 1
Current Video Length: 25
Remote button pressed: 5
Button Length: 25
Current Length = The length in seconds that the current video playing is.
Button Length = The value in seconds that the the forward press should be using to determine Seek() position e.g. player.Seek(25 * 1000)
As you can see these values are the same, but for some reason it does not jump to the end. It seemingly jumps to a random position on each video, but jumps to the same position if I press more than once on same video.
For the <FFWD> and <REV> I have the following:
Else If index = 8 '// <REV>
position = m.position - 5
player.Seek(position * 1000)
Else If index = 9 '// <FWD>
position = m.position + 5
player.Seek(position * 1000)
As you can see I am trying to increment + or - 5 seconds for each push. However, <REV> starts from the beginning of the video and <FFWD> again jumps to random position for each video.
For clarity sake here is my entire Event Loop
'// Listen For Events On Message Port
While True
msg = wait(0, messagePort)
'// Image Canvas Events
If Type(msg) = "roImageCanvasEvent" Then
'// Listen For Remote Keys
If msg.isRemoteKeyPressed()
index = msg.GetIndex()
Print "Remote button pressed: " + index.toStr()
If index = 4 '// <LEFT>
'// Jump To Start Of Video
m.position = 0
player.Seek(m.position)
Else If index = 5 '// <RIGHT>
Print "Button Length: "; m.playList[m.currentIndex].Length
'// Jump To Next Video
position = m.playList[m.currentIndex].Length.toInt()
player.Seek((position - 1) * 1000)
Else If index = 8 '// <REV>
position = m.position - 5
player.Seek(position * 1000)
Else If index = 9 '// <FWD>
position = m.position + 5
player.Seek(position * 1000)
End If
End If
End If
'// Video Player Events
If Type(msg) = "roVideoPlayerEvent" Then
'// Output Status Message
Print "msg = "; msg.GetMessage() " | index = "; msg.GetIndex()
Print "Playlist #: "; m.currentIndex
If msg.isStreamStarted()
Print "Stream Started"
Else If msg.isScreenClosed()
'// Output Message And Exit Loop
Print "Screen Closed"
Exit While
Else If msg.isRequestFailed()
Print "Video request failure: "; msg.GetIndex(); " " msg.GetData()
Else If msg.isStatusMessage()
Print "Video status: "; msg.GetIndex(); " " msg.GetData()
Else If msg.isPlaybackPosition() Then
m.position = msg.GetIndex()
checkPosition = m.position
Print "Current Position: "; m.position
Print "Current Video Length: "; m.playList[m.currentIndex].Length
If checkPosition.toStr() = m.playList[m.currentIndex].Length
m.currentIndex = m.currentIndex + 1
playAd(m.acudeoPolicyId)
End If
Else
Print "Unexpected event type: "; msg.GetType()
End If
End If
End While
2 REPLIES 2

TheEndless
Channel Surfer
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-11-2012
05:18 PM
Re: Custom Remote Commands w/ roImageCanvas
To jump to the next video, you should be able to call SetNext(nextIndex) followed by Play(). You can get the nextIndex by tracking the IsListItemSelected() event, which I don't think is documented for the roVideoPlayer, but it's the same as for roAudioPlayer.
My Channels: http://roku.permanence.com - Twitter: @TheEndlessDev
Instant Watch Browser (NetflixIWB), Aquarium Screensaver (AQUARIUM), Clever Clocks Screensaver (CLEVERCLOCKS), iTunes Podcasts (ITPC), My Channels (MYCHANNELS)
Instant Watch Browser (NetflixIWB), Aquarium Screensaver (AQUARIUM), Clever Clocks Screensaver (CLEVERCLOCKS), iTunes Podcasts (ITPC), My Channels (MYCHANNELS)
jvalero
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-12-2012
09:57 AM
Re: Custom Remote Commands w/ roImageCanvas
Thanks, that did the trick. I had a feeling there was some undocumented items with some of the components. Appreciate all of the help. 🙂