There are two ways to do adaptive streaming on Roku.
With progressive mp4, you would have an array of media items each with its own bitrate, example:
episode={shortdescriptionline2: ""
shortdescriptionline1: "test 123"
contentid: "10014"
sdposterurl: "http://test.com/testSD.jpg"
description: "this is a test"
ishd: true
streamformat: "mp4"
contentquality: "HD"
length: 0
streamurls: ["http://test.com/test.mp4"
"http://test.com/test-3000kb.mp4"
"http://test.com/test-1500kb.mp4"
"http://test.com/test-800kb.mp4"]
streamqualities: ["HD"
"HD"
"HD"
"HD"]
streambitrates:[9000
3000
1500
800]
hdposterurl: "http://test.com/testHD.jpg"
title: "a test a test a test"
contenttype: "episode"
hdbranded: true}
for HLS streaming, you would have a single playlist file for the url in your media item (don't use more than one for HLS), example:
episode={shortdescriptionline2: ""
shortdescriptionline1: "test 123"
contentid: "10014"
sdposterurl: "http://test.com/testSD.jpg"
description: "this is a test"
ishd: true
streamformat: "hls"
contentquality: "HD"
length: 0
streamurls: ["http://myserver.com/playlists/multibitrate.m3u8"]
streamqualities: ["HD"]
streambitrates:[0]
hdposterurl: "http://test.com/testHD.jpg"
title: "a test a test a test"
contenttype: "episode"
switchingStrategy="full-adaptation"
hdbranded: true}
In both cases, the device will autoswitch between the bitrates, however with Progressive mp4 you will see "Loading" when it switches, vs HLS which you'll just see the quality of the video get better or worse depending on bandwidth.
You also need to take into account the current video setting of the device, and if the device is in SDTV mode, you need to set the various HD flags (ishd, qualities, quality, hdbranded etc) appropriately for progressive mp4 and streamqualities=["SD"] for HLS.
- Joel