Als u met getUserMedia()
of WebRTC werkt, moet u mogelijk uw code aanpassen voor Chrome 45 en later.
De MediaStream API vertegenwoordigt gesynchroniseerde mediastreams. Een stream afkomstig van camera- en microfooningangen heeft bijvoorbeeld gesynchroniseerde video- en audiotracks. Elke track wordt weergegeven door een MediaStreamTrack . (Niet te verwarren met het <track>-element !)
Er zijn drie MediaStream
verouderde versies in Chrome 45:
-
MediaStream.ended
-
MediaStream.label
-
MediaStream.stop()
Parallel daaraan vinden twee toevoegingen plaats:
-
MediaStream.active
-
MediaStreamTrack.stop()
Hiervoor zijn de volgende wijzigingen nodig:
- Gebruik
MediaStream.active
om te controleren of eenMediaStream
streamt, nietMediaStream.ended
. - Gebruik
MediaStreamTrack.stop()
om het streamen te stoppen, nietMediaStream.stop()
. - Als u een unieke identificatie voor een
MediaStream
nodig hebt, gebruikt uMediaStream.id
in plaats vanMediaStream.label
.MediaStreamTrack.label
biedt een voor mensen leesbare naam voor het bronapparaat voor een stream, bijvoorbeeld FaceTime HD Camera (ingebouwd) (05ac:8510) .
U kunt deze in actie zien: open simpl.info/gum in Chrome (op een apparaat met een camera) en bekijk de Chrome DevTools-console. De MediaStream- stream
die in deze demo aan de getUserMedia()
-callback is doorgegeven, bevindt zich in globale scope, dus u kunt deze vanuit de console bekijken. Roep stream.getTracks()[0]
aan om de MediaStreamTrack
voor deze stream te bekijken.

Stop(), beëindigd en actief
Toen de Media Capture and Streams W3C Working Group zich boog over het probleem van wat er gebeurt wanneer je nieuwe tracks toevoegt aan een MediaStream
, en of een lege MediaStream
wordt beëindigd, realiseerden ze zich dat er geen verstandige manier was om ended
te implementeren op een MediaStream
(zoals in 'zal nooit meer beginnen'). In andere delen van HTML5 betekent 'ended' 'dit is beëindigd en zal nooit meer worden hervat'. 'Actief' heeft geen dergelijke implicatie: een inactieve stream kan weer actief worden, bijvoorbeeld als er een nieuwe track aan wordt toegevoegd. In plaats van een verwarrend kenmerk en functie te behouden, besloot de Working Group het te verwijderen.
Hier is een voorbeeld van hoe u 'MediaStream.active' kunt gebruiken om de status van een stream te controleren:
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
}
Het verwijderen van stop()
uit MediaStream
heeft geen echte functionaliteit verwijderd: processen voor het loskoppelen van bronapparaten en dergelijke moeten sowieso op MediaStreamTrack
worden uitgevoerd. Gebruik in plaats daarvan stop()
op 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
Het bleek dat niemand een bestemming voor dit pand kon bedenken!
MediaStream.label
was toegevoegd aan de eerste versie van de specificatie, maar niemand wist precies waar het label
voor diende. Het was ook onduidelijk wat er met label
gebeurde wanneer een stream via RTCPeerConnection
werd verzonden.
De W3C Werkgroep heeft navraag gedaan en niemand wilde het hebben. Daarom hebben ze het verwijderd.
Nogmaals: MediaStream.id
biedt een unieke identificatie voor een MediaStream
en MediaStreamTrack.label
biedt de naam van de bron van een stream, zoals het type camera of microfoon.
Meer informatie over MediaStream
en MediaStreamTrack
is beschikbaar via Mozilla Developer Network . HTML5 Rocks biedt een uitstekende introductie tot getUserMedia()
bij het vastleggen van audio en video .
Zoals altijd stellen we uw feedback over wijzigingen in Chrome op prijs. U kunt de bugs voor deze verouderingen volgen ( hier en hier ) en meer informatie en details vinden in de Intent to Implement .