Roku Developer Program

Developers and content creators—a complete solution for growing an audience directly.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
greubel
Level 8

HLS Version ?

Does Roku support HLS version 4 ? or will it ?
Specifically would like to have #EXT-X-BYTERANGE
0 Kudos
8 REPLIES 8\
RokuMarkn
Level 8

Re: HLS Version ?

As far as I can tell, EXT-X-BYTERANGE is currently supported (although I haven't tested it). Can you describe what problem you're having with it? I think we're currently supporting version 8 of the HLS spec.

--Mark
0 Kudos
greubel
Level 8

Re: HLS Version ?

I just tried a test and it wasn't working BUT it most likely is me.
What I tried is a hard coded sample from Apple's dev site, but instead of length@offset, I just gave it length which is supposed to be accumulative.
#EXTM3U
#EXT-X-TARGETDURATION:11
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-VERSION:4

#EXTINF:10.0,
#EXT-X-BYTERANGE:188000
media.ts

#EXTINF:10.0,
#EXT-X-BYTERANGE:188000
media.ts

#EXTINF:10.0,
#EXT-X-BYTERANGE:188000
media.ts

Need more research.
0 Kudos
greubel
Level 8

Re: HLS Version ?

Ok, gave it another shot.
Changed the first two requests to:
#EXT-X-BYTERANGE:188000@0
media.ts

#EXTINF:10.0,
#EXT-X-BYTERANGE:188000@188000
media.ts

Here is what is logged:
Red is server side, Blue is Roku side.
= GET /Roku/Serviio/test.m3u8 HTTP/1.1

HTTP/1.1 200 OK
Content-type: application/x-mpegURL
Content-length: 3934


19:00:14.387 * LOG - STATUS: ok, TARGETIP: 192.168.1.2, HTTPCODE: 200, ORIGURL: http://192.168.1.2:12000/Roku/Serviio/test.m3u8, URL: http://192.168.1.2:12000/Roku/Serviio/test.m3u8, METHOD: GET

= GET /Roku/Serviio/media.ts HTTP/1.1 <--------- No Range request ??? = User-Agent=Roku/DVP-3.1 (013.01E01198A)

HTTP/1.1 200 OK
Content-type: video/mp2t
Content-length: 5124645000
Last-Modified: Fri Feb 28 16:07:46 2014
Connection: Close
Date: Fri Feb 28 19:00:15 2014


19:00:18.683 * LOG - STATUS: ok, TARGETIP: 192.168.1.2, HTTPCODE: 200, ORIGURL: http://192.168.1.2:12000/Roku/Serviio/media.ts, URL: http://192.168.1.2:12000/Roku/Serviio/media.ts, METHOD: GET
0 Kudos
greubel
Level 8

Re: HLS Version ?

The prior test was on Roku level 3.1 1198, tried the same test on Roku level 5.4 3161

19:43:40.388 * LOG - STATUS: ok, TARGETIP: 192.168.1.2, HTTPCODE: 200, ORIGURL: http://192.168.1.2:12000/Roku/Serviio/test.m3u8, URL: http://192.168.1.2:12000/Roku/Serviio/test.m3u8, METHOD: GET
19:43:40.497 VideoScreenEvent msg: Unspecified or invalid track path/url. type:11 index:0
0 Kudos
greubel
Level 8

Re: HLS Version ?

Any reply ?
0 Kudos
RokuWimM
Roku Employee
Roku Employee

Re: HLS Version ?

Roku level 3.1 does not support EXT-X-BYTERANGE tags but firmware version r5.04 does. However since firmware version r5.04 does not support all HLS version 4 features it will reject any playlist that has "#EXT-X-VERSION:4". Can you change the version number to 3 and keep the EXT-X-BYTERANGE in the playlist.

-Wim.
0 Kudos
greubel
Level 8

Re: HLS Version ?

Tried both version 3 and 4 on Roku levels 3 and 5
This is what is displayed on the Roku side

Roku(5.4 3182)
HLS Version 3
11:36:24.927 * LOG - STATUS: ok, TARGETIP: 192.168.1.2, HTTPCODE: 200, ORIGURL: http://192.168.1.2:12000/Roku/Serviio/Movie.m3u8, URL: http://192.168.1.2:12000/Roku/Serviio/Movie.m3u8, METHOD: GET
11:36:24.957 * LOG - STATUS: ok, TARGETIP: 192.168.1.2, HTTPCODE: 200, ORIGURL: http://192.168.1.2:12000/Roku/Serviio/Playlist.m3u8, URL: http://192.168.1.2:12000/Roku/Serviio/Playlist.m3u8, METHOD: GET
11:36:25.517 * LOG - STATUS: ok, TARGETIP: 192.168.1.2, HTTPCODE: 200, ORIGURL: http://192.168.1.2:12000/Roku/Serviio/Playlist.m3u8, URL: http://192.168.1.2:12000/Roku/Serviio/Playlist.m3u8, METHOD: GET

HLS Version 4
12:13:06.917 * LOG - STATUS: ok, TARGETIP: 192.168.1.2, HTTPCODE: 200, ORIGURL: http://192.168.1.2:12000/Roku/Serviio/Movie.m3u8, URL: http://192.168.1.2:12000/Roku/Serviio/Movie.m3u8, METHOD: GET
12:13:06.921 * LOG - STATUS: ok, TARGETIP: 192.168.1.2, HTTPCODE: 200, ORIGURL: http://192.168.1.2:12000/Roku/Serviio/Playlist.m3u8, URL: http://192.168.1.2:12000/Roku/Serviio/Playlist.m3u8, METHOD: GET
12:13:06.966 VideoScreenEvent msg: Unspecified or invalid track path/url. type:11 index:0


Roku(3.1 1198)
HLS Version 3
14:09:59.272 * LOG - STATUS: ok, TARGETIP: 192.168.1.2, HTTPCODE: 200, ORIGURL: http://192.168.1.2:12000/Roku/Serviio/Movie.m3u8, URL: http://192.168.1.2:12000/Roku/Serviio/Movie.m3u8, METHOD: GET
14:09:59.349 * LOG - STATUS: ok, TARGETIP: 192.168.1.2, HTTPCODE: 200, ORIGURL: http://192.168.1.2:12000/Roku/Serviio/Playlist.m3u8, URL: http://192.168.1.2:12000/Roku/Serviio/Playlist.m3u8, METHOD: GET
14:10:00.345 * LOG - STATUS: ok, TARGETIP: 192.168.1.2, HTTPCODE: 200, ORIGURL: http://192.168.1.2:12000/Roku/Serviio/Playlist.m3u8, URL: http://192.168.1.2:12000/Roku/Serviio/Playlist.m3u8, METHOD: GET
14:10:02.367 * LOG - STATUS: ok, TARGETIP: 192.168.1.2, HTTPCODE: 200, ORIGURL: http://192.168.1.2:12000/Roku/Serviio/media.ts, URL: http://192.168.1.2:12000/Roku/Serviio/media.ts, METHOD: GET

HLS Version 4
12:17:06.003 * LOG - STATUS: ok, TARGETIP: 192.168.1.2, HTTPCODE: 200, ORIGURL: http://192.168.1.2:12000/Roku/Serviio/Movie.m3u8, URL: http://192.168.1.2:12000/Roku/Serviio/Movie.m3u8, METHOD: GET
12:17:06.103 * LOG - STATUS: ok, TARGETIP: 192.168.1.2, HTTPCODE: 200, ORIGURL: http://192.168.1.2:12000/Roku/Serviio/Playlist.m3u8, URL: http://192.168.1.2:12000/Roku/Serviio/Playlist.m3u8, METHOD: GET
12:17:07.915 * LOG - STATUS: ok, TARGETIP: 192.168.1.2, HTTPCODE: 200, ORIGURL: http://192.168.1.2:12000/Roku/Serviio/Playlist.m3u8, URL: http://192.168.1.2:12000/Roku/Serviio/Playlist.m3u8, METHOD: GET
12:17:07.997 * LOG - STATUS: ok, TARGETIP: 192.168.1.2, HTTPCODE: 200, ORIGURL: http://192.168.1.2:12000/Roku/Serviio/media.ts, URL: http://192.168.1.2:12000/Roku/Serviio/media.ts, METHOD: GET


Roku level 5 never tried to access the media file, Roku level 3 did.
There wasn't any requests for byte range in the server side logs.

So I guess this is a lost cause. Need to try something else.
0 Kudos
TreyH
Level 7

Re: HLS Version ?

We just discovered something interesting related to this so I thought I'd share.

Our old Roku XD (2050) will play an HLS declaring version 4, but our Roku HD (2500) would not. If we manually adjusted the version number down to 3 in the m3u8 playlist, it would instantly work on the Roku HD.

Our best guess is that because the XD is so old, it doesn't know what to do with the version tag. However, the HD, for some reason, only supports up to 3, and that's why it would not play version 4 m3u8 playlists.
0 Kudos