greubel
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-28-2014
04:10 PM
HLS Version ?
Does Roku support HLS version 4 ? or will it ?
Specifically would like to have #EXT-X-BYTERANGE
Specifically would like to have #EXT-X-BYTERANGE
8 REPLIES 8

RokuMarkn
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-28-2014
04:43 PM
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
--Mark
greubel
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-28-2014
04:56 PM
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.
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.
greubel
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-28-2014
05:21 PM
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
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
greubel
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-28-2014
05:48 PM
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
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
greubel
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-04-2014
06:46 AM
Re: HLS Version ?
Any reply ?


Roku Employee
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-04-2014
09:06 AM
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.
-Wim.
greubel
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-04-2014
12:32 PM
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 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.
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.
TreyH
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-06-2014
11:47 AM
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.
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.