Остановить буферизацию звука в <audio> тег

В настоящее время я использую аудиоплеер HTML5 для предоставления аудиопотока (24/7 радиопотока) через (мобильный) браузер. Загрузка в потоке и игра с ней отлично работают.

Основная проблема заключается в том, что <audio> HTML5 <audio> будет поддерживать загрузку (буферизацию) контента, даже если он неактивен. Это может стать серьезной проблемой для мобильных пользователей, поскольку большинство из них платят за использование данных. До сих пор мне не удалось найти достойные решения, которые работают с перекрестным браузером, чтобы предотвратить это.

Я пробовал:

  1. Выгрузите источник при нажатии паузы. <Это не работает.
  2. Удалите элемент аудиоплеера и загрузите новый. Это работает, но, честно говоря, это очень хакерский способ выполнения чрезвычайно простой задачи.

Я просто задавался вопросом, есть ли что-то, что я упускаю из виду во всем этом вопросе, так как я убежден, что я не единственный в этом вопросе.

Ответ 1

Я нашел работоспособное решение проблемы, описанной выше. Подробное описание можно найти здесь: fooobar.com/questions/63913/...

Ответ 2

Элемент <audio> содержит атрибут preload. Это может быть установлено как "none" или "metadata", которые должны препятствовать предварительной загрузке аудио.

Источник: https://developer.mozilla.org/en/docs/Web/HTML/Element/audio

Ответ 3

Вы можете сделать следующее, чтобы остановить буферизацию без ошибок:

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

или, укороченный:

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

Теперь вы не загружаете "", который является плохим URL-адресом для звукового тега, чтобы попробовать и загрузить. Вместо этого вы загружаете фактический url, сделанный из Blob, который просто не содержит данных для воспроизведения звука.

Ответ 4

Код на самом деле работал, только что добавил скрипт в начале и никаких проблем вообще. Большое спасибо. Моя проблема заключалась в том, что звук останавливается примерно через 5 минут, с помощью этого кода это исправить !!