Jump to content

Video Playlists in 1.79 ?


Bluebull32

Recommended Posts

Bluebull32

What is the status of the video playlist capability?  I see in the release notes for 1.78 report that video playlists are working, but I am using version 1.79 and can't get playlists to work. 

My workflow:

 - Create a video playlist with Media Browser server.  All videos are "direct play" mp4.

 - The roku app finds the playlist.

 - When played, the first video plays through, then I get kicked out of the app.

 

Does anyone else here have video playlists working for them?

Link to comment
Share on other sites

Bluebull32

No problem.  Here are the logs from around the point of failure.  I can give you the more complete logs from the launch of the app if you like.

 

Count loaded is now 3 out of 3
Loaded 3 elements in row 3, now have 3
Entered CreateScreenForItem
Calling createVideoSpringboardScreen
Pushing screen 7 onto view controller stack - VideoSpringboardScreen67e9c9ff48d2
2cbac10e6aa7f0045d6f
Getting metadata for Id 67e9c9ff48d22cbac10e6aa7f0045d6f
BRIGHTSCRIPT: ERROR: Runtime: FOR EACH value is Invalid: pkg:/source/VideoMetada
ta.brs(246)
Setting video springboard screen content
Showing video springboard screen
Button command: play
GetItemsForPlayback item.ContentType=Playlist
Not sure what to do with breadcrumbs on screen type: Invalid
Pushing screen 8 onto view controller stack - Video Player
MediaPlayer::playVideo: Displaying video: Box-1
Getting metadata for Id 6d0e4b53c64c8e633489d26e14ac6815
Media item container: mp4
Media item video codec: h264
Media item audio codec: aac
Media item subtitles: invalid
Media item stereo codec: aac
Media item surround codec: invalid
Secondary audio stream selected: false
Setting PlayStart to 0
Starting to direct play video
MediaPlayer::playVideo::VideoScreenEvent::isStreamStarted: position -> 0
Message data -> roAssociativeArray
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 0
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 1
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 2
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 3
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 4
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 5
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 6
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 7
MediaPlayer::playVideo::VideoScreenEvent::isStreamStarted: position -> 7
Message data -> roAssociativeArray
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 8
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 9
MediaPlayer::playVideo::VideoScreenEvent::isFullResult: position -> 9
MediaPlayer::playVideo::VideoScreenEvent::isScreenClosed: position -> 9
MediaPlayer::playVideo: Displaying video: Lip-1
Getting metadata for Id eb4ed5067251a6d739dcf3fdc87e5a86
BrightScript Micro Debugger.
Enter any BrightScript statement, debug commands, or HELP.

Current Function:
241:  Function getPlaybackStreamInfo(item, options) as Object
242:
243:    streams = []
244:
245:    ' Create streams for each media source
246:    for each source in item.MediaSources
247:*           if options.MediaSourceId = invalid OR source.Id = options.MediaS
ourceId then
248:
249:                    streams.push(getStreamInfo(source, options))
250:            end if
251:
Syntax Error. (runtime error &h02) in pkg:/source/VideoMetadata.brs(247)
247:            if options.MediaSourceId = invalid OR source.Id = options.MediaS
ourceId then
Backtrace:
#8  Function getplaybackstreaminfo(item As Dynamic, options As Dynamic) As Objec
t
   file/line: pkg:/source/VideoMetadata.brs(247)
#7  Function addvideoplaybackinfo(item As Dynamic, options As Dynamic) As Void
   file/line: pkg:/source/VideoMetadata.brs(110)
#6  Function getfullitemmetadata(item As Dynamic, isforplayback As Boolean, opti
ons As Object) As Object
   file/line: pkg:/source/GeneralMetadata.brs(1060)
#5  Function videoplayerconstructvideoitem(item As Dynamic, options As Dynamic)
As Object
   file/line: pkg:/source/VideoPlayer.brs(511)
#4  Function videoplayercreatevideoplayer(item As Dynamic, playoptions As Dynami
c) As Dynamic
   file/line: pkg:/source/VideoPlayer.brs(163)
#3  Function videoplayershow() As Void
   file/line: pkg:/source/VideoPlayer.brs(128)
#2  Function videoplayerhandlemessage(msg As Dynamic) As Boolean
   file/line: pkg:/source/VideoPlayer.brs(226)
#1  Function vcshow() As Void
   file/line: pkg:/source/ViewController.brs(458)
#0  Function main() As Void
   file/line: pkg:/source/appMain.brs(20)
Local Variables:
item             roAssociativeArray refcnt=3 count:34
options          bsc:roInvalid refcnt=3
global           rotINTERFACE:ifGlobal
m                roAssociativeArray refcnt=5 count:35
streams          roArray refcnt=1 count:0
source           roAssociativeArray refcnt=2 count:16
stream           <uninitialized>
BrightScript Debugger>

Link to comment
Share on other sites

Bluebull32

There is a row on the main (top level directory) screen dedicated to playlists.  The way I have it configured, I have "Folders" on the top row, and playlists are the row below that.  I have three playlists in the row. 

54c6f36d2ae8f_MB3RokuDebug1.jpg

 

I navigate down to the playlist row, then over to the playlist that I want to test, and click "OK".  Then the screen for that playlist pops up with a poster icon for the playlist, and I am given the options "Play" or "More". 

54c6f39feae92_MB3RokuDebug2.jpg

I leave the cursor on "Play" and click "OK".  The first video in the list plays to finish, then the app crashes.

