You can ‘stream’ FLVs or you can use ‘progressive download’. Not many of us use ‘streaming’ because you need a streaming media server software for this, like Macromedia Flash Communication Server or Flash Media Server, and this has a considerable cost.
You have two obvious advantages with streaming: you can seek to an arbitrary time in the video (still you land on a key frame, I think) and the file is not cached (and eats your bandwidth every time, but I can see how this is considered an advantage).
Now it’s possible to stream a FLV using a simple PHP script and FLVMDI injected data. Flashcomguru has a great post and sample code in his blog titled: ‘Streaming’ flv video via PHP, take two (I borrowed his title:) ).
This does solve the ‘seek’ problem with progressive downloads (which is huge, depending on who you are asking), but the FLV gets cached (or can be easily retrived), and because currently only our free software FLVMDI 2.7 Beta supports adding the required data, this is Windows only for now.
So how does it work? FLVMDI adds key frame times and file positions to the injected metadata. When user seeks a time, you find the nearest key frame and its file position using the injected metadata and pass the file position to the PHP. The PHP script creates a new FLV header, seeks to the file position and starts sending data from there.
Kudos to Stefan Richter, the Flashcomguru, and everybody else involved.