Programa do Curso
Dia 1 – Manipulação de Dispositivos Mídia
1. Permissões do Navegador com navigator.permissions
- Accessndo hardware:
- Câmera web
- Microfone
- Permissões opcionais:
- Geolocalização
- Notificações
- Área de transferência (leitura/escrita)
- Pesquisa e status das permissões
- Limitações e compatibilidade do navegador
- Caso prático
2. Leitura de Dispositivos Mídia com navigator.mediaDevices
- Enumeração de dispositivos
- Manipulação de alterações nos dispositivos
- Caso prático
3. Compatibilidade Cross-browser
- Uso da API:
- navigator.permissions.query()
- navigator.mediaDevices.enumerateDevices()
- getUserMedia()
- Estratégia de fallback para Safari
- Caso prático
4. Manipulação de Dispositivos Mídia
- Inicialização do dispositivo: getUserMedia(constraints)
- Restrições de dispositivos mídia
- Início e parada das transmissões de mídia
- Manipulação de alterações nos dispositivos
- Caso prático
5. Gravação de Dispositivos com MediaRecorder
- Início/parada da transmissão e gravação
- Baixar arquivo .webm
- Pré-visualização em tempo real do waveform
- Caso prático
Adicionais Opcionais:
- Salvar no formato .wav usando ScriptProcessorNode
- Visualização do espectro FFT de áudio
- Barras de volume em decibéis
- Reconhecimento de voz com webkitSpeechRecognition
Dia 2 – Conexão Peer-to-Peer
1. Servidores de Sinalização
- Opções de canais bidirecionais:
- WebSocket
- Socket.io
- SignalR
- Estrutura da mensagem
- Cliente simplificado WebRTC
- Fluxo completo de sinalização
- Caso prático
2. Chat de Vídeo via WebRTC
- Arquitetura: Node.js + ws
- Cliente WebRTC: RTCPeerConnection
- Testes E2E locais
- Caso prático
Recursos Opcionais:
- Desligar chamada (fechar conexão, parar mídia)
- Ligação em grupo (salas de múltiplos usuários)
- Autenticação simples baseada em tokens
3. Compartilhamento de Tela
- Uso do getDisplayMedia()
- Arquitetura e opções
- Caso prático
4. Protocolo de Descrição de Sessão (SDP)
- Introdução e conteúdo
- Lendo e interpretando SDP
- Codificadores:
- Áudio & Vídeo
- Negociação e controle
- Estratégias de fallback
- Caso prático
5. WebRTC Statistics com getStats()
- Tipo de estatísticas
- Como interpretar as estatísticas
- Gráficos ao vivo de taxa de bits/jitter
- Estratégias de adaptação da qualidade
- Caso prático
Requisitos
Declaração de Clientes (5)
Gostei do facto de o Gunnar ter escrito praticamente todo o código durante o curso, mas de haver muito material pré-preparado no Google Drive que posso consultar após a formação. O código que o Gunnar escreveu com base nos dados de amostra que forneci previamente também foi extremamente útil e tornou a formação relevante para os nossos próprios conjuntos de dados.
Ranvir - Schroders Personal Wealth
Curso - Visual Studio Code
Máquina Traduzida
Tópicos discutidos, muitos exemplos de código ao vivo, atitude dos treinadores em relação ao grupo
Weronika - ATOS PGS sp. z o.o.
Curso - Reactive Programming with Angular RxJS
Máquina Traduzida
Apesar de ser um treinamento online, a interatividade com o instrutor foi notável e ele sempre esteve disponível para fornecer fontes valiosas para complementar o treinamento. Estou muito satisfeito.
Nuno Marques - MULTICERT, S.A.
Curso - Functional Reactive Programming with Java 9 and RxJava
Máquina Traduzida
Entusiasmo do instrutor sobre o assunto
Matthew Fowles - AGRO Merchants Whitchurch Limited
Curso - Web Application Development in PHP
Máquina Traduzida
Ritmo, profundidade e explicações foram todos excelentes. Fica claro que Scott é um especialista no assunto e aprender com ele foi extremamente agradável.
Ben Leiken - SurveyMonkey
Curso - Reactive Programming for iOS with RxSwift
Máquina Traduzida