Programa del Curso
Day 1 – Media Devices Handling
1. Browser Permissions with navigator.permissions
- Accessing hardware:
- Webcam
- Microphone
- Optional permissions:
- Geolocation
- Notifications
- Clipboard (read/write)
- Permission querying and status
- Limitations and browser compatibility
- Hands-on use-case
2. Reading Media Devices with navigator.mediaDevices
- Device enumeration
- Handling device changes
- Hands-on use-case
3. Cross-browser Compatibility
- API usage:
- navigator.permissions.query()
- navigator.mediaDevices.enumerateDevices()
- getUserMedia()
- Safari fallback strategy
- Hands-on use-case
4. Media Device Handling
- Device initialization: getUserMedia(constraints)
- Media device constraints
- Starting and stopping media streams
- Handling device changes
- Hands-on use-case
5. Recording Devices with MediaRecorder
- Start/stop streaming and recording
- Download .webm file
- Real-time waveform preview
- Hands-on use-case
Optional Add-ons:
- Save in .wav format using ScriptProcessorNode
- Audio FFT spectrum visualization
- Volume bar in decibels
- Voice recognition with webkitSpeechRecognition
Day 2 – Peer Connection
1. Signaling Servers
- Bidirectional channel options:
- WebSocket
- Socket.io
- SignalR
- Message structure
- Simplified WebRTC client
- Full signaling flow
- Hands-on use-case
2. Video Chat via WebRTC
- Architecture: Node.js + ws
- WebRTC client: RTCPeerConnection
- Local E2E testing
- Hands-on use-case
Optional Features:
- Call hang-up (close connection, stop media)
- Group calling (multi-user rooms)
- Token-based simple authentication
3. Screen Sharing
- Use of getDisplayMedia()
- Architecture and options
- Hands-on use-case
4. Session Description Protocol (SDP)
- Introduction and contents
- Reading and interpreting SDP
- Codecs:
- Audio & Video
- Negotiation and control
- Fallback strategies
- Hands-on use-case
5. WebRTC Statistics with getStats()
- Types of statistics
- How to interpret stats
- Live bitrate/jitter charts
- Quality adaptation strategies
- Hands-on use-case
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