Dynamic Streaming Follow-Up (& Improvements)

By Larry B, April 8, 2010
My Dynamic Streaming article on streamingmedia.com generated some follow-up over at Longtail Video, home of the JW FLV Player.  In an email exchange, JW himself, Jeroen Wijering, explained how the JW was handling stream switching, and that in response to my test results, they'd made some changes for the next release (5.2).  You will find excerpts of the ensuing email discussion in the comment section of the article page, appearing shortly.  In that discussion, Jereon offers a terrific explanation of how it works, and confirms two of the rules of thumb I deduced in my testing:
  1. Encode with a fixed keyframe interval, ideally every 2 seconds or so
  2. Use a bufferlength about 2x the keyframe interval
To quote Jeroen:
Herein lies the tradeoff to be made for dynamic streaming. Higher bufferlengths decrease the likelihood of playback stuttering, but slow down any responses to screensize / bandwidth increases. Hence the rules of thumb for short keyframe intervals and "2x keyframe" bufferlengths.
I've updated the Dynamic Streaming example page to load a build of the player that contains the fix. My testing shows that it performs beautifully - on par with the 1080p player at switching both up and down, with seamless playback during the switch.  This will be part of the next release of JW Player, 5.2, now scheduled for around the end of May.

I haven't had any communication from anyone involved with Flowplayer. Their dynamic streaming implementation as tested for this article (bandwidth-check plugin 3.1.3) remains not really useful for during-playback streaming, although it was fine a selecting the correct stream at startup.

Synchronized Slides for the JW FLV Player – Two New Plugins

By Larry B, April 6, 2010

SlideSync screenshotFor years I’ve been hearing and reading about demand for a simple synchronized slides plugin for the JW Flash Video player. Sure, you can do it with some Javascript: add event listeners to track the play-head position and use that to trigger image loads in a separate DIV. But that requires page scripting and introduces dependencies that might not always be do-able.

But I always thought there oughtta be a simpler way. So I made one. Honestly, I didn’t know if it was possible using the JW Plugin API, and while I’m a pretty good Java/Web programmer, I’m definitely not a Flash/ActionScript ace. So I decided to give it a try as a learning experience. The result is two plugins for the JW FLV Player: SlideSync and SlideScroller. These are free for commercial and non-commercial use.

You can see an example of the SlideSync and SlideScroller plugins in action, or look at documentation of the options and parameters, or go to Longtail Video’s plugin pages for the SlideSync and SlideScroller plugins.

There’s a lot of room for improvement and growth in this. It’s really a first-effort, but should be useful anyway in some cases. There are still reasons to use the Javascript event-listener model as well, which offers lots of flexibility and control you won’t get from the this plugin. But for simplicity, this is a good start. Feedback is welcome. Improvements welcome, too! The source is linked on the documentation page.