Roku Developer Program

Developers and content creators—a complete solution for growing an audience directly.
cancel
Showing results for 
Search instead for 
Did you mean: 
MG79
Level 7

somebody help ?

I was using and old I guess legacy video player example and everything works good with mp4 and m3u8 and I tried to update from the legacy so I used the video player migration and now I can't get m3u8 to play anymore mp4 still works just fine and good I use multiple xml files for feeds. I have been trying for past 2-3 days to figure this out and used all kinda of ways things but have failed to make it work. when I click on a m3u8 the player changes screens and loads the retrieving bar half way and stops nothing else happens. if I change players back to the old one legacy style then the everything plays fine..

this is the code I been trying to use in a xml file  if I change format type to mp4 and add a mp4 link it works fine.  will somebody please give me one example of a working hls code for a xml file using the new videoplayer-channel player please ?


<item sdImg="https://devtools.web.roku.com/videoplayer/images/CameronCarpenter.jpg" hdImg="https://devtools.web.roku.com/videoplayer/images/CameronCarpenter.jpg">
 <title>Test m3u8</title>
 <contentId>10031</contentId>
 <contentType>Talk</contentType>
 <contentQuality>SD</contentQuality>
 <streamFormat>hls</streamFormat>
 <media>
 <streamQuality>SD</streamQuality>
 <streamBitrate>0</streamBitrate>
 <streamUrl>http://nasatv-lh.akamaihd.net/i/NASA_101@319270/index_1000_av-p.m3u8</streamUrl>
 </media>
 <synopsis>Test m3u8.</synopsis>
 <genres>Test</genres>
 <live>True</live>
 </item>





0 Kudos
11 Replies
destruk
Level 10

Re: somebody help ?

Is the streamformat tag being parsed?  Could you try a different feed for hls like this one?
http://www.streambox.fr/playlists/test_001/stream.m3u8

The NASA stream is a bit more complex with multiuple m3u8s in the main manifest, so I don't like testing with that.
But your xml looks fine - chances are the issue is in the code itself instead of the feed.
0 Kudos
MG79
Level 7

Re: somebody help ?

I tried your link , that link does the same thing loads half way and stops I have tried 20-30 test links they all do the same thing , so this means the video player - channel from the migration and the developer example is broken when it comes to playing hls ? I tried both players and both does the same thing.
0 Kudos
destruk
Level 10

Re: somebody help ?

HLS works for me - maybe you need newer firmware?  Why not post the code that is having the trouble?
0 Kudos
MG79
Level 7

Re: somebody help ?

I have Roku ultra with software version 7.5.1 says its up to date when I check  build 4111

and I used this video player from this link

https://github.com/rokudev/videoplayer-channel

I have not changed anything in the video player example but what it said to do this part

Migration Guide
To request the feed:

  • Replace the url string on line 22 in
    VideoScene.brs

    with the link to the feed

  • If the structure of your XML feed matches the VideoPlayer sample feed, there are no other changes that need to be made!


and thank you very much destruk[/url:2jgti0ey] for trying to help me with this I'm very greatful for your help..
0 Kudos
destruk
Level 10

Re: somebody help ?

Strange - it plays just fine for me.  You might need new firmware to fix it for your ultra when it's released.

I downloaded their categories.xml -
url="https://devtools.web.roku.com/videoplayer/xml/categories.xml"

Then I downloaded the mind xml --
<categoryLeaf title="The Mind" description="" feed="https://devtools.web.roku.com/videoplayer/xml/themind.xml"/>

After that I edited the categories.xml to reference the mind from my server -- in categories.xml, the mind line above.
<categoryLeaf title="The Mind" description="" feed="http://myserver.com/xml/themind.xml"/>

