HTML5 <audio> poor choice for LIVE streaming?

Viewed 2940

As discussed in a previous question, I have built a prototype (using MVC Web API, NAudio and NAudio.Lame) that is streaming live low quality audio after converting it to mp3. The source stream is PCM: 8K, 16-bit, mono and I'm making use of html5's audio tag.

On both Chrome and IE11 there is a 15-34 second delay (high-latency) before audio is heard from the browser which, I'm told, is unacceptable for our end users. Ideally the latency would be no more than 5 seconds. The delay occurs even when using the preload="none" attribute within my audio tag.

Looking more closely at the issue, it appears as though both browsers will not start playing audio until they have received ~32K of audio data. With that in mind, I can affect the delay by changing Lame's MP3 'bitrate' setting. However, if I reduce the delay (by sending more data to the browser for the same length of audio), I will introduce audio drop-outs later.

Examples:

  • If I use Lame's V0 encoding the delay is nearly 34 seconds which requires almost 0.5 MB of source audio.
  • If I use Lame's ABR_32 encoding, I can reduce the delay to 10-15 seconds but I will experience pauses and drop-outs throughout the listening session.

Questions:

  1. Any ideas how I can minimize the start-up delay (latency)?
  2. Should I continue investigating various Lame 'presets' in hopes of picking the "right" one?
  3. Could it be that MP3 is not the best format for live streaming?
  4. Would switching to Ogg/Vorbis (or Ogg/OPUS) help?
  5. Do we need to abandon HTML5's audio tag and use Flash or a java applet?

Thanks.

1 Answers
Related