Einstellung von MediaStream

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 eine MediaStream streamt, nicht MediaStream.ended.
  • Verwende MediaStreamTrack.stop(), um das Streaming zu beenden, nicht MediaStream.stop().
  • Wenn du eine eindeutige Kennung für MediaStream benötigst, verwende MediaStream.id anstelle von MediaStream.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.

Screenshot mit MediaStream und MediaStreamTrack in der Chrome-Entwicklertools-Konsole

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.