2013-09-02 11 views
8

Próbuje zadzwonić drawImage z video którego źródłem jest pasza kamera wydaje się nie w Firefoksie z NS_ERROR_NOT_AVAILABLE: Component is not available.Firefox: drawImage (wideo) nie powiedzie się z NS_ERROR_NOT_AVAILABLE: Komponent nie jest dostępny

Próbowałem czekać na każdą imprezę pożary tagu wideo: play, playing, canplay, loadeddata, loadedmetadata, i tak dalej, i nic nie działa. Wygląda na to, że zdarzenia te są uruchamiane, zanim strumień zostanie poprawnie załadowany do elementu <video>.

JSFiddle with error (Można zobaczyć błąd w konsoli)

Efektem ubocznym jest to, że szerokość i wysokość obrazu jest nieprawidłowe.

Odpowiedz

30

To jest bug w przeglądarce Firefox. Najłatwiej jest po prostu próbować, aż błąd zniknie, ponieważ żadne zdarzenie nie zostanie uruchomione we właściwym czasie.

Patrz: http://jsfiddle.net/9aT63/25/

Zasadniczo trzeba owinąć połączenie w bloku try/catch drawImage.

function drawVideo() { 
    try { 
    $vidCanvasCtx.drawImage($vid, 0, 0, $vidCanvas.width, $vidCanvas.height); 
    ... 
    } catch (e) { 
    if (e.name == "NS_ERROR_NOT_AVAILABLE") { 
     // Wait a bit before trying again; you may wish to change the 
     // length of this delay. 
     setTimeout(drawVideo, 100); 
    } else { 
     throw e; 
    } 
    } 
} 
+0

+1 i należy zaznaczyć jesteś właścicielem odpowiedź jako akceptowane :-) – K3N

+0

dzięki, niestety muszę czekać na kilka godzin przed mogę –

+0

pracowała doskonale dla mnie, dzięki. Mam nadzieję, że wkrótce naprawią błąd! –

Powiązane problemy