Course Outline
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
Requirements
회원 평가 (5)
저는 Gunnar가 교육 과정을 진행하는 동안 거의 모든 코드를 즉석에서 작성했던 점이 마음에 들었고, 교육이 끝난 후에도 참고할 수 있는 Google 드라이브에 미리 준비된 자료가 많이 있었다는 점도 좋았습니다. 제가 사전에 제공한 샘플 데이터를 기반으로 Gunnar가 작성한 코드도 매우 유용했고, 훈련을 우리의 데이터 세트와 관련성 있게 진행할 수 있었습니다.
Ranvir - Schroders Personal Wealth
Course - Visual Studio Code
Machine Translated
Topics that were discussed, lots of live code examples, trainers attitude towards group
Weronika - ATOS PGS sp. z o.o.
Course - Reactive Programming with Angular RxJS
Though an online training, the interactivity with the trainer was remarkable and was always available to provide valuable sources to complement the training. I am very satisfied.
Nuno Marques - MULTICERT, S.A.
Course - Functional Reactive Programming with Java 9 and RxJava
Trainer's enthusiasm around the subject
Matthew Fowles - AGRO Merchants Whitchurch Limited
Course - Web Application Development in PHP
Pacing, depth, and explanations were all superb. It's clear Scott is an expert on the subject and learning from him was super enjoyable.