Javascript 构建HTML5音频流Chrome扩展-如何停止缓冲流

Javascript 构建HTML5音频流Chrome扩展-如何停止缓冲流,javascript,google-chrome-extension,html5-audio,Javascript,Google Chrome Extension,Html5 Audio,扩展是一个简单的浏览器操作。按下时,它将打开/关闭音频 我理想的工作流程是按下按钮,它就会打开;再按一次,它将关闭;再按第三次,它将在当前时间启动(而不是在先前暂停的时间) 根据我的研究,HTML5音频流没有像audio.stop()那样停止缓冲的功能 有没有办法解决这个问题?我可以简单地关闭或关闭背景窗口流式播放音频,并在需要时重新加载吗?我觉得这也将使扩展更轻的重量 这是我的代码(此代码是功能性的,但同时暂停和恢复): manifest.json { "manifest_version":

扩展是一个简单的浏览器操作。按下时,它将打开/关闭音频

我理想的工作流程是按下按钮,它就会打开;再按一次,它将关闭;再按第三次,它将在当前时间启动(而不是在先前暂停的时间)

根据我的研究,HTML5音频流没有像audio.stop()那样停止缓冲的功能

有没有办法解决这个问题?我可以简单地关闭或关闭背景窗口流式播放音频,并在需要时重新加载吗?我觉得这也将使扩展更轻的重量

这是我的代码(此代码是功能性的,但同时暂停和恢复):

manifest.json

{
"manifest_version": 2,

"name": "kcpr",
"version": "1.0",
"permissions": [
  "notifications"
],
"web_accessible_resources": [
  "icon.png"
],

"background": {
  "page": "music.html",
  "persistent": false
},

"browser_action": {
  "default_icon": "icon.png"   
}
} 
music.html

<audio id="stream" controls="" autoplay="" preload="none" name="media">
<source src="http://129.65.35.106:8000/KCPRMP3" type="audio/mpeg"></audio>

<script type="text/javascript" src="music.js"></script>

或者您可以尝试将其设置为“空白”mp3数据URI。不过,上述方法应该有效。

这对我帮助很大,谢谢。然而,每次我第二次加载页面时,我感觉性能都有很大的下降。查看Chrome的“网络”选项卡,我可以在流媒体请求上看到“警告:请求尚未完成!”。@lucasdavid可能值得问一个新问题。这个问题(和答案)来自13年
var playing = false;
var stream = document.getElementById("stream");  
stream.pause();

function doSomething() {   
    var startNotification = webkitNotifications.createNotification(
        'icon.png',
        'starting',
        'Starting!!'
    );
    var stopNotification = webkitNotifications.createNotification(
        'icon.png',
        'stopping',
        'Stopping!!!'
    );             
    if (playing == false) {
        startNotification.show();
        setTimeout(function(){ startNotification.cancel(); },1500);
        stream.play(); 
        playing = true;
    }
    else {
        stopNotification.show();
        setTimeout(function(){ stopNotification.cancel(); },1500);
        stream.pause();                
        playing = false;
    }
}

chrome.browserAction.onClicked.addListener(doSomething);
stream.src = '';
stream.src = null;