2011-02-10 14 views
9

Mam plik ogg vorbis skonfigurowany z tagiem HTML5 <audio>.
Plik jest żądany dwukrotnie przez Firefoksa (3.6.13), ale z opcją "autoodtwarzania" oba żądane pliki są odtwarzane.
Kiedy zatrzymuję się, jedna z ścieżek zatrzymuje się, ale inne trwają. Po ponownym naciśnięciu przycisku odtwarzania oba utwory są odtwarzane, ale teraz nie są zsynchronizowane.Firefox ładuje i odtwarza ten sam plik .ogv dwa razy równolegle, gdy z "autoodtwarzaniem"

Wszystko działa wspaniale z webkitem i operą.
W Firefoksie bez "autoodtwarzania" plik OGG jest żądany dwa razy, ale tylko jeden gra i wszystko wygląda normalnie. Ale w tym scenariuszu potrzebuję funkcji "autoodtwarzania".

Moje html:
<audio autoplay controls">
<source src="/media/BetterDays.ogv" type="audio/ogg; codec=vorbis"></source>
<source src="/media/BetterDays.mp3" type="audio/mpeg"></source>
</audio>

Moje jQuery:

if(!!document.createElement('audio').canPlayType) { 
    audio = $('audio').get(0); 
    $(audio).removeAttr("controls"); 
    $(audio).bind('play',function() { 
     $("#playtoggle").addClass('playing'); 
    }).bind('pause ended', function() { 
     $("#playtoggle").removeClass('playing');  
    }); 

    $("#playtoggle").click(function() {  
     if (audio.paused) { audio.play(); } 
     else { audio.pause(); }  
    }); 

naprawdę wdzięczni za każdą pomoc można zaoferować. Dzięki.

+0

mam ten sam problem. Dzieje się tak tylko w Firefoksie i po wyłączeniu autoodtwarzania filmu problem zniknie. Czy udało Ci się to rozwiązać od czasu opublikowania tego? – Bringo

+0

Właśnie wyłączyłem autoodtwarzanie i uruchomiłem je przy ładowaniu dokumentów za pomocą jquery: set audio.play() na $ (document) .ready – tomek

+0

Jedno pytanie, które może być głupie ... Dlaczego deklarujesz elementy sterujące dla elementu audio i usuwasz później? –

Odpowiedz

2

zrobić to w ten sposób, HTML 5 tagi są nadal buggy nieco, ale dobre ol”javascript rade

<script> 
give your audio tag an id, in my example it will be audiobox 

function play() { 
    document.getElementById('audiobox').play(); 
    } 
    play(); 
</script> 
+0

Działa, dzięki, co za wspaniały timing :) – user462982

+0

nie ma problemu, przeszedł ten sam problem! – Dnaso