2016-03-29 20 views
0

我想知道是否有人已經有過類似的問題,玩:音頻停止,而移動回退到安裝使用的Icecast

我在Icecast2定義後備坐騎,這樣一個重大的流上播放在任何時候。如果另一個回退裝載變爲活動狀態,則後者變爲活動狀態。 我測試了流(mp3格式),使用ffplay和過渡發生沒有問題。當我使用html5音頻標籤來收聽音頻時,存在這個問題:轉換不會自動發生,我必須重新加載瀏覽器並點擊播放才能收聽音頻流。也就是說,使用瀏覽器,當啓用後備流時,聲音會停止,我必須重新加載瀏覽器並單擊播放才能聽取[其他流]。所有主流瀏覽器都出現同樣的問題。

下面是從我icecast.xml的摘錄:

<mount> 
    <public>0</public> 
    <mount-name>/stream</mount-name> 
    <hidden>0</hidden> 
</mount> 

<mount> 
    <public>0</public> 
    <mount-name>/stream1</mount-name> 
    <fallback-mount>/stream</fallback-mount> 
    <fallback-override>1</fallback-override> 
    <username>stream1</username> 
    <password>pass</password> 
    <hidden>0</hidden> 
</mount> 

這是ffplay同時連接,並從第二氣源斷開顯示:

enter image description here

播放音頻的HTML5代碼如下:

<audio controls> 
    <source src="http://127.0.0.1:3333/stream1" type="audio/mpeg"> 
</audio> 
+0

那麼,你是流媒體MP3和玩回來在

+0

是的,我正在使用ezstream流式傳輸到基本安裝點mp3,並使用mixxx傳輸到第二個安裝點。爲了簡單起見,我將相同的文件(相同的比特率等)進行流式傳輸。我的情況如下:我用ezstream不斷地流到主要安裝點,並使用Mixx連接到第二個安裝點。我有d –

+0

你已經用JavaScript和HTML5標記了這個問題,但是在你的問題中沒有看到這些語言的任何代碼。你可以添加任何相關的JavaScript/HTML標記嗎? – TylerH

回答

2

我得到了這個最後工作如下:

首先我注意到,當我通過啓用源從一個安裝點切換到另一個時,音頻停止播放。我設置了一個計時器,每隔1秒觸發一次,以檢查audio.currentTime並與之前的值進行比較。然後當結果爲真時,我將音頻源重置爲相同的流。這有點破解,但似乎解決了這個問題。

的html代碼:

<audio id="audio" controls> 
     <source src="http://127.0.0.1:3333/stream1" type="audio/mp3"> 
    </audio> 

javascript代碼:

var audio = document.getElementById('audio'); 
var myVar = setInterval(myTimer, 1000); 
var oldTime = ""; 

function myTimer() { 
    if ((audio.paused != true && (audio.currentTime - oldTime) == 0)) { 
    audio.src=""; 
    audio.src="http://127.0.0.1:3333/stream1"; 
    audio.play(); 
    } 
    oldTime = audio.currentTime; 
}; 
+0

這裏同樣存在問題,但僅限於Firefox和Windows,Linux。看來Chrome已經在此期間修復了它。你的黑客非常優雅。我們將不得不應用它,直到瀏覽器趕上。感謝您發佈這個答案。 –