2016-03-29 5 views
0

Je me demandais si quelqu'un a eu un problème similaire:arrête de lecture audio tout en se déplaçant à l'aide de fallback monter Icecast

J'ai défini les montures de secours dans Icecast2 de sorte qu'un flux important joue en tout temps. Si une autre monture de repli devient active, cette dernière devient l'active. J'ai testé les flux (format mp3), avec ffplay et la transition se passe sans problème. Le problème existe quand j'utilise une balise audio html5 pour écouter l'audio: la transition ne se fait pas automatiquement et je dois recharger le navigateur et cliquer sur play pour écouter le flux. C'est-à-dire, en utilisant le navigateur, lorsque le flux de secours est activé, le son s'arrête et je dois recharger le navigateur et cliquer sur play pour écouter [l'autre flux]. Les mêmes problèmes se produisent dans tous les principaux navigateurs.

Voici un extrait de mon 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> 

C'est ce que ffplay montre lors de la connexion et la déconnexion de la source secondaire:

enter image description here

Le code html5 qui joue l'audio est la suivante:

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

Vous diffusez MP3 et jouent en arrière dans une balise

+0

Oui, je suis en streaming sur le point de montage de base mp3 avec ezstream et sur le second point de montage avec mixxx. Pour simplifier les choses, je diffuse le même fichier (même débit, etc.). Mon scénario est le suivant: je cours constamment vers le point de montage principal avec ezstream et je me connecte au second montage avec Mixx. J'ai –

+0

Vous avez tagué cette question avec JavaScript et HTML5, mais je ne vois aucun code dans ces langues dans votre question. Pouvez-vous ajouter des balises JavaScript/HTML pertinentes? – TylerH

Répondre

2

Je l'ai finalement fait en procédant comme suit:

J'ai d'abord remarqué que lorsque je passais d'un point de montage à un autre en activant la source, l'audio s'arrêtait de jouer. J'ai mis en place une minuterie à feu toutes les 1 seconde afin de vérifier audio.currentTime et de comparer à une valeur précédente. Puis, lorsque le résultat est vrai, je réinitialise la source audio sur le même flux. C'est un peu un hack mais ça semble résoudre l'affaire.

code html:

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

code 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

Même problème ici, mais seulement dans Firefox, à la fois sous Windows et Linux. Il semble que Chrome l'ait réparé entre-temps. Votre hack est très élégant. Nous devrons l'appliquer jusqu'à ce que les navigateurs se rattrapent. Merci d'avoir posté cette réponse. –