[Icecast-dev] Streaming WAV / Converting WAV to a streamable format
on the fly
Guido Helmers
helmers_j2ee at hotmail.com
Mon Oct 30 13:43:04 PST 2006
Hi,
I am trying to implement a web application that allows the user to playback
WAV files inside a web browser.
__________
Background
__________
- The file server stores audio files as GSM 6.10 or TrueSpeech encoded WAV
files.
- The web server (most probably ASP.NET on IIS) offers the client the
ability to search audio files on the file server (a different machine).
- The client will be equiped with internet explorer and a standard Media
Player plugin (preferably Windows Media Player or QuickTime).
____________
Requirements
____________
The requirements for this application are:
1. The client should be able to playback a WAV file with a media player
plugin in the web browser.
2. The WAV file should NOT be accessible to the client, the URL to the WAV
file should not be accessible / visible
3. The WAV file should NOT be downloaded
4. The WAV file should NOT be cached on the client hard disk
________________________
No Progressive download!
________________________
Because of requirement 2, we can NOT do this:
<object id="player" height="45" width="220"
classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
<param name="url" value="audio/GSM.wav" />
</object>
because the user can copy-paste the file location from the source code, and
easilly download the file.
Because of requirement 3 and 4, pseudo streaming like the following (an
asp.net example) is NOT allowed, because the complete file is still
downloaded to the client:
<object id="RPPlayer" height="200" width="220"
classid="CLSID:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA">
<param name="type" value="audio/wav" />
<param name="src" value="audioStream.aspx" />
</object>
code-behind page of audioStream.aspx:
...
Response.ContentType = "audio/wav"
Response.AddHeader("Content-Disposition", "attachment;
filename=""GSM.wav""")
Response.TransmitFile("C:\GSM.wav")
...
_______________
Real Streaming?
_______________
So having excluded downloading and pseudo-streaming (a.k.a. http-streaming
a.k.a. progressive download) the logical next step is 'real' (on demand)
streaming.
The limitation that we come across when using standard Streaming Servers
(like Windows Media Services or QuickTime) is that they can not stream WAV
files.
The WAV files always have to be encoded to a streamable format (WMA for
windows media service, or MOV for QuickTime/Darwin, etc) before they can be
streamed.
Converting the complete file server from WAV to a streaming format (WMA, MOV
or whatever) is not an option (because the file server is being populated
with new WAV files continuously; this process is 'hardware-driven' and
extremely hard to adjust). We will stick to the WAV file format for now.
_________
Questions
_________
So what I'm really looking for is one of the following:
(a) a streaming server that can stream WAV files.
Does this exist or is it technically impossible to stream WAV files? Why?
(b) or a way to convert WAV to a streamable format on the fly
(programmatically, 'inside' the streaming server), when the user requests
the WAV file.
I have no problem with converting WAV on the fly,
- but the conversion should never take more than a few seconds for a one MB
WAV file (= 10 minutes in our case),
- and I would like to hear experiences from other developers that have done
this, before I invest a lot of time in this and bump into unforeseen
problems when I'm halfway.
I noticed that a 10 minute WAV file which is 1MB in size takes about
- 3 seconds to convert to MOV with QuickTime Pro (I think this can be
programmed into the Darwin streaming server)
- 25 seconds to convert to WMA with the Windows Media Encoder (could be
programmed with the Windows Media SDK but 25 seconds takes way too much
time)
- Is there a way to programmatically convert to a format that can be
streamed by icecast, on the fly?
(c) or a completely different approach, like streaming over HTTP with to
Java applet.
I can not find any examples on the web, and think this might be the most
time-consuming solution of all?
Other helpful comments are also very welcome...
Cheers,
Guido
_________________________________________________________________
Talk with your online friends with Messenger
http://www.join.msn.com/messenger/overview
More information about the Icecast-dev
mailing list