Schița de curs
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
Cerințe
Mărturii (5)
Mi-a plăcut modul în care Gunnar a scris aproape tot codul în timp ce îl parcurgeam, dar că a existat o mulțime de materiale pre-pregătite pe unitatea Google la care mă pot referi după instruire. Codul scris de Gunnar pe baza datelor de probă pe care le-am furnizat în prealabil a fost, de asemenea, extrem de util și a făcut ca instruirea să fie relevantă pentru propriile noastre seturi de date.
Ranvir - Schroders Personal Wealth
Curs - Visual Studio Code
Tradus de catre o masina
Subiectele discutate, multe exemple de cod live, atitudinea formatorului față de grupul de participanți
Weronika - ATOS PGS sp. z o.o.
Curs - Reactive Programming with Angular RxJS
Tradus de catre o masina
Deși a fost o formare online, interacțiunea cu antrenorul a fost remarabilă și acesta era întotdeauna disponibil pentru a oferi surse valabile care au completat formarea. Sunt foarte satisfăcut.
Nuno Marques - MULTICERT, S.A.
Curs - Functional Reactive Programming with Java 9 and RxJava
Tradus de catre o masina
Entuziasmul formatorului față de subiectul abordat
Matthew Fowles - AGRO Merchants Whitchurch Limited
Curs - Web Application Development in PHP
Tradus de catre o masina
Ritmul, adâncimea și explicațiile erau toate excelente. Este clar că Scott este un expert în domeniu și a fost super plăcut să învețăm de la el.
Ben Leiken - SurveyMonkey
Curs - Reactive Programming for iOS with RxSwift
Tradus de catre o masina