Programa del Curso
Día 1 – Manejo de Dispositivos Multimedia
1. Permisos del Navegador con navigator.permissions
- Accessndo hardware:
- Cámara web
- Micrófono
- Permisos opcionales:
- Geolocalización
- Notificaciones
- Portapapeles (lectura/escritura)
- Consulta y estado de permisos
- Límites y compatibilidad del navegador
- Caso práctico
2. Lectura de Dispositivos Multimedia con navigator.mediaDevices
- Enumeración de dispositivos
- Gestión de cambios en los dispositivos
- Caso práctico
3. Compatibilidad entre Navegadores
- Uso de API:
- navigator.permissions.query()
- navigator.mediaDevices.enumerateDevices()
- getUserMedia()
- Estrategia de respaldo para Safari
- Caso práctico
4. Manejo de Dispositivos Multimedia
- Inicialización del dispositivo: getUserMedia(constraints)
- Restricciones de dispositivos multimedia
- Inicio y detención de flujos multimedia
- Gestión de cambios en los dispositivos
- Caso práctico
5. Grabación con MediaRecorder
- Inicio/parada del streaming y grabación
- Descarga del archivo .webm
- Vista previa en tiempo real de la forma de onda
- Caso práctico
Añadidos Opcionales:
- Guardar en formato .wav usando ScriptProcessorNode
- Visualización del espectro FFT de audio
- Barras de volumen en decibelios
- Reconocimiento de voz con webkitSpeechRecognition
Día 2 – Conexión Peer-to-Peer
1. Servidores de Señalización
- Opciones de canales bidireccionales:
- WebSocket
- Socket.io
- SignalR
- Estructura del mensaje
- Cliente simplificado WebRTC
- Flujo completo de señalización
- Caso práctico
2. Video Chat a través de WebRTC
- Arquitectura: Node.js + ws
- Cliente WebRTC: RTCPeerConnection
- Pruebas E2E locales
- Caso práctico
Características Opcionales:
- Hang-up de llamada (cerrar conexión, detener multimedia)
- Llamadas grupales (salas multiusuario)
- Autenticación simple basada en tokens
3. Compartir Pantalla
- Uso de getDisplayMedia()
- Arquitectura y opciones
- Caso práctico
4. Protocolo de Descripción de Sesión (SDP)
- Introducción y contenido
- Lectura e interpretación del SDP
- Codificadores:
- Audio & Video
- Negociación y control
- Estrategias de respaldo
- Caso práctico
5. WebRTC Statistics con getStats()
- Tipo de estadísticas
- Cómo interpretar las estadísticas
- Gráficos en tiempo real de tasa de bits/jitter
- Estrategias de adaptación de calidad
- Caso práctico
Requerimientos
Testimonios (5)
Me gustó cómo Gunnar escribió casi todo el código sobre la marcha a medida que avanzábamos, pero que había un montón de material preparado previamente en el Google Drive al que puedo referirme después de la capacitación. El código que Gunnar escribió en base a los datos de muestra que proporcioné de antemano también fue extremadamente útil y también hizo que el entrenamiento fuera relevante para nuestros propios conjuntos de datos.
Ranvir - Schroders Personal Wealth
Curso - Visual Studio Code
Traducción Automática
Tópicos discutidos, muchos ejemplos de código en vivo, actitud del entrenador hacia el grupo
Weronika - ATOS PGS sp. z o.o.
Curso - Reactive Programming with Angular RxJS
Traducción Automática
Aunque se trataba de una formación en línea, la interactividad con el formador fue notable y siempre estuvo disponible para proporcionar fuentes valiosas que complementaran la formación. Estoy muy satisfecho.
Nuno Marques - MULTICERT, S.A.
Curso - Functional Reactive Programming with Java 9 and RxJava
Traducción Automática
Entusiasmo del formador sobre el tema
Matthew Fowles - AGRO Merchants Whitchurch Limited
Curso - Web Application Development in PHP
Traducción Automática
El ritmo, la profundidad y las explicaciones fueron excelentes. Está claro que Scott es un experto en el tema y aprender de él fue una experiencia muy agradable.
Ben Leiken - SurveyMonkey
Curso - Reactive Programming for iOS with RxSwift
Traducción Automática