Ruben
Ruben

Reputation: 1437

Stop audio buffering in the <audio> tag

I am currently working in using the HTML5 audio player to provide a audio stream (24/7 radio stream) via the (mobile) browser. Loading in the stream and playing it works fine.

The major problem is that the HTML5 <audio> tag will keep downloading (buffering) content even when its not active. This could be a major issue for mobile users since most of them pay for data use. So far I have not been able to find a decent solutions that works cross browser to prevent this.

I tried so far:

  1. Unload the source when pause is pressed. < This does not work cross browser
  2. Remove the audio player element and load a new one. This works but lets be honest, this is a very hacky way of performing an extremely simple task.

I was simply wondering if there is something I'm overlooking in this whole issue since I am convinced I'm not the only one with this issue.

Upvotes: 20

Views: 14660

Answers (3)

Alistair Chisholm
Alistair Chisholm

Reputation: 628

The <audio> element includes a preload attribute. This can be set to "none" or "metadata" which should prevent the audio preloading.

Source: https://developer.mozilla.org/en/docs/Web/HTML/Element/audio

Upvotes: 16

Gery Teague
Gery Teague

Reputation: 27

You can do the following to stop buffering load without errors:

var blob = new Blob([], {type: "audio/mp3"});
var url = URL.createObjectURL(blob);
audio.src = _url;

or, shortened up:

audio.src = URL.createObjectURL(new Blob([], {type:"audio/mp3"});

Now you're not loading a "" which is a bad url for the audio tag to try and load. You're instead loading an actual url made from a Blob that just contains no data for the audio to playback.

Upvotes: 1

Ruben
Ruben

Reputation: 1437

I found a workable solution for the problem described above. A detail description can be found here: https://stackoverflow.com/a/13302599/1580615

Upvotes: 2

Related Questions