Wenn Sie mit getUserMedia()
oder WebRTC arbeiten, müssen Sie möglicherweise Ihren Code anpassen
für Chrome 45 und höher.
Die MediaStream API steht für synchronisierten Medienstreams. Ein Stream von Kamera und Der Mikrofoneingang hat synchronisierte Video- und Audiotracks. Jeder Titel ist dargestellt durch ein MediaStreamTrack hochgeladen werden. (Nicht zu verwechseln mit dem <track>-Element!)
Es gibt drei Einstellungen von MediaStream
in Chrome 45:
MediaStream.ended
MediaStream.label
MediaStream.stop()
Parallel dazu gibt es zwei Ergänzungen:
MediaStream.active
MediaStreamTrack.stop()
Diese Änderungen erfordern die folgenden Änderungen:
- Verwenden Sie
MediaStream.active
, um zu prüfen, ob eineMediaStream
streamt, nichtMediaStream.ended
. - Verwende
MediaStreamTrack.stop()
, um das Streaming zu beenden, nichtMediaStream.stop()
. - Wenn du eine eindeutige Kennung für
MediaStream
benötigst, verwendeMediaStream.id
anstelle vonMediaStream.label
.MediaStreamTrack.label
stellt einen menschenlesbaren Namen für das Quellgerät eines Streams bereit, z.B. FaceTime HD-Kamera (integriert) (05ac:8510).
Sie können sie in Aktion sehen: Öffnen Sie simpl.info/gum in
Chrome (auf einem Gerät mit Kamera) und die Chrome DevTools-Konsole aufrufen Die
MediaStream-Objekt stream
, das in diesem an den getUserMedia()
-Callback übergeben wurde
demo ist global, Sie können sie also in der Konsole überprüfen. Anruf
stream.getTracks()[0]
, um die MediaStreamTrack
für diesen Stream zu sehen.
Stop(), beendet und aktiv
Als sich die W3C-Arbeitsgruppe Medienaufnahmen und Streams darüber beschäftigt hat, was passiert, wenn du einem MediaStream
neue Titel hinzufügst,
und ob eine leere MediaStream
beendet wurde, wurde festgestellt,
keine sinnvolle Möglichkeit, ended
auf einer MediaStream
zu implementieren (z. B. "startet nie wieder"). In anderen Teilen von HTML5 "beendet" bedeutet: „Dies ist beendet und
nie fortsetzen“. „Aktiv“ keine Auswirkung: Ein inaktiver Stream kann
wieder aktiv werden, z. B. wenn ein neuer Track hinzugefügt wird. Anstatt ein verwirrendes Attribut und eine verwirrende Funktion beizubehalten, beschloss die Arbeitsgruppe,
entfernen.
Hier ist ein Beispiel für die Verwendung von „MediaStream.active“ um den Status eines Stream:
var gumStream;
navigator.getUserMedia({audio: false, video: true},
function(stream) {
gumStream = stream;
// ...
},
function(error) {
console.log('getUserMedia() error', error);
});
// …
if (gumStream.active) {
// do something with the stream
}
Durch das Entfernen von stop()
aus MediaStream
wurden keine echten Funktionen entfernt:
müssen die Prozesse zum Trennen
von Quellgeräten usw. durchgeführt werden.
Trotzdem MediaStreamTrack
. Verwende stattdessen stop()
für MediaStreamTrack
:
navigator.getUserMedia({audio: false, video: true},
function(stream) {
// can also use getAudioTracks() or getVideoTracks()
var track = stream.getTracks()[0]; // if only one media track
// ...
track.stop();
},
function(error){
console.log('getUserMedia() error', error);
});
Label
Es hat sich herausgestellt, dass niemand eine Verwendung für diese Eigenschaft finden konnte.
MediaStream.label
wurde der ersten Version der Spezifikation hinzugefügt, aber niemand wusste wirklich
wofür label
gedacht ist. Es war auch unklar, was mit label
passiert ist, als ein Stream
wurde per RTCPeerConnection
gesendet.
Die W3C-Arbeitsgruppe hat umgefragt, und niemand wollte es, also haben sie es entfernt.
Noch einmal: MediaStream.id
stellt eine eindeutige Kennung für ein
MediaStream
und MediaStreamTrack.label
geben den Namen der Quelle an.
eines Streams, z. B. den Kamera- oder Mikrofontyp.
Weitere Informationen zu MediaStream
und MediaStreamTrack
sind verfügbar
vom Mozilla Developer Network und
HTML5 Rocks bietet eine hervorragende Einführung in getUserMedia()
Audio- und Video:
Wir freuen uns wie immer über Ihr Feedback zu den Änderungen in Chrome. Informationen zu den Programmfehlern bei diesen Einstellungen finden Sie hier und hier. Weitere Informationen und Diskussionen finden Sie unter Intent to Implement.