adaptive mp4 streams

we want to implement adaptive streaming of the Videos from the Gofight library. which are encoded at normally 4 different bitrates 500,1000, 2000, 4000K

will roku pick the highest quality? I know this works with HLS streaming but i have read somewhere here before that people were having issues with it only working with HLS.

does roku give us a “highest” bit rate and pass us that number so we can give the user the Highest quality?

Is the array of URLS (from page 14 of component reference) only for a list of video to play one after another or can this be used for picking the best or highest bitrate allowed to eash user?

Thanks and Merry Christmas to everyone!!

The array of URLs are assumed to be different encodings of the same video. (It is NOT a playlist – only one URL will be played.) The player will automatically pick the best one that can be played. You don’t have to do anything to make this happen other than provide the list of URLs and corresponding bitrates.

–Mark

thanks!

We are trying to use adaptive bitrate MP4 for our VOD content and the streams are encoded at 800kbps, 1500kbps and 2200kbps. Eventhough we defined all three different bitrates, ROKU is always picking up 2200kbps stream.

Due to this, there is a lot of buffering in initial load. Is it possible to load 800kbps first and then the rest based on the available bandwidth?

When the users use trick play, the same buffering issue is happenning and they need to wait few seconds to load.

We just want to load low resolution stream initially similar to Netflix.

Thanks

There will be buffering when switching between different MP4 streams. MP4 is not an adaptive format like HLS. HLS can change to a different bitrate on the fly (without interrupting the video) but MP4 requires stopping the current stream and starting the new one.

–Mark

Hello Mark,

Thank you for your reply!

Is it possible to force the ROKU to start with lower bitrate MP4 stream? I just want to simulate what Netflix is doing.

No, but I don’t think you’d want to do that even if it were possible. You’d start with an 800kbps stream and then when you were ready to move up to a higher stream, it would rebuffer at that point. Netflix uses a true adaptive protocol so they can upshift without stopping the video but MP4 can’t do that.

–Mark

Thank you. Point is clear now - even if I pick 800kbps stream first, I will get buffering when it shifts to other bitrate.

Sorry to drag this - “Netflix uses a true adaptive protocol so they can upshift without stopping the video but MP4 can’t do that” - Do you mean they use HLS? If so, how they are getting BIF feature?

OR Is it special protocol developed by Netflix?

Based upon this discussion, looks like I will stick with HLS for most all my content.

I initially tried with HLS streams. But, only have 2 issues with that:

  1. Users want to see the frame thumbnails when they are using trick play.
  2. Not able to find suitable encoder for DD/DD+ audio with HLS. Many of the encoders are supporting only stereo. If we get it working somehow through other methods, the frames are not aligned correctly.

I have been searching for a good solution from past 2 months, but I couldn’t come to a conclusion :disappointed_face:

“streamingguy” wrote:
Thank you. Point is clear now - even if I pick 800kbps stream first, I will get buffering when it shifts to other bitrate.

Sorry to drag this - “Netflix uses a true adaptive protocol so they can upshift without stopping the video but MP4 can’t do that” - Do you mean they use HLS? If so, how they are getting BIF feature?

OR Is it special protocol developed by Netflix?

Netflix is allowed to use tools and features that nobody else gets access to. Items as simple as changing the loading progress bar color, secret streaming protocol formats, etc etc. It is much less irritating to focus on what we can do with Roku rather than all the stuff that would be possible but we’re not allowed to play with. There is probably some way to duplicate what they do - like pausing HLS playback and overlaying an roImageCanvas to manually display the bif frames, but I’m sure their way is much more efficient.

Thank you for your reply!

That may be the reason - whenever I post some questions regarding the features which are available only on Netflix, I will not get any reply from ROKU team. Even if I get the reply, they will reply in different way…

I think every technology provider is partial to these big streaming companies. Not only on ROKU, many devices provide different features to Netflix/Hulu etc., which are not available to other developers.

Netflix uses a custom streaming protocol. It’s similar to HLS in concept but different in detail.

–Mark

Hello Mark,

Thank you so much for clarifying it.

Are you considering “BIF” support in HLS in near future? That is the good option, which we will miss by moving from MP4 to HLS. Hope you will provide it very soon!

Thank you!