Link to comment
Share on other sites

Bluebull32

I loaded the latest zip from Github.  It looks like it's failing in the same place.

 

 

Count loaded is now 23 out of 23
Loaded 23 elements in row 3, now have 23
Entered CreateScreenForItem
Calling createVideoSpringboardScreen
Pushing screen 2 onto view controller stack - VideoSpringboardScreen67e9c9ff48d2
2cbac10e6aa7f0045d6f
Getting metadata for Id 67e9c9ff48d22cbac10e6aa7f0045d6f
BRIGHTSCRIPT: ERROR: Runtime: FOR EACH value is Invalid: pkg:/source/VideoMetada
ta.brs(246)
Setting video springboard screen content
Showing video springboard screen
Button command: play
GetContextForPlayback item.ContentType=Playlist
Not sure what to do with breadcrumbs on screen type: Invalid
Pushing screen 3 onto view controller stack - Video Player
MediaPlayer::playVideo: Displaying video: Box-1
Getting metadata for Id 6d0e4b53c64c8e633489d26e14ac6815
Media item container: mp4
Media item video codec: h264
Media item audio codec: aac
Media item subtitles: invalid
Media item stereo codec: aac
Media item surround codec: invalid
Secondary audio stream selected: false
Setting PlayStart to 0
Starting to direct play video
MediaPlayer::playVideo::VideoScreenEvent::isStreamStarted: position -> 0
Message data -> roAssociativeArray
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 0
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 1
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 2
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 3
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 4
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 5
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 6
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 7
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 8
MediaPlayer::playVideo::VideoScreenEvent::isPlaybackPosition: set progress -> 9
MediaPlayer::playVideo::VideoScreenEvent::isFullResult: position -> 9
MediaPlayer::playVideo::VideoScreenEvent::isScreenClosed: position -> 9
MediaPlayer::playVideo: Displaying video: Lip-1
Getting metadata for Id eb4ed5067251a6d739dcf3fdc87e5a86
Current Function:
241:  Function getPlaybackStreamInfo(item, options) as Object
242:
243:    streams = []
244:
245:    ' Create streams for each media source
246:    for each source in item.MediaSources
247:*           if options.MediaSourceId = invalid OR source.Id = options.MediaS
ourceId then
248:
249:                    streams.push(getStreamInfo(source, options))
250:            end if
251:
Syntax Error. (runtime error &h02) in pkg:/source/VideoMetadata.brs(247)
247:            if options.MediaSourceId = invalid OR source.Id = options.MediaS
ourceId then
Backtrace:
#8  Function getplaybackstreaminfo(item As Dynamic, options As Dynamic) As Objec
t
   file/line: pkg:/source/VideoMetadata.brs(247)
#7  Function addvideoplaybackinfo(item As Dynamic, options As Dynamic) As Void
   file/line: pkg:/source/VideoMetadata.brs(110)
#6  Function getfullitemmetadata(item As Dynamic, isforplayback As Boolean, opti
ons As Object) As Object
   file/line: pkg:/source/GeneralMetadata.brs(1060)
#5  Function videoplayerconstructvideoitem(item As Dynamic, options As Dynamic)
As Object
   file/line: pkg:/source/VideoPlayer.brs(511)
#4  Function videoplayercreatevideoplayer(item As Dynamic, playoptions As Dynami
c) As Dynamic
   file/line: pkg:/source/VideoPlayer.brs(163)
#3  Function videoplayershow() As Void
   file/line: pkg:/source/VideoPlayer.brs(128)
#2  Function videoplayerhandlemessage(msg As Dynamic) As Boolean
   file/line: pkg:/source/VideoPlayer.brs(226)
#1  Function vcshow() As Void
   file/line: pkg:/source/ViewController.brs(458)
#0  Function main() As Void
   file/line: pkg:/source/appMain.brs(20)
Local Variables:
item             roAssociativeArray refcnt=3 count:34
options          bsc:roInvalid refcnt=3
global           rotINTERFACE:ifGlobal
m                roAssociativeArray refcnt=5 count:28
streams          roArray refcnt=1 count:0
source           roAssociativeArray refcnt=2 count:16
stream           <uninitialized>
BrightScript Debugger>

Link to comment
Share on other sites

Bluebull32

I submitted a pull request over at GitHub.  The code change fixes it (sorta) on my end.  The reason that I say "sorta", is because it still buffers between videos.  It would be optimal to play a constant stream, but I think that would require using roVideoPlayer instead of roVideoScreen, so that's more involved.

Link to comment
Share on other sites

Thanks! I don't see the pull request but i'll check it out once submitted. As far as roVideoPlayer, we used to use that but it doesn't allow 1080p (or at least didn't at the time). So that's why we switched to the plain roVideoScreen.

Link to comment
Share on other sites

roVideoPlayer can do 1080p by setting quality to true. The show-stopper appears to be ShowSubtitle is ignored for roVideoPlayer.

 

http://sdkdocs.roku.com/display/sdkdoc/Content+Meta-Data

 

The URL above appears updated more than any others.

Edited by speechles
Link to comment
Share on other sites

I submitted a pull request over at GitHub.  The code change fixes it (sorta) on my end.  The reason that I say "sorta", is because it still buffers between videos.  It would be optimal to play a constant stream, but I think that would require using roVideoPlayer instead of roVideoScreen, so that's more involved.

 

I've made an adjustment. Please give it a whirl and if it checks out ok for you then i'll push a beta. thanks.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...