For themind.xml -- I changed it to this
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<feed>
<!-- resultLength indicates the total number of results for this feed -->
<resultLength>4</resultLength>
<!-- endIndix  indicates the number of results for this *paged* section of the feed -->
<endIndex>4</endIndex>
<item sdImg="https://devtools.web.roku.com/videoplayer/images/JimFallon.jpg" hdImg="https://devtools.web.roku.com/videoplayer/images/JimFallon.jpg">
 <title>Test m3u8</title>
 <contentId>10031</contentId>
 <contentType>Talk</contentType>
 <contentQuality>SD</contentQuality>
 <streamFormat>hls</streamFormat>
 <media>
 <streamQuality>SD</streamQuality>
 <streamBitrate>0</streamBitrate>
 <streamUrl>http://nasatv-lh.akamaihd.net/i/NASA_101@319270/index_1000_av-p.m3u8</streamUrl>
 </media>
 <synopsis>Test m3u8.</synopsis>
 <genres>Test</genres>
 <live>True</live>
<runtime>1260</runtime>
....

And then changed the url loaded for the main category feed in the scenegraph videoscene.brs
url="http://myserver.com/xml/categories.xml"
And uploaded both xml files to myserver.com/xml/
Then when loading the channel, select the first category on the main screen, then select the Test m3u8 file and it plays fine here.
I think you did similar - sometimes the nasa feed does fail so try again later?
0 Kudos
destruk
Level 10

Re: somebody help ?

When it fails for you, what message do you get in the debugger?
telnet 192.168.1.x 8085
where 192.168.1.x is the IP of your roku?

or in a browser -- http://192.168.1.x:8085/
Where 192.168.1.x is the ip of your roku?  at the bottom of the page
0 Kudos
MG79
Level 7

Re: somebody help ?

I did exactly same steps as you did in your post and it still loads half way and stops on loading.

I ran the command like you ask I hope you understand it cause I don't understand any of that hahaha ..
maybe it is my ultra ? i used the multi live channel example player and it plays the m3u8 and the legacy player plays the m3u8  seems it's just effecting that video player on my Roku :/

Change
in SimpleVideoScene.xml onKeyEvent OK false
in SimpleVideoScene.xml onKeyEvent OK false
onItemSelected
in SimpleVideoScene.xml onKeyEvent OK true
------- [ok pressed] -------
in SimpleVideoScene.xml onKeyEvent OK true
------- [ok pressed] -------
in SimpleVideoScene.xml onKeyEvent OK false
in SimpleVideoScene.xml onKeyEvent OK false
in SimpleVideoScene.xml onKeyEvent back true
------ [back pressed] ------
Do nothing
in SimpleVideoScene.xml onKeyEvent back false
in SimpleVideoScene.xml onKeyEvent back false
------ Running dev 'Video Player' main ------
################
Start of Channel
################
Received Input -- write code here to check it!
main.brs - [showHeroScreen]
UriHandler.brs - [init]
[makeRequest] - http://myserver.com/MyChannel/xml/categories.xml
Task.xml - [go]
UriHandler.brs - [go]
--------------------------------------------------------------------------
Received event type 'roSGNodeEvent'
UriHandler.brs - [addRequest]
Initiating transfer '122691227' for URI 'http://myserver.com/MyChannel/xml/categories.xml' succeeded: true
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Received event type 'roUrlEvent'
UriHandler.brs - [processResponse]
Response for transfer '122691227' for URI 'http://myserver.com/MyChannel/xml/categories.xml'
UriHandler.brs - [parseResponse]
begin category node parsing
number of categories: 4
skipped banner_ad
category: Technology | TED Talks on Technology
category: Entertainment | TED Talks on Entertainment
category: Design | TED Talks on Design
onContentSet
done with parseResponse
--------------------------------------------------------------------------
onRowItemSelected
[makeRequest] - http://devtools.web.roku.com/videoplayer/xml/globalissues.xml
--------------------------------------------------------------------------
Received event type 'roSGNodeEvent'
UriHandler.brs - [addRequest]
[makeRequest] - http://myserver.com/videoplayer/xml/themind.xml
Initiating transfer '122691228' for URI 'http://devtools.web.roku.com/videoplayer/xml/globalissues.xml' succeeded: true
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Received event type 'roSGNodeEvent'
UriHandler.brs - [addRequest]
Initiating transfer '122691229' for URI 'http://myserver.com/videoplayer/xml/themind.xml' succeeded: true
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Received event type 'roUrlEvent'
UriHandler.brs - [processResponse]
Response for transfer '122691228' for URI 'http://devtools.web.roku.com/videoplayer/xml/globalissues.xml'
UriHandler.brs - [parseLeaf]
in SimpleVideoScene.xml onKeyEvent OK false
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Received event type 'roUrlEvent'
UriHandler.brs - [processResponse]
Response for transfer '122691229' for URI 'http://myserver.com/videoplayer/xml/themind.xml'
UriHandler.brs - [parseLeaf]
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Received event type 'roSGNodeEvent'
UriHandler.brs - [updateContent]
All content has finished loading
onCategoryContentSet
--------------------------------------------------------------------------
Received event type 'roSGNodeEvent'
UriHandler.brs - [updateContent]
onCategoryItemSelected
onReadFinished
onContentChange
in SimpleVideoScene.xml onKeyEvent OK false
in SimpleVideoScene.xml onKeyEvent OK false
onItemSelected
in SimpleVideoScene.xml onKeyEvent OK true
------- [ok pressed] -------
in SimpleVideoScene.xml onKeyEvent OK true
------- [ok pressed] -------
in SimpleVideoScene.xml onKeyEvent OK false
in SimpleVideoScene.xml onKeyEvent OK false

BrightScript Micro Debugger.
Enter any BrightScript statement, debug commands, or HELP.
Suspending threads...
Thread selected:  0*   pkg:/source/main.brs(47)                msg = wait(0, m.port)

Current Function:
039:    screen.setMessagePort(m.port)
040:    scene = screen.CreateScene("VideoScene")
041:    m.global = screen.getGlobalNode()
042:    'Deep link params
043:    m.global.addFields({ input: input })
044:    screen.show()
045:
046:    while(true)
047:*     msg = wait(0, m.port)
048:      msgType = type(msg)
049:      if msgType = "roSGScreenEvent"
050:        if msg.isScreenClosed() then return
051:      end if
Break in 47
047:     msg = wait(0, m.port)
Backtrace:
#1  Function showheroscreen(input As Object) As Void
   file/line: pkg:/source/main.brs(47)
#0  Function main(input As Dynamic) As Void
   file/line: pkg:/source/main.brs(30)
Local Variables:
input            roAssociativeArray refcnt=3 count:4
global           Interface:ifGlobal
m                roAssociativeArray refcnt=3 count:2
screen           bsc:roSGScreen refcnt=1
scene            bsc:roSGNode refcnt=1
msg              <uninitialized>
msgtype          <uninitialized>
Threads:
ID    Location                                Source Code
 0*   pkg:/source/main.brs(47)                msg = wait(0, m.port)
 1    pkg:/components/Task.xml(25)            msg = wait(0, m.port)
 2    pkg:/components/UriHandler.brs(31)      msg = wait(0, m.port)
  *selected
Brightscript Debugger>
0 Kudos
destruk
Level 10

Re: somebody help ?

If you have m.port=CreateObject("roMessagePort") in the "Showheroscreen" function in main.brs, immediately followed by screen.setMessagePort(m.port) then I think you'll need to wait for the next release of the firmware as this ought to be fixed when you get that.  Thanks for the extra info - it helps to help you.
0 Kudos
Highlighted
MG79
Level 7

Re: somebody help ?

i will just have to wait and hold off on migration from legacy till the firmware gets fixed then with ultra thanks so much destruk[/url:2inxoojd] for all your help with this you been awesome and very helpful i hope who ever...
0 Kudos