2013-06-03 85 views
1

該擴展是一個簡單的瀏覽器操作。按下時,它會打開/關閉音頻。構建HTML5音頻流式Chrome擴展 - 如何停止緩衝流

我的理想工作流程是按下按鈕,它會打開;再次按下它將關閉;並第三次按它,它將在當前時間開始(而不是在先前暫停的時間)。

從我的研究中,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> 

music.js

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); 

回答

1
stream.src = ''; 
stream.src = null; 

或者你可以嘗試將其設置爲 「空白」 MP3 dataURI。以上應該工作。

+0

這幫了我很多,所以謝謝。但是,每次我第二次加載頁面時,我都覺得性能下降很大。查看Chrome的網絡標籤,我可以看到「小心:請求尚未完成!」在流媒體請求。 – ldavid

+1

@lucasdavid值得問一個新問題。這個問題(和答案)是從'13 – Xan