Se lavori con getUserMedia()
o WebRTC, potrebbe essere necessario modificare il codice
per Chrome 45 e versioni successive.
L'API MediaStream rappresenta stream di contenuti multimediali sincronizzati. Ad esempio, uno stream registrato da una videocamera l'input del microfono ha tracce video e audio sincronizzate. Ogni traccia è rappresentato da un MediaStreamTrack. (da non confondere con l'elemento <track>).
Ci sono tre ritiri di MediaStream
in Chrome 45:
MediaStream.ended
MediaStream.label
MediaStream.stop()
In parallelo sono presenti due aggiunte:
MediaStream.active
MediaStreamTrack.stop()
Queste impostazioni richiedono le seguenti modifiche:
- Usa
MediaStream.active
per controllare se unMediaStream
sta trasmettendo in streaming, nonMediaStream.ended
. - Per interrompere lo streaming, usa
MediaStreamTrack.stop()
, nonMediaStream.stop()
. - Se hai bisogno di un identificatore univoco per un
MediaStream
, usaMediaStream.id
anzichéMediaStream.label
.MediaStreamTrack.label
fornisce un nome leggibile per il dispositivo di origine per uno stream, ad esempio Fotocamera HD FaceTime (integrata) (05ac:8510).
Puoi vedere questi dati in azione: apri simpl.info/gum in
Chrome (su un dispositivo con una videocamera) e visualizza la console Chrome DevTools. La
Oggetto MediaStream stream
passato al callback getUserMedia()
in questo
in ambito globale, puoi controllarla dalla console. Chiama
stream.getTracks()[0]
per visualizzare MediaStreamTrack
per questo stream.
Stop(), terminato e attivo
Quando il gruppo di lavoro W3C Media Capture and Streams ha esaminato il problema di ciò che accade quando si aggiungono nuove tracce a un MediaStream
,
e se un MediaStream
vuoto viene terminato, si è reso conto che c'era
non c'è un modo sensato per implementare ended
su un MediaStream
(ad esempio "non ricomincerà mai"). In altre parti dell'HTML5 "terminato" significa che "questa operazione è terminata e
non riprendere mai". 'Attivo' non ha alcuna implicazione del genere: uno stream inattivo può
attivi di nuovo, ad esempio se viene aggiunta una nuova traccia. Anziché mantenere un attributo e una funzione confusi, il Gruppo di lavoro ha deciso di
rimuoverlo.
Ecco un esempio di come utilizzare "MediaStream.active" per controllare lo stato di un 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
}
La rimozione di stop()
da MediaStream
non ha rimosso alcuna funzionalità reale:
per lo scollegamento dei dispositivi di origine e così via devono essere eseguiti
MediaStreamTrack
comunque. Usa invece stop()
su 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);
});
etichetta
Si è scoperto che nessuno è riuscito a capire come usare questa proprietà.
MediaStream.label
era stato aggiunto alla prima versione della specifica, ma nessuno lo sapeva
a cosa serviva label
. Non era nemmeno chiaro cosa sia successo a label
quando uno stream
è stato inviato tramite RTCPeerConnection
.
Il Gruppo di lavoro della W3C ha effettuato una richiesta, ma nessuno lo voleva, quindi l'ha rimosso.
Da ribadire: MediaStream.id
fornisce un identificatore univoco per un
MediaStream
e MediaStreamTrack.label
forniscono il nome dell'origine
di uno stream, come il tipo di videocamera o microfono.
Sono disponibili ulteriori informazioni su MediaStream
e MediaStreamTrack
di Mozilla Developer Network e
HTML5 Rocks offre un'ottima introduzione a getUserMedia()
in
Acquisizione di audio e Video.
Come sempre, apprezziamo il tuo feedback sulle modifiche a Chrome. Puoi seguire i bug relativi a questi ritiri (qui e qui) e trovare ulteriori discussioni e dettagli nell'articolo Intent di implementazione.