Sie sollten videoWidth
und videoHeight
Attribute verwenden können, wie folgt aus:
// 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: Eigentlich ist dies in Opera funktioniert, aber scheint nicht mehr und hasn in Chrome unterstützt werden wurde nicht in Firefox implementiert (zumindest nicht für Videostreams). Es ist jedoch in der HTML5 spec, so hoffentlich ist auf der Roadmap für diese Browser.
UPDATE 2: Dies funktioniert, aber das Ereignis zu hören ist "spielen" und nicht "spielen" (im obigen Code behoben). Das Ereignis "play" wird ausgelöst, wenn die Methode play()
zurückgegeben wird, während das Ereignis "playing" ausgelöst wird, wenn die Wiedergabe tatsächlich gestartet wurde. Getestet in Opera, Chrome und Firefox.
UPDATE 3: Firefox 18 scheint das "spielende" Ereignis wiederholt auszulösen, was bedeutet, dass der Browser zum Stillstand kommen kann, wenn Sie viel Code innerhalb des Hörers ausführen. Besser den Hörer zu entfernen, nachdem er gefeuert, etwa so:
var videoWidth, videoHeight;
var getVideoSize = function() {
videoWidth = video.videoWidth;
videoHeight = video.videoHeight;
video.removeEventListener('playing', getVideoSize, false);
};
video.addEventListener('playing', getVideoSize, false);
Ja, ich sah das, aber es ist nicht in Chrome oder Firefox ... Irgendwelche anderen Ideen? Vielen Dank! –
Angst nicht. Jetzt funktioniert es in Chrome nicht mehr. Ich suche selbst nach einem Workaround. Entschuldigung, ich konnte nicht helfen. – tagawa
Verstanden! Nach ein wenig Experimentieren stellt sich heraus, dass die videoWidth -Eigenschaft nur existiert, nachdem das "spielende" Ereignis (nicht "play") ausgelöst wurde. Die obige Antwort wurde aktualisiert, um dies zu zeigen. – tagawa