<audio> как предотвратить кеш на потоке файла? - PullRequest
0 голосов
/ 09 февраля 2019

Я создаю небольшой аудиоплеер HTML5, который воспроизводит потоковый файл.Элементы управления (просто воспроизведение и пауза) управляются jQuery, и они отлично работают.

Но я вижу, что, когда я прекращаю воспроизведение и возобновляю воспроизведение, он не обновляет аудиобуфер, сохраняющий трек.с потоковой музыкой ... но просто ставит ее на паузу и перезапускает с того момента, на котором я остановился.Чтобы правильно возобновить потоковую передачу файлов (я имею в виду: сохранение синхронизации с потоковой передачей), я должен нажать F5!

Чтобы попытаться принудительно обновить каждую нажатую кнопку PLAY, я добавил классическую метку времени в URLи добавил (и удалил) теги html в соответствии с нажатыми кнопками, но это не удалось.

Я также удалил тег «предварительная загрузка» из аудио, но и это не сработало.

Как мне полностью обновить потоковый файл, очищая буфер, каждый раз, когда я нажимаю PLAY?сохраняя синхронизацию с исходным потоковым файлом вместо того, чтобы ограничиваться нажатием клавиши F5?

HTML

...
...
<audio id="music" loop="false">
</audio>
...
...

jQuery

...
...
$('#play').click(function() {
    var d = new Date();
    var n = d.getTime();
    var streaming = "<source src=\"/radio/live.php?dev=" + n + "\" type=\"audio/mp3\">" +   "<source src=\"/radio/live_2.php?dev=" + n + "\" type=\"audio/ogg\">";
    $('#music').html(streaming);
    $('#music')[0].play();
    $('#play').css("visibility", "hidden");
    $('#pause').css("visibility", "visible");
});

$('#pause').click(function() {

    $('#music').empty();
    $('#music')[0].pause();
    $('#play').css("visibility", "visible");
    $('#pause').css("visibility", "hidden");
});
...
...

1 Ответ

0 голосов
/ 09 февраля 2019

Я нашел способ.Возможно, это и есть РЕШЕНИЕ, возможно, нет, но оно работает.

Я добавил эту строку, когда нажата пауза

location.reload(true ); 

Таким образом, код для паузы теперь здесь ниже.Другими словами, при нажатии на «Puse» выполняется:

$('#pause').click(function() {
    location.reload(true ); // reload the content and flush any cache or buffer
});

, и после нажатия кнопки «PLAY» все запускается правильно в синхронизации с потоковой передачей

...