
SlideShowPro for Flash supports the progressive download and display of videos, including FLV and H.264. When requested, a video file is downloaded to the browser cache and played back progressively; allowing the user to view however much of the file has been retrieved.
One of the more mysterious and often misunderstood features of video playback is "buffering", which is a term typically used when talking about streaming video (from a streaming server) where video files aren't downloaded to the browser cache, but rather streamed directly to the player. With progressive download (which SlideShowPro supports), "buffering" refers to the number of physical bytes of the video file that have been downloaded.
SlideShowPro for Flash offers a toggle to control buffering through the VIDEO/Buffer Time parameter. The value assigned is in seconds, and dictates to SlideShowPro the minimum number of seconds a user should be able to continuously view a video without having to wait for more video to download. For example, the default setting of "5" ensures that regardless of connection speed, everyone who views a video will be able to see at least 5 seconds worth before playback begins, and again thereafter if their connection speed isn't fast enough to download an additional 5 seconds worth when the previous 5 seconds has ended.
It's important to note that a 5 second setting for VIDEO/Buffer Time does not mean that users will wait 5 seconds before video playback begins. It's value correlates to 5 seconds of video, not 5 seconds of download time.
Chances are though, if you encode your videos at a bit rate and dimension that is appropriate for the type of viewing audience your site attracts, you'll never have to think about buffering (for videos will download fast enough so that playback never stops). In other situations though, tweaking VIDEO/Buffer Time and the bitrate used when encoding your videos can help ensure a more consistent playback experience.
Here's a handy mathematical equation you can use to better understand how bitrate and user bandwidth can affect video playback:
minBufferSize = Math.ceil(flvLength - flvLength/(flvBitrate/bandwidth));
In the above, flvLength is the length of the video in seconds, flvBitrate is the bitrate of the video in kilobits, and bandwidth is the target user bandwidth speed in kilobits. For example, if I had a two minute video that was encoded at 700 kbps and I wanted to ensure that anyone with a net connection of at least 512 kbps could view the video continuously without re-buffering, it would be calculated like so:
minBufferSize = Math.ceil(120 - 120/(700/512)); trace(minBufferSize);
This shows that a user on a 512 kbps connection would need to download at least 33 seconds of video in order to playback the video without any pauses to allow the video buffer to refill. You could use this as the value of videoBufferTime, like so:
my_ssp.videoBufferTime = minBufferSize;
You would only want to do this however if you wanted to guarantee continuous playback, which may be overkill in some situations (for buffering 33 seconds worth of video could take at least a minute or longer to download). So a setting of around 10 or 15 seconds may be preferable (for people on slower connections are already accustomed to videos having to re-buffer). But this should at least give you a better understanding of how file bitrate, video length and user bandwidth affect video playback.