If you want to use .wav headers, you can't upload "in real-time" as in "streaming". The wave file header has a couple fields that require the data size to be known in advance. That means you either have to process the entirety of the audio on the Arduino so you can add the header and upload the whole file at once, or you have to have random access to the file on your server, so you can stream the data, then go back and modify the header once the recording ends. Or you have to record fixed-length chunks.
Very true, wav is not streaming format.
What I advised sbright33 to do is get either the Arduino to add the required header fields before hand (the easiest method) or upload to the server and the server will add the header and/or also convert to a different format.
Either way, all the data including the header will be present and thus the user can download the sound file.
In terms of codec support, there are usually media plugins that can handle any common format, whether the browser natively supports it or not. If you have QuickTime or WMP or VLC plugins installed and enabled, you shouldn't have to concern yourself with whether the browser understands that format. Test and verify of course.
Yes plug-ins are available but not always for different platforms, plus Quicktime has become such bloatware lately that it's best avoided.
According to this page
, these two voice sample formats are supported by the wave container:
0x0006 WAVE_FORMAT_ALAW 8-bit ITU-T G.711 A-law
0x0007 WAVE_FORMAT_MULAW 8-bit ITU-T G.711 µ-law
Others can be, with the extensible format header.
Does that also apply to HTMl 5, I suspect not.
Keep in mind that the whole idea about the <video> and <audio> tags of html 5 is to support them natively and not via plug-ins.