Đề cương khóa học
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
Testimonials (5)
Tôi thích cách Gunnar viết hầu hết mã nguồn ngay trên máy tính khi chúng tôi đang học, nhưng cũng có nhiều tài liệu đã được chuẩn bị sẵn trong Google Drive để tôi tham khảo sau khóa đào tạo. Mã nguồn mà Gunnar viết dựa trên dữ liệu mẫu tôi cung cấp trước đó cũng rất hữu ích và làm cho khóa đào tạo trở nên liên quan đến chính bộ dữ liệu của chúng tôi.
Ranvir - Schroders Personal Wealth
Course - Visual Studio Code
Machine Translated
Các chủ đề được thảo luận, nhiều ví dụ mã nguồn trực tiếp, thái độ của giảng viên đối với nhóm học viên
Weronika - ATOS PGS sp. z o.o.
Course - Reactive Programming with Angular RxJS
Machine Translated
Dù là một khóa đào tạo trực tuyến, sự tương tác với giảng viên rất ấn tượng và luôn sẵn sàng cung cấp các nguồn lực quý giá để bổ sung cho khóa học. Tôi rất hài lòng.
Nuno Marques - MULTICERT, S.A.
Course - Functional Reactive Programming with Java 9 and RxJava
Machine Translated
Sự nhiệt tình của giảng viên về chủ đề
Matthew Fowles - AGRO Merchants Whitchurch Limited
Course - Web Application Development in PHP
Machine Translated
Tốc độ giảng dạy, độ sâu và giải thích đều xuất sắc. Rõ ràng Scott là một chuyên gia về chủ đề này và việc học từ ông thật sự rất thú vị.
Ben Leiken - SurveyMonkey
Course - Reactive Programming for iOS with RxSwift
Machine Translated