Powinieneś być w stanie wykorzystać videoWidth
i videoHeight
atrybuty, podobnie jak to:
// Check camera stream is playing by getting its width
video.addEventListener('playing', function() {
if (this.videoWidth === 0) {
console.error('videoWidth is 0. Camera not connected?');
}
}, false);
UPDATE: Właściwie, to działa w Operze, ale nie wydaje się być obsługiwane w Chrome dłużej i Hasn zostało zaimplementowane w Firefoksie (przynajmniej nie w przypadku strumieni wideo). Jest jednak w wersji HTML5 spec, więc mam nadzieję, że jest na mapie drogowej dla tych przeglądarek.
AKTUALIZACJA 2: To działa, ale zdarzeniem, które należy nasłuchiwać, jest "odtwarzanie", a nie "odtwarzanie" (poprawione w powyższym kodzie). Zdarzenie "play" jest uruchamiane po zwróceniu metody play()
, natomiast zdarzenie "playing" jest uruchamiane, gdy odtwarzanie faktycznie się rozpoczęło. Testowane w Operze, Chrome i Firefox.
AKTUALIZACJA 3: Firefox 18 wydaje się wielokrotnie uruchamiać zdarzenie "gra", co oznacza, że przeglądarka może zatrzymać się, jeśli wykonujesz dużo kodu w słuchaczu. Lepiej usunąć słuchacza po to zwolniony, tak:
var videoWidth, videoHeight;
var getVideoSize = function() {
videoWidth = video.videoWidth;
videoHeight = video.videoHeight;
video.removeEventListener('playing', getVideoSize, false);
};
video.addEventListener('playing', getVideoSize, false);
Tak, widziałem to, ale nie ma go w Chrome ani Firefox ... Jakieś inne pomysły? Dzięki! –
Nie boję się. Teraz przestał działać w Chrome Sam szukam obejścia. Przepraszam, nie mogłem pomóc. – tagawa
Gotowy! Po odrobinie eksperymentów okazuje się, że właściwość videoWidth istnieje dopiero po wystrzeleniu zdarzenia "play" (nie "play"). Zaktualizowano powyższą odpowiedź, aby to pokazać. – tagawa