Se você trabalha com getUserMedia() ou WebRTC, talvez seja necessário ajustar seu código
para o Chrome 45 e versões mais recentes.
A API MediaStream representa streams de mídia sincronizados. Por exemplo, um stream feito da entrada de câmera e microfone tem faixas de vídeo e áudio sincronizadas. Cada faixa é representada por uma MediaStreamTrack. Não confunda com o elemento<track>.
Há três descontinuações de MediaStream no Chrome 45:
MediaStream.endedMediaStream.labelMediaStream.stop()
Em paralelo, há duas adições:
MediaStream.activeMediaStreamTrack.stop()
Isso exige as seguintes mudanças:
- Use
MediaStream.activepara verificar se umMediaStreamestá sendo transmitido, e nãoMediaStream.ended. - Use
MediaStreamTrack.stop()para interromper o streaming, e nãoMediaStream.stop(). - Se você precisar de um identificador exclusivo para um
MediaStream, useMediaStream.idem vez deMediaStream.label.MediaStreamTrack.labelfornece um nome legível por humanos para o dispositivo de origem de um stream, por exemplo, FaceTime HD Camera (Built-in) (05ac:8510).
Para conferir isso em ação, abra simpl.info/gum no
Chrome (em um dispositivo com câmera) e acesse o console do Chrome DevTools. O
objeto stream da MediaStream transmitido para o callback getUserMedia() nesta
demonstração está no escopo global, para que você possa inspecionar no console. Chame
stream.getTracks()[0] para conferir o MediaStreamTrack dessa transmissão.
Stop(), encerrado e ativo
Quando o grupo de trabalho do W3C Media Capture and Streams analisou o problema do que acontece quando você adiciona novas faixas a um MediaStream
e se um MediaStream vazio é encerrado, eles perceberam que não havia
nenhuma maneira sensata de implementar ended em um MediaStream (como em "nunca mais vai começar"). Em outras partes do HTML5, "ended" significa "isso foi encerrado e nunca será
retomado". "Ativo" não tem essa implicação: um fluxo inativo pode
voltar a ser ativo, por exemplo, se uma nova faixa for adicionada a ele. Em vez de manter um atributo e uma função confusos, o grupo de trabalho decidiu
remover.
Confira um exemplo de como usar "MediaStream.active" para verificar o status de uma transmissão:
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
}
A remoção de stop() de MediaStream não removeu nenhuma funcionalidade real:
os processos para desconectar dispositivos de origem e assim por diante precisam ser feitos em
MediaStreamTrack de qualquer maneira. Use stop() em 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);
});
o rótulo.
Acontece que ninguém conseguiu descobrir um uso para essa propriedade.
MediaStream.label foi adicionado à primeira versão da especificação, mas ninguém sabia
para que label servia. Também não estava claro o que acontecia com label quando um stream
era enviado por RTCPeerConnection.
O Grupo de Trabalho do W3C perguntou, e ninguém queria, então ele foi removido.
Para reiterar: MediaStream.id fornece um identificador exclusivo para um
MediaStream, e MediaStreamTrack.label fornece o nome da origem
de um stream, como o tipo de câmera ou microfone.
Mais informações sobre MediaStream e MediaStreamTrack estão disponíveis
na Mozilla Developer Network, e
o HTML5 Rocks oferece uma excelente introdução a getUserMedia() em
Captura de áudio e vídeo.
Como sempre, agradecemos seu feedback sobre as mudanças no Chrome. Acompanhe os bugs dessas descontinuações (neste link e neste link) e encontre mais discussões e detalhes na página Intent to Implement.