2016-05-05 9 views
15

Używam Chrome. W moim konsoli dev narzędzi, próbowałem następujące:Dźwięk w formacie HTML nie może ustawić currentTime

enter image description here

Wszystko działa zgodnie z oczekiwaniami, z wyjątkiem ostatniego wiersza. Dlaczego nie mogę ustawić na nim currentTime?

Również ogólnie rzecz biorąc, znajduję całą tę właściwość HTML5 Audio, aby nie była ona zbyt niezawodna. Czy istnieje solidne opakowanie javascript, które przechodzi w stan flashowania?

+0

Audio imprezie 'loadedmetadata', który uruchamia się, gdy src został załadowany – echopeak

+0

@echopeak czy istnieje działający przykład, na który mogę spojrzeć? Bardziej interesuje mnie wydarzenie 'seek', ponieważ chcę odtwarzać dźwięk z innego punktu początkowego. – Rajat

+0

Czy możesz podać link do pobrania dźwięku? – Chicodelarosa

Odpowiedz

4

Trzeba zrobić coś takiego (jeśli używasz jQuery)

$('#elem_audio').bind('canplay', function() { 
    this.currentTime = 10; 
}); 

lub w JavaScript

var aud = document.getElementById("elem_audio"); 
aud.oncanplay = function() { 
    aud.currentTime = 10; 
}; 

Powodem dla tej konfiguracji jest konieczne, aby upewnić się dźwięk jest gotowy do gry.

+0

Możesz również użyć zdarzenia' seeked'. [Oto przykład] (https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Media_events) na końcu strony. –

+0

Próbowałem więc dodać 'x.addEventListener ('seeked', function() {x.play()})' tuż przed aktualizacją 'currentTime' do' 10', a wynik jest taki sam. Kiedy dźwięk się odtwarza, zaczyna się od 0. – Rajat

+0

'canplay' nie wydaje się działać. – Rajat

1

Zgaduję, że "10" jest dłuższe niż długość mp3.

Ale to rejestruje długość pliku mp3 zamiast "0".

Jaka jest twoja wersja Chrome?

+0

Nie. 'X.duration' zwraca' 31'. Wersja Chrome to 50 – Rajat

2

Dlaczego nie mogę ustawić na nim currentTime?

Nie można odtworzyć currentTime jest ustawiony na 0 po ustawieniu na 10. Czy czas trwania jest mniejszy niż 10?

var request = new XMLHttpRequest(); 
request.open("GET", "/assets/audio/18.mp3", true); 
request.responseType = "blob";  
request.onload = function() { 
    if (this.status == 200) { 
    var audio = new Audio(URL.createObjectURL(this.response)); 
    audio.load(); 
    audio.currentTime = 10; 
    audio.play(); 
    } 
} 
request.send(); 

jsfiddle http://jsfiddle.net/Lg5L4qso/3/

-1

miałem ten sam problem, a powodem był brak nagłówków w pliku mp3, jak:

Content-Length, Content-Range, Content-Type