Plan du cours
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
Pré requis
Nos clients témoignent (5)
J'ai apprécié le fait que Gunnar ait écrit pratiquement tout le code à la volée pendant que nous le parcourions, mais qu'il y ait beaucoup de matériel préparé à l'avance sur le lecteur Google auquel je peux me référer après la formation. Le code que Gunnar a écrit sur la base de l'échantillon de données que j'ai fourni à l'avance a également été extrêmement utile et a rendu la formation pertinente pour nos propres ensembles de données.
Ranvir - Schroders Personal Wealth
Formation - Visual Studio Code
Traduction automatique
Sujets abordés, de nombreux exemples de code en direct, attitude des formateurs vis-à-vis du groupe
Weronika - ATOS PGS sp. z o.o.
Formation - Reactive Programming with Angular RxJS
Traduction automatique
Bien que la formation se déroule en ligne, l'interaction avec le formateur était remarquable et il était toujours disponible pour fournir des sources précieuses complétant la formation. Je suis très satisfait.
Nuno Marques - MULTICERT, S.A.
Formation - Functional Reactive Programming with Java 9 and RxJava
Traduction automatique
Enthousiasme du formateur sur le sujet
Matthew Fowles - AGRO Merchants Whitchurch Limited
Formation - Web Application Development in PHP
Traduction automatique
Le rythme, la profondeur et les explications étaient tous excellents. Il est clair que Scott est un expert sur le sujet et apprendre de lui était super agréable.
Ben Leiken - SurveyMonkey
Formation - Reactive Programming for iOS with RxSwift
Traduction automatique