<audio>如何防止流文件缓存?

时间:2019-02-09 11:00:47

标签: jquery html5-audio

我正在创建一个小型HTML5音频播放器,用于播放流文件。 控件(仅播放和暂停)由jQuery管理,并且效果很好。

但是我看到的是,当我停止播放并重新开始播放时,它不会刷新与音频流保持一致的音频缓冲区……只是暂停它,然后从我重新开始播放停顿了。 要正确地重新启动文件流传输(我的意思是:保持与流媒体的同步),我必须按F5键!

要尝试强制每次按下Tipe PLAY进行更新,我将经典时间戳记添加到URL,并根据单击的按钮添加(并删除了)html标记,但未成功。

我还从音频中删除了标签“ preload”,但这也没有用。

如何在每次按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 :(得分:1)

我确实找到了方法。也许这是解决方案,也许不是,但是有效。

我确实在单击“暂停”时添加了这一行

location.reload(true ); 

因此,暂停的代码现在在下面。 换句话说,单击“ Puse”时,它会:

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

点击PLAY后,所有内容均可在同步流中正确启动