When you open an mp3 on your hard drive while it is still being written to disk (perhaps you are still downloading it or you are still encoding it), winamp correctly plays through the whole file.
Winamp's mad, crazy-ass robustness allows it to play an incomplete mp3, even beyond the point it -- when first loaded -- assumed was the end of the file, as long as it *plays* slower than it is written to disk. It's a simple principle and I am glad winamp supports it.
Unfortunately, this does not work over HTTP when streaming. It improperly assumes the end of file is reached, even if when reaching this originally-forcasted point, there is more to the file. To work around this bug, you can do a seek, and the entire file is played properly, even beyond the visible EOF evident when the file was first played.
To reproduce the bug (or perhaps lack of feature), observe the following:
1) FTP an mp3 from somewhere. Make sure your download speed exceeds the bitrate of the file. For a 128kbit/sec mp3, be sure you are getting at least 16kbyte/sec.
2) Navigate to this incomplete, currently downloading file and open it with winamp.
3) Observe that (suppose the file was 128kbit/sec and 200k was completed when you opened it) Winamp thinks the song is 12.5 seconds long.
4) Observe that winamp, when reaching the 12.5 second mark, continues to play! Winamp is smart enough to realize that as it has reached what it originally thought was the end of the file, more of the file has come in. Winamp will play the whole song, provided your download speed exceeds the play speed so winamp never "catches up". The seek bar will stay at the end of the track since winamp is constantly at the end of the song ;-) This is handled very well by winamp!
5) Use Terminal Services / PCAnywhere / Timbuktu / RemotelyPossible / COntrollIT etc to operate a web server.
6) Start a file FTPing in on this remote web server (from yet a "remote-er" server ;-)
7) Point your local winamp to http://thatwebserver/thefile.mp3
, assuming it is accessable at the URL.
8) Observe as in 3) Winamp begins to play (http stream) the file and thinks it is "small" (it is still being transmitted to the server -- AS the server is relaying to the client (winamp)).
9) Observe that winamp actually STOPS instead of playing beyond what it thought was the end of the file.
This would suggest to me that this is not a bug, but a lack of a feature. HOWEVER! Read on! ;-)
Insert Step 8.5) Seek to the beginning of the file. Winamp does it's crazy-ass cool HTTP 1.1 seek and plays the file from the beginning. Keep in mind that this file is STILL not complete on the server, as the server itself is still downloading it.
New step 9) Observe that after having used winamp's seek feature, the song correctly plays beyond what it thought was the end of the file.
Since it works "the cool way" after any arbitrary seek operation, it suggests to me that this is indeed a bug. In any event, please do correct this so that my neat-o web application with my neat-o transcode feature can work asynchronously in real-time like it is supposed to!
See my post in the Ask Steve section for TONS of details on the problem and how I encountered it. There you can also see that this would be a great feature if it could be fixed!
Please fix this