Go
Not registered? Sign up!

Bandwidth Switching Playing Wrong Video

Google Translate
41 posts | return to the Bug Reports forum | get the rss feed for this thread

Oct. 23, 2009Jose Febus

I am using the following XML as a playlist for Bandwidth Switching via RMTP.

I have the 4 videos with different bitrate but the SAME resolutions.

The problem is the player is correctly identifying the 1 level to play (highest bitrate), but it's playing the last video defined in the XML (lowest bitrate).

<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" >
<channel>
<item>
<title>Progressive download</title>
<link>http://www.bigbuckbunny.org/</link>
<description>Big Buck Bunny is a short animated film by the Blender Institute.</description>
<media:group>
<media:content bitrate="1500" url="vault/PVSR-01-000-Preview.mp4" width="640" />
<media:content bitrate="750" url="vault/edu-750.mp4" width="640" />
<media:content bitrate="500" url="vault/edu-500.mp4" width="640" />
<media:content bitrate="250" url="vault/edu-250.mp4" width="640" />

</media:group>
</item>
</channel>
</rss>

Oct. 23, 2009lost

Which RTMP server and version are you using?

What version of the JW FLV Player are you using?

Oct. 23, 2009Jose Febus

I am using 4.6.485 and as far as I know, my CDN uses wonza

Oct. 23, 2009Jose Febus

Sorry I meant Wowza...

Oct. 23, 2009Jose Febus

Quality Monitor shows:

bandwidth : 5000 kbps
level : 1 of 4 (1500 kbps, 640 px)
width : 640 pixels

But it's not playing the 15000 kbps file, it's playing the 250 kbps one...

Oct. 23, 2009hobbs

 
Do you have type=rtmp in your player code?

Did your CDN update Wowza to support bitrate switching? It's a recent addition, so they may not have implemented it yet.

I'm out of guesses at this point.

Oct. 23, 2009Jose Febus

Hi hobbs,

I wasn't including the type=rtmp i the code, but after including it, the players wasn't able to read the playlist file...

Can I mix type=rtmp with a playlist?

Thanks for the help...

Oct. 23, 2009hobbs

Oh sorry, if you have a playlist, the type has to go in each track.

XSPF<meta rel='type'>rtmp</meta>

For some of the other types, you will have to use the jwplayer namespace.

MediaRSS (The LTV sample playlist)
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:jwplayer="http://developer.longtailvideo.com/trac/wiki/FlashFormats" version="2.0">
  <channel>
    <title>Playlist with bitrate switches</title>
    <item>
      <title>Progressive download</title>
      <description>When bitrate switching a progressive download, the only actual switch is done on startup.</description>
      <media:group>
        <media:content bitrate="1600" width="1080" url="http://content.bitsontherun.com/videos/8Juv1MVa-67727.mp4"/>
        <media:content bitrate="1200" width="720" url="http://content.bitsontherun.com/videos/8Juv1MVa-485.mp4"/>
        <media:content bitrate="800" width="480" url="http://content.bitsontherun.com/videos/8Juv1MVa-484.mp4"/>
        <media:content bitrate="400" width="320" url="http://content.bitsontherun.com/videos/8Juv1MVa-483.mp4"/>
        <media:thumbnail url="http://content.bitsontherun.com/thumbs/8Juv1MVa-480.jpg"/>
      </media:group>
    </item>
    <item>
      <title>HTTP streaming</title>
      <description>Bitrate switching for HTTP streaming is done on startup and with every seek and fullscreen switch.</description>
      <media:content bitrate="1600" width="1080" url="http://content.bitsontherun.com/videos/8Juv1MVa-67727.mp4"/>
      <media:content bitrate="1200" width="720" url="http://content.bitsontherun.com/videos/8Juv1MVa-485.mp4"/>
      <media:content bitrate="800" width="480" url="http://content.bitsontherun.com/videos/8Juv1MVa-484.mp4"/>
      <media:content bitrate="400" width="320" url="http://content.bitsontherun.com/videos/8Juv1MVa-483.mp4"/>
      <media:thumbnail url="http://content.bitsontherun.com/thumbs/8Juv1MVa-480.jpg"/>
      <jwplayer:type>http</jwplayer:type>
      <jwplayer:streamer>starttime</jwplayer:streamer>
    </item>
    <item>
      <title>RTMP streaming (Wowza)</title>
      <description>Bitrate switching for RTMP streaming is done on startup and with every seek and fullscreen switch.</description>
      <media:group>
        <media:content bitrate="1600" width="1080" url="vdoxadmin/jeroen/8Juv1MVa-67727.mp4"/>
        <media:content bitrate="1200" width="720" url="vdoxadmin/jeroen/8Juv1MVa-485.mp4"/>
        <media:content bitrate="800" width="480" url="vdoxadmin/jeroen/8Juv1MVa-484.mp4"/>
        <media:content bitrate="400" width="320" url="vdoxadmin/jeroen/8Juv1MVa-483.mp4"/>
        <media:thumbnail url="http://content.bitsontherun.com/thumbs/8Juv1MVa-480.jpg"/>
      </media:group>
      <jwplayer:type>rtmp</jwplayer:type>
      <jwplayer:streamer>rtmp://fl9.maelstrom.jet-stream.nl:80/vod/</jwplayer:streamer>
    </item>
    <item>
      <title>RTMP streaming (FMS)</title>
      <description>When an FMS 3.5 server is detected, bitrate switching is also continously done while watching the video.</description>
      <media:group>
        <media:content bitrate="1600" width="1080" url="videos/8Juv1MVa-67727.mp4"/>
        <media:content bitrate="1200" width="720" url="videos/8Juv1MVa-485.mp4"/>
        <media:content bitrate="800" width="480" url="videos/8Juv1MVa-484.mp4"/>
        <media:content bitrate="400" width="320" url="videos/8Juv1MVa-483.mp4"/>
        <media:thumbnail url="http://content.bitsontherun.com/thumbs/8Juv1MVa-480.jpg"/>
      </media:group>
      <jwplayer:type>rtmp</jwplayer:type>
      <jwplayer:streamer>rtmp://fms.12E5.edgecastcdn.net/0012E5</jwplayer:streamer>
    </item>
  </channel>
</rss>

Oct. 23, 2009Jose Febus

Hi hobbs,
Did your CDN update Wowza to support bitrate switching?

My CDN supports switching, I tried with flowplayer...and I am getting the bandwidth check ( 5000 kbps)....

I wrote <jwplayer:type>rtmp</jwplayer:type> and the player is still "selecting" the best quality video and playing the worst quality video...

Any other ideas?

Oct. 25, 2009rajan

I have the same problem when rtmpe from Wowza server. It always selects the lowest rate although the bandwidth is there for the high quality streams. Is it our configuration or could it be a bug for Wowza streaming from JW 4.6. JW development must have tested 4.6 with Wowza rtmp/rtmpe, So there shouldn't be any problems.

I am using Wowza 1.7.2 with 4.6

I have attempted to download Quality Monitor plugin but couldn't find it on the download page.

Oct. 25, 2009hobbs

LTV Plugins: http://developer.longtailvideo.com/trac/browser/plugins

The LTV sample bitrate playlist (same as I posted above) has a Wowza track and it works: http://developer.longtailvideo.com/trac/browser/testing/files

Oct. 25, 2009rajan

Thanks very much for the download link. That worked!

I am using 4.6.485
Still having problems with bitrate switching. Inserting two lines given below (taken from the bitrate.xml) gives an error "Not a valid playlist":

<jwplayer:type>rtmp</jwplayer:type> <jwplayer:streamer>rtmpe://xx.xx.xx.xx/myapp1/</jwplayer:streamer>


I have tried two versions given below. Both of those have same behaviour, i.e. always selects the lowest bit rate.
Have checked both m4v and mp4 extensions.

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" >
<channel>
<item>
<title></title>
<description></description>
<media:group>
<media:content bitrate="1400" width="720" url="myvidHigh.mp4" type="rtmp" />
<media:content bitrate="800" width="720" url="myvidMed.mp4" type="rtmp" />
<media:content bitrate="420" width="512" url="myvidLow.mp4" type="rtmp" />
<media:thumbnail url="myimage.jpg" />
</media:group>
</item>
</channel>
</rss>


<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" >
<channel>
<item>
<title></title>
<description></description>
<media:group>
<media:content bitrate="1400" width="720" url="myvidHigh.mp4" />
<media:content bitrate="800" width="720" url="myvidMed.mp4" />
<media:content bitrate="420" width="512" url="myvidLow.mp4" />
<media:thumbnail url="myimage.jpg" />
</media:group>
<meta rel='type'>rtmp</meta>
</item>
</channel>
</rss>

Oct. 25, 2009hobbs

This won't work because you can't specify the type flashvar in the media:content element.
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" >
  <channel>
    <item>
      <title></title>
      <description></description>
      <media:group>
        <media:content bitrate="1400" width="720" url="myvidHigh.mp4" type="rtmp" />
        <media:content bitrate="800" width="720" url="myvidMed.mp4" type="rtmp" />
        <media:content bitrate="420" width="512" url="myvidLow.mp4" type="rtmp" />
        <media:thumbnail url="dp3v2004.jpg" />
      </media:group>
    </item>
  </channel>
</rss>


Should be:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:jwplayer="http://developer.longtailvideo.com/trac/wiki/FlashFormats" version="2.0">
  <channel>
    <item>
      <title></title>
      <description></description>
      <media:group>
        <media:content bitrate="1400" width="720" url="myvidHigh.mp4" />
        <media:content  bitrate="800" width="720" url="myvidMed.mp4" />
        <media:content  bitrate="420" width="512" url="myvidLow.mp4" />
        <media:thumbnail url="dp3v2004.jpg" />
      </media:group>
      <jwplayer:streamer>rtmpe://xx.xx.xx.xx/myapp1/</jwplayer:streamer>
      <jwplayer:type>rtmp</jwplayer:type>
    </item>
  </channel>
</rss>



This won't work because the meta element is only for use in the XSPF format playlist.
See the example above for the jwplayer namespace usage.
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" >
  <channel>
    <item>
      <title></title>
      <description></description>
      <media:group>
        <media:content bitrate="1400" width="720" url="myvidHigh.mp4" />
        <media:content bitrate="800" width="720" url="myvidMed.mp4" />
        <media:content bitrate="420" width="512" url="myvidLow.mp4" />
        <media:thumbnail url="dp3v2004.jpg" />
      </media:group>
      <meta rel='type'>rtmp</meta>
    </item>
  </channel>
</rss>

Oct. 25, 2009Jose Febus

Hi All,

This is my XML file based on the previous:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:jwplayer="http://developer.longtailvideo.com/trac/wiki/FlashFormats" version="2.0">
<channel>
<item>
<title></title>
<description></description>
<media:group>
<media:content bitrate="750" url="edu-750.mp41" width="640" />
<media:content bitrate="500" url="edu-500.mp41" width="640" />
<media:content bitrate="250" url="edu-250.mp41" width="640" />
</media:group>
<jwplayer:streamer>rtmp://xxx.xxxx.net/xxxxx/play<jwplayer:streamer>
<jwplayer:type>rtmp</jwplayer:type>
</item>
</channel>
</rss>


the Script in the page is

<script type="text/javascript">
var so = new SWFObject('https://www.xxxxxxx.com/mediaplayer/player.swf','mpl','640','380','9');
so.addParam('allowscriptaccess','always');
so.addParam('allowfullscreen','true');
so.addParam('flashvars','&debug=console&plugins=qualitymonitor-1&bufferlength=6&autostart=true&file=<?php echo $filename?>');
so.write('playerarea55');
</script>


I am getting

This PLaylist is noe a valid XML file.

Oct. 25, 2009Jose Febus

I checked the XML at http://www.w3schools.com/Dom/dom_validate.asp and it validated OK...

Oct. 25, 2009Jose Febus

It looks like JWPLAYER needs

<link>http://www.bigbuckbunny.org/</link>


now the playlist is a valid XML file...

Oct. 25, 2009rajan

Thanks hobbs. Now we can narrow the problem now.
Once rtmp definitions are included (i.e. the two lines given below which were taken from the bitrate.xml file), the player gives an error indicating it is not a valid file ( The error message possibly can be the same as what Jose indicated.

I found this thread which discusses the same problem and talk about the "level” parameter).

I tried to use it to force the player to select a particular stream as follows:
so.addVariable('level', 3)

If I set "level" to 3 ( I have 3 video files in the playlist for switching), it selects the highest speed and does not change any more. If set to 2 and 1 the behaviour is the same. If Level is set to 0), it selects the lowest speed (3rd file) and does not change anymore. I couldn’t force it to select the 2nd file.

It looks like the player does not do switching at least for some people. Wish to get to the bottom of this as quickly as possible.

According to Jose, The quality monitor reports variable rates but it actually does not change the rate. people should look for visual indications for rate switching as well as the server logs.

I checked the video given in the JW tutorial but couldn’t visually detect any rate change for Wowza.

Help is greatly appreciated to solve this issue asap. Thank you.

Oct. 25, 2009hobbs

To fully validate, you need some elements that aren't needed by the JW FLV Player.

If you want your playlists to validate, add those elements as shown in the validation results.

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:jwplayer="http://developer.longtailvideo.com/trac/wiki/FlashFormats">
  <channel>
    <title>MediaRSS Playlist - Orange Movie Project: Elephants Dream</title>
    <description>This is an example MediaRSS playlist for the JW FLV Player featuring The Orange Movie Project: Elephants Dream.</description>
    <link>http://www.longtailvideo.com/</link>



Also, link elements in the tracks.

Oct. 25, 2009hobbs

 
From: http://developer.longtailvideo.com/trac/wiki/FlashVars#Behaviour

   "level (0): currently playing bitrate level. Read-only. Used bitrate switching. Available since 4.6. "

level is READ-ONLY, so using it in your player code shuld not make any difference in the stream that is selected.

Oct. 25, 2009Jose Febus

Has anyone figured out how to do bandwidth switching using JWPLAYER & Wowza?

Oct. 25, 2009rajan

Hi hobbs,

I think it is expected for the player not to react and change level when the "level" parameter is set. But in reality it is different at least for the 4.6.485 which I am using. It reacts to the level parameter. I can force it to use highest level (out of 3), if "level" is set to 3. If it is set 0 it always selects the lowest level. If this parameter is removed, it always uses the lowest level. No bitrate switching.

Please check the video given in the tutorial. I tested this while deliberately congesting my link by downloading multiple files. There was no reaction to varying line congestion level when Wowza is selected. I could cause congestion to a level that the video does not work properly, i.e. it stops-and-go, but couldn't see the player reducing rate in response to line congestion. I did pause/play for it to change rate but no reaction observed. It indeed changes the rate when screen is resized to full screen and back. But it does not react to changes in line bandwidth which can be tested easily.

So, it appears that bitrate switching is not working at least for Wowza rtmp (when it is needed, i.e. when the line is congested). I could see it working if FMS is selected.

Greatly appreciate if this can be fixed asap. Thank you.

Oct. 25, 2009rajan

Hi All,

I have just found out that Wowza 1.7.2 (the current production version) does not support bitrate switching. That is what we are experiencing.

If you need bit rate switching, you should install Wowza 2 Preview current version. Wowza 2 production system should be available before end of the year.

I wish to find out whether the video on the JW tutorial page on bitrate switching uses Wowza 1.7.2 or Wowza 2 Preview.

If it is using Wowza 2 Preview, still there is a problem that needs attention. If it is not using Wowza Preview 2, it is worth testing JW Player with Wowza 2 Preview.

Thanks.

Oct. 25, 2009Jose Febus

Hi Rajan,

I did some tests using another player and it was able to detect the client's bandwidth and deliver the correct video but I have no idea if it was able to switch to another video during playing...

Right now I can live with bandwidth detection and delivering the right video for the detected bandwidth, but I prefer to use JWPLAYER...

Can someone write a plugin to calculate the bandwidth and then pass the value to JWPLAYER so it can deliver the correct value, without dealing with wowza?

Oct. 25, 2009rajan

Hi Jose,

Have you tried this on Wowza 1.7.2 or Wowza 2 Preview. I have just been informed by Wowza forum admin that 1.7.2 does not support bit rate switching. You probably checked it with Wowza 2.0 Preview.

It is worth testing JW Player with Wowza 2. Good place would be the JW bandwidth switching tutorial.

Hope that JW Player development team would test with Wowza 2 and publish a link.

If JW Player bitrate switching is not working with Wowza 2, that needs attention. Could you please check whether your tests were done on Wowza 1.7.2 or Wowza 2.

Thanks.

Oct. 25, 2009Jose Febus

Hi Rajan,

I don't have my files in a in-house server...I am storing them in a CDN...They told me about that Wowza 2 will enable Bandwidth Switching, so I can guess they are using Wowza 1.7.2

Best Regards,

Jose

Oct. 26, 2009rajan

That confirms our problem. Both of us using Wowza 1.7.2 and it does not support congestion detection and bitrate switching. That is available in Wowza 2. The Preview is currently available.

I hope and wish that JW development team would test 4.6 with Wowza 2 and report the outcome. Even better a test link is published in the tutorial.

It is nice to get some feedback from the development team.

Oct. 26, 2009JeroenW

Bitrate switching should work with the 1.x Wowza; it's just not as fancy as with the newer version (fewer switches). There's two issues I can think of:

1. Does your Wowza server have a serverside checkBandwidth() call? The player needs it to determine the bandwidth. This is not available by default in Wowza.

2. There might be an issue with the fact that all 4 bitrates are 640 wide; it might therefore somehow grab the lowest level. I'll look into this.

I'm curious as to why you offer four bitrates with the same video dimensions though. In my experience it's better to change the video dimensions as well. A small video with lower bitrate looks better than a big video with the same bitrate, due to the deringing/deblocking filters that are built in Flash. A suggestion for the different dimensions:

*) 250 kbps: 240px wide
*) 500 kbps: 320px wide
*) 750 kbps: 640px wide
*) 1500 kbps: 960px wide

Oct. 26, 2009Jose Febus

Hi Rahan,

I think Wowza supports a kind of congestion detection because I was able to get it working with another flash player....I opened the same video 5 times and I got the 1500bps twice, the 750kbps twice and for the last one got the 500kbps video.

One question, does the JWPLAYER really needs a server modification? It will be great to have the player open the level 3 video (or just the suggested for us) and based on the first 2 seconds of data it can switch the video...

Oct. 26, 2009rajan

Firstly I should thank Jeroen for looking into this issue.

I didn't have the Wowza bw detection module. So I downloaded the built version and installed as described in this post:
http://96.30.11.104/forums/showthread.php?t=169

Still it is not working. Always selects the lowest speed. However, I can force it to select the highest speed by setting the "level" parameter to 3.

I expect JW player to work with this module but I couldn't observe that.

I have changed the "width" parameter to different values but that has no affect.

I tested with the playlist using the exact syntax as given in the above posts but it always selects the lowest stream (unless forced to slect the highest using the "level" setting. Cannot make it to select the middle stream.).

Playlists were tested in two ways. Both playlists exhibited the same behaviour. That is always locks into the lowest stream unless forced to lock to highest using the "level" parameter.

1 st method tested:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"
xmlns:jwplayer="http://developer.longtailvideo.com/trac/wiki/FlashFormats">

<channel>
<item>
<title>rtmp streaming</title>
<description>rtmp streaming</description>
<media:group>
<media:content bitrate="1400" width="720" url="myvid1.mp4" />
<media:content bitrate="1000" width="700" url="myvid2.mp4" />
<media:content bitrate="420" width="512" url="myvid3.mp4" />
<media:thumbnail url="myimage.jpg" />
</media:group>

<jwplayer:streamer>rtmp://xx.xx.xx.xx/myapp<jwplayer:streamer>
<jwplayer:type>rtmp</jwplayer:type>

</item>
</channel>
</rss>


2nd method tested:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" >

<channel>
<item>
<title>rtmp streaming</title>
<description>rtmp streaming</description>
<media:group>
<media:content bitrate="1400" width="720" url="myvid1.mp4" type="rtmp" />
<media:content bitrate="1000" width="700" url="myvid2.mp4" type="rtmp" />
<media:content bitrate="420" width="512" url="myvid3.mp4" type="rtmp" />
<media:thumbnail url="myimage.jpg" />
</media:group>

</item>
</channel>
</rss>


Could there be any issues with the build 4.6.485? Has this been tested with Wowza 1.7.2 with the above given wowza bw module?


Hi Jose,

Wowza 1.7.2 also has some sort of bw detection method once the bw module is installed. If you had that module installed, that explains your observation with the other player.

Oct. 27, 2009rajan

I have couple of questions on Wowza 1.7.2 ans Wowza 2 integration with 4.6. Please check. Thanks.

http://www.wowzamedia.com/forums/showpost.php?p=27200&postcount=10

Oct. 27, 2009hobbs

 
Maybe the playlists are wrong. I fixed mine and now bitrate switching works like a tiger getting chased by a polar bear.

According to: http://search.yahoo.com/mrss/ only media:content elements are supposed to be within the media:group.
<media:group> is a sub-element of <item>. It allows grouping of <media:content> elements that are effectively the same content, yet different representations. For instance: the same song recorded in both the WAV and MP3 format. It's an optional element that must only be used for this purpose.
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:jwplayer="http://developer.longtailvideo.com/trac/wiki/FlashFormats" version="2.0">
  <channel>
    <item>
      <title>rtmp streaming</title>
      <description>rtmp streaming</description>
      <media:group>
        <media:content bitrate="1400" width="720" url="myvid1.mp4"/>
        <media:content bitrate="1000" width="700" url="myvid2.mp4"/>
        <media:content bitrate="420" width="512" url="myvid3.mp4"/>
      </media:group>
      <media:thumbnail url="myimage.jpg"/>
      <jwplayer:streamer>rtmp://xx.xx.xx.xx/myapp</jwplayer:streamer>
      <jwplayer:type>rtmp</jwplayer:type>
    </item>
  </channel>
</rss>

Oct. 27, 2009rajan

Breaking News... At least for Jose and myself!

Jose, I think I have found at least part of the problem - the reason for JW player not to switch when full screen is selected and vice versa, The reason is the following (from your code:
('https://www.xxxxxxx.com/mediaplayer/player.swf','mpl','640','380','9');


Since your screen size is set to 640x360 and your width is set to the same in your xml, it does not recognise screen size change when the full screen mode is selected and vice versa. You should given a lower dislay dimensions in the above definition, possible actual windowed display size in the above. Then it will switch bitrate when the full screen mode is selected and vice versa.

Try this:
]('https://www.xxxxxxx.com/mediaplayer/player.swf','mpl','580','344','9');

and select "width"=580 for the lowest rate in your xml file:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:jwplayer="http://developer.longtailvideo.com/trac/wiki/FlashFormats" version="2.0">
<channel>
<item>
<title></title>
<description></description>
<media:group>
<media:content bitrate="750" url="edu-750.mp41" width="640" />
<media:content bitrate="500" url="edu-500.mp41" width="640" />
<media:content bitrate="250" url="edu-250.mp41" width="580" />
</media:group>
<jwplayer:streamer>rtmp://xxx.xxxx.net/xxxxx/play<jwplayer:streamer>
<jwplayer:type>rtmp</jwplayer:type>
</item>
</channel>
</rss>


These changes will make it react to screen size changes but not to bw changes - still that needs attention.

I was informed by Charlie (Wowza forum admin) that the Bandwidthcheck module for 1.7.2 does a check prior to the start of the clip but not during the playback. Really, for dynamic bandwidth switching you need Wowza 2. You can download the Preview for the testing.

Still I am not sure about the integration of 4.6 and Wowza 2. Wish to get some feedback from Jeroen or his team on that. This may be the reason that I couldn't see any reaction to bw availability or (artificially created) network congestion when I tested the clip given in JW bit rate switching tutorial. The tutorial is possibly working with Wowza 1.7.2 rather than Wowza 2.

I expect all JW customers (using Wowza) would love and expect JW team to test Wowza 2 and publish a link. Possibly change the tutorial wowza option to Wowza 2.

Link to the JW Player bitrate switching tutorial:
http://www.longtailvideo.com/support/tutorials/Bitrate-Switching

Hope to get some feedback from the JW development team.

I really would like to know, if I install Wowza 2 preview, would JW Player 4.6 work with it for dynamic bandwidth switching.

Thanks very much for your help Hobbs, Jeroen and all others.

Oct. 27, 2009Jose Febus

Hi Rajan & Others...

I think I was expecting something from the bandwidth switching that is not featured yet...

In my website I don't want the user to be changing resolutions...I just want a user to look at a video and I need the player to select the video based on the bandwidth...

Oct. 27, 2009rajan

Hi Jose,

It is not user changing the resolution. If it is configured as above, the player would select the lower speed when the video is played in a window (i.e. small). When the user make the video full-screen, the player would automatically select the highest rate. I couldn't find a way for it to select the middle stream.

As you are saying it is not bitrate switching which is available in Wowza 2. I expect JW team is testing Wowza 2 and we will find out soon about it. Perhaps we would see a 4.6 demo soon with Wowza 2.

Oct. 27, 2009Jose Febus

Hi...

I notices the text "The highest quality level whose width and bitrate fits within the display width and connection bandwidth is selected for playback."

Is that's the case, if my best quality video is 640, the video player is 640 and I have enough bandwidth, it should present the best video...

I did a test with widths of 640, 480 and 320 and it keeps selecting the 320 video

Oct. 27, 2009rajan

It appears that there is some issue with the Jw player that it does not select the highest bit rarte if the display is not set to a lower value than the width of the highest bit rate stream. So, to fix this you need to change the display definition.

If you define the display as given below, it should work.
('https://www.xxxxxxx.com/mediaplayer/player.swf','mpl','320','188','9');

This will make 4.6 switch bitrate depending on the display. Still needs attention to change bit rate based on available bw. Perhaps this nees to be done with Wowza 2 since Wowza 1.7.2 does not support dynamic bitrate switching.

Oct. 28, 2009Ethan Longtail

Hi Rajan,

Can you link me to where you are running this on your site?

Please email me directly at ethan [at] longtailvideo [dot] com to follow up if you have any other questions, thank you.

Best Regards,
-Ethan

Oct. 28, 2009Jose Febus

Hi All,

I just found a javascript that calculates the bandwidth and based on that number I am selecting the video:

if (speed.Kbps>=750) {
bw=750
} else
if (speed.Kbps>=500) {
bw=500
} else if (speed.Kbps>=250) {
bw=250
}

bw +='';

get the correct file name : file=edu-'+bw+'.mp4

Oct. 29, 2009rajan

Thanks very much Ethan. I will contact you.

Jose,

The script that you have given doesn't say much. There should be lot more to it than that.

Basically server should assess bw on a continuous basis both down and upstream and inform the client to sw bandwidth. Preferably, server can test packet loss as well, a very important parameter. Based on these, it has to make a decision on switching bw and inform the client about it. The algorithms used for this purpose should be smart and preferably need access traffic parameters from the TCP or UDP stack so that it can make a well informed and accurate decision.

My preference is not to burden the server with these calculations. The client is the best place for this since it is distributed. JW Player can make a real difference and position itself as an intelligent player, if bw assessment for both up and downstreams are implemented in the player.

Player needs some information from the server, e.g. server can extract upstream packet loss (from TCP or UDP). Also server can measure the downstream "send" buffer size and this data can be fed back to the client. The client can measure downstream packet loss, round trip time, upstream "send" buffer size. It is better to have a client-server protocol to measure round trip time – ping is not suitable for this purpose. All these traffic parameters need to be applied to make a decision on the available bw prior to selecting the suitable stream. Server should be able to switch streams seamlessly for smooth transitions.

The implementation of an accurate bw assessment and smooth transition may not be trivial.

I feel the best way forward is to make JW Player more intelligent and tightly integrate with the servers including Wowza 2.

I will post this information in the Wowza forum as well to get feedback from them.

Oct. 29, 2009Jose Febus

rajan, sorry to post only part of the code...It was just to show the concept..

I know that the correct way is to constantly be checking for bandwidth changes, but right now JWPLAYER is not able to select the correct video served from wowsa based on the bandwidth. I really can't tell my users they need to go full screen to get the high quality content.

For the moment I need a player that based on the bandwidth can present the user the correct video, no the one with the lowest quality...

Oct. 30, 2009rajan

I was thinking about bandwidth detection and it appears that it is not very complex at least for TCP based RTMP. The reason is TCP. TCP is doing the hard work, i.e. monitoring packet loss, round trip time, TCP internal buffers (window size) etc. Therefore the flow control between JW player and Wowza will not be hard. I think it is possible to get away just by monitoring 4 buffers. They are: client send and receive, server send and receive. If receive buffers are kept close to full by adjusting and selecting the appropriate stream, the end user would see an uninterrupted stream. Live streaming is more complex since UDP is used.

Another important matter is to establish a larger receive buffer for VOD applications. The user adjustable buffer is linked to the seek time since that buffer need to be filled prior to display. Hence it needs to be a small buffer. However, in order to feed this small buffer, it is desirable to establish a secondary ram cache which can be grown to 30-60S or so in the back ground. This secondary cache can be the reservoir for the primary player cache so that the primary cache will not starve due to short term network fluctuations.

Add a reaction

You can also return to the category or try this search for related threads.


 

Search the Forums

Go

Support

Support Here are some helpful links to learn more about the JW Player™:

Monetize Your Video

Monetize Your Video Earn money with ads from LongTail's AdSolution. Watch our demos and sign up now!

Why Buy a License?

Why Buy a License? If you don’t buy a commercial license, you cannot use a JW Player™ on (i) a site that has ads; (ii) a corporate site; or a (iii) CMS. Our licenses are very inexpensive, so what are you waiting for? Buy a license today.