I've created a channel with HLS streaming working perfect on a roku 3, streaming stick, and roku 2. I ordered an old 2100x to try the channel on firmware 3.1. I've got everything working except the actual streaming. It downloads the first file listed in the playlist, but then continues to download the playlist over and over... You'll see from the roVideoScreen debug statements that its pulling down the correct playlist, and the first bumper file, but looks like it may be choking at the #EXT-X-DISCONTINUITY tag, as it doesnt seem to get any further, it just tries to download the original playlist again. I'm out of options and at the point where we'll just remove the option for older devices unless I can find a solution. Any thoughts?
The files are filtered by IP ranges, so let me try to better show the issue with debug statements:
File fed into the roVideoScreen (playlist.tv-or-mobile.15278-2.m3u8):
As far as I know, Roku doesn't support encrypted m3u8 (#EXT-X-KEY:METHOD=AES-128) Use query string authentication instead and just have the token change hourly - keep the verification server side, not Roku side.
"jasonbio" wrote: As far as I know, Roku doesn't support encrypted m3u8 (#EXT-X-KEY:METHOD=AES-128) Use query string authentication instead and just have the token change hourly - keep the verification server side, not Roku side.
Roku definitely does support AES-128 encryption, so it's unlikely that's the issue here.
I wonder if it's the TARGETDURATION and segment duration values. The header indicates a TARGETDURATION of 409, which is crazy high, as that value should be in seconds. Your individual segments are using floats as their durations, which I've never seen in an HLS before. It may be legal, I've just never run across it before. Any chance you're able to adjust those values to see if it makes a difference?
The floats should be okay. I use FFMPEG's stream segment output muxer, which generates floats for the #EXTINF values with no issues for the Roku. The #EXT-X-TARGETDURATION:409 looks very suspicious though, like it's off by a factor of 100. All my #EXTINF durations are within a second of the #EXT-X-TARGETDURATION value.