Roku Developer Program

Developers and content creators—a complete solution for growing an audience directly.
cancel
Showing results for 
Search instead for 
Did you mean: 
Yuriy_OM
Level 7

Scene Graph - Video component How to control stream quality?

Hello everyone, I am in dire need of help here:

I am using SceneGraph Video component and can not figure out how can I control stream quality/stream switching. This used to be available in roVideoPlayer using ContentMetaData settings as: MinBandwidth/MaxBandwidth, Streams array where I could set individual streams, SwitchingStrategy. But these parameters do not seem to work with with SceneGraph.

I am also willing to provide more than adequate compensation to anyone that can help me resolve this and provide consulting services. Please let me know and thank you for your help in advance.
0 Kudos
6 Replies
adamkaz
Level 7

Re: Scene Graph - Video component How to control stream qual

You can specify these parameters now under the "content" field. I have not tested this out extensively, but from simple examples it seems to be working. Content is the third field listed here: http://sdkdocs.roku.com/display/sdkdoc/Video. If you want more help, just send me a PM.
0 Kudos
Yuriy_OM
Level 7

Re: Scene Graph - Video component How to control stream qual

Absolutely need helpSmiley Happy just sent you a PM
0 Kudos
Roku Employee
Roku Employee

Re: Scene Graph - Video component How to control stream qual

So, it appears that MaxBandwidth / MinBandwidth are not currently recognized in the SceneGraph video component. We are investigating to see which content metadata passed down to the video subsystem and which are not. All the content metadata that works in the roVideoPlayer and roScreen should work, but clearly, this is not the case at the moment.

- Joel
0 Kudos
Yuriy_OM
Level 7

Re: Scene Graph - Video component How to control stream qual

Hi Joel,

I can confirm min/max bitrate variables do not work, also I have mentioned in another thread that bitrate switching might not work either. Here is code snippet again that demonstrates it:



newContent = CreateObject("roSGNode", "ContentNode")
newContent.streams=[{ url : "http://vevoplaylist-live.hls.adaptive.level3.net/vevo/ch1/03/prog_index.m3u8",
bitrate : 1060,
contentid : "03",
quality: false
},
{ url : "http://vevoplaylist-live.hls.adaptive.level3.net/vevo/ch1/05/prog_index.m3u8",
bitrate : 2640,
contentid : "05" ,
quality: true
},
{url : "http://vevoplaylist-live.hls.adaptive.level3.net/vevo/ch1/06/prog_index.m3u8",
bitrate : 4000,
contentid : "06" ,
quality: true
}]
newContent.streamFormat = "hls"
newContent.maxBandwidth = 2640
newContent.SwitchingStrategy = "full-adaptation"
newContent.Live = true
m.video.content = newContent
m.video.ObserveField("errorMsg", "checkErrors")
m.video.ObserveField("bufferingStatus", "buffStat")
m.video.ObserveField("streamingSegment", "showBitrate")
m.video.ObserveField("duration", "checkPosition")
m.video.control = "play"


Also, could you ask your guys how can one force a switch to a different stream ( in SceneGraph or roVideoPlayer). Is setting max/minBandwidth dynamically (while stream is playing) makes a player to switch to different stream?
0 Kudos
Roku Employee
Roku Employee

Re: Scene Graph - Video component How to control stream qual

I think, as TheEndless said to you in another thread, you are approaching this wrong for HLS. Now I could be wrong here, being a neophyte to the new SceneGraph, but I think that for HLS adaptive streaming, you only would have one URL per content node, which I understand to represent a single item - one video for example.

Even were that not so, you are creating an array of streams in your code which is not how you do HLS on Roku - an array of streams is for Progressive MP4 and each stream would be a variant stream. For HLS, you have a single multibitrate URL and you set the bitrate to [0] unless the highest bitrate is 1500kbps in which case you can set the bitrate to the lowest bitrate stream.

Content.stream:{url : "http://vevoplaylist-live.hls.adaptive.level3.net/vevo/ch1/03/prog_index.m3u8"
bitrate : 0,
contentid : "03",
quality: true}


Note that if a device is running in SDTV mode, then you would choose quality:false otherwise, set that to true.

- Joel
0 Kudos
Yuriy_OM
Level 7

Re: Scene Graph - Video component How to control stream qual

Hi Joel, as I replied in the other thread - it does not really matter, stream switching does not work and it is impossible to control quality. I used "Streams" variable as it provides (seems to provide) more control and this technique worked in roVideo Player. Here is a single maifest HLS example for you ( note the manifest has 6 different bitrates)


newContent = CreateObject("roSGNode", "ContentNode")
newContent.url= "http://vevoplaylist-live.hls.adaptive.level3.net/vevo/ch1/appleman.m3u8"
newContent.streamFormat = "hls"
newContent.maxBandwidth = 2640
newContent.SwitchingStrategy = "full-adaptation"
newContent.Live = true
m.video.content = newContent
m.video.control = "play"


Test it for yourself. Roku will always play stream number 06 ( as it is the last one in the list). min/maxBandwidth does not have any effect whatsoever. Bitstream switch will never occur. Tested this on Roku stick and roku 3. Please try it and let me know your findings.
0 Kudos