Nesse passo você descobrirá como:
Uma versão completa desse passo está na pasta step-01.
Adicionar um elemento video
e um elemento script
na index.html em seu diretório work :
<!DOCTYPE html>
<html>
<head>
<title>Realtime communication with WebRTC</title>
<link rel="stylesheet" href="css/main.css" />
</head>
<body>
<h1>Realtime communication with WebRTC</h1>
<video autoplay playsinline></video>
<script src="js/main.js"></script>
</body>
</html>
Adicionar o seguinte código ao main.js em sua pasta js:
'use strict';
// On this codelab, you will be streaming only video (video: true).
const mediaStreamConstraints = {
video: true,
};
// Video element where stream will be placed.
const localVideo = document.querySelector('video');
// Local stream that will be reproduced on the video.
let localStream;
// Handles success by adding the MediaStream to the video element.
function gotLocalMediaStream(mediaStream) {
localStream = mediaStream;
localVideo.srcObject = mediaStream;
}
// Handles error by logging a message to the console with the error message.
function handleLocalMediaStreamError(error) {
console.log('navigator.getUserMedia error: ', error);
}
// Initializes media stream.
navigator.mediaDevices.getUserMedia(mediaStreamConstraints)
.then(gotLocalMediaStream).catch(handleLocalMediaStreamError);
Todos os exemplos JavaScript aqui usam
'use strict';
para evitar pegadinhas de codificação comuns. Saiba mais sobre o que isso significa em ECMAScript 5 Strict Mode, JSON, and More.
Abra a index.html em seu navegador e você deve ver algo assim ( apresentando a visão de sua webcam, é claro!):
Após a chamada de getUserMedia()
, o navegador solicita a permissão do usuário para acessar sua câmera ( Se está for a primeira vez que o acesso a câmera foi solicitado para origem atual). Se for bem sucedido, uma MediaStream é retornado, que pode ser usado por um elemento de média por meio do atributo srcObject
:
navigator.mediaDevices.getUserMedia(mediaStreamConstraints)
.then(gotLocalMediaStream).catch(handleLocalMediaStreamError);
}
function gotLocalMediaStream(mediaStream) {
localVideo.srcObject = mediaStream;
}
O argumento constraints
permite você especificar qual média obter. Nesse exemplo, somente vídeo, já que o áudio está desabilitado por padrão:
const mediaStreamConstraints = {
video: true,
};
Você pode usar o constraints para requisitos adicionais tais como resolução de vídeo:
const hdConstraints = {
video: {
width: {
min: 1280
},
height: {
min: 720
}
}
}
A lista de especificação do MediaTrackConstraints contém todos os tipos de restrição, Embora nem todas as opções sejam suportadas em todos os navegadores. Se a requisição de resolução não é suportada pela câmera atualmente selecionada, getUserMedia()
será rejeitado com um OverconstrainedError
e o usuário não será solicitado a dar permissão para acessar sua câmera.
Você pode ver uma demonstração mostrando como usar restrições para solicitar diferentes resoluções aqui, e uma demonstração de uso de restrições para escolher a câmera e o microfone aqui.
Se getUserMedia()
for concluído, a transmissão de vídeo da webcam será definida como a origem do elemento de vídeo:
function gotLocalMediaStream(mediaStream) {
localVideo.srcObject = mediaStream;
}
localStream
passado para getUserMedia()
está no escopo global, então você pode inspeciona-lo pelo console do navegador: abra o console, digite localStream e aperte enter.( Para ver o console no Chorme, aperte Ctrl-Shift-J ou Command-Option-J se você estiver usando um Mac).localStream.getVideoTracks()
retorna?localStream.getVideoTracks()[0].stop()
.{audio: true, video: true}
?video {
filter: blur(4px) invert(1) opacity(0.5);
}
video {
filter:hue-rotate(180deg) saturate(200%);
}
Nessa etapa você aprendeu como:
Uma versão completa dessa etapa está na pasta step-01.
autoplay
no elemento video
. Sem isso, você apenas verá um único quadro!getUserMedia()
. Dê uma olhada na demonstração em webrtc.github.io/samples/src/content/peerconnection/constraints. Como você verá, há muitos exemplos interessantes de WebRTC nesse site.
width
e max-width
para definir um tamanho preferido e um tamanho máximo para o vídeo. O navegador irá calcular a altura automaticamente:video {
max-width: 100%;
width: 320px;
}
Você recebe o vídeo, mas como você faz a transmissão? Descubra na próxima etapa!
Conteúdo traduzido do site : https://codelabs.developers.google.com/codelabs/webrtc-web/#3