Nền tảng
Năm app, mỗi app viết bằng công cụ của nền tảng mình. Giữa các ngôn ngữ, chúng không dùng chung dòng code nào, chỉ chung bản "hợp đồng", thư mục effects và icon app. Ngoại lệ là iOS và macOS: app Mac compile phần lớn code của iOS.
- UI
- Vue 3, Tailwind CSS, shadcn-vue
- WebRTC
- RTCPeerConnection có sẵn của trình duyệt
- Socket signaling
- WebSocket
- Camera
- getUserMedia()
- Chia sẻ màn hình
- getDisplayMedia()
- Đổi nguồn video
- RTCRtpSender.replaceTrack()
- E2EE
- Insertable Streams hoặc RTCRtpScriptTransform, chạy trong worker
- Background và sticker
- MediaPipe ImageSegmenter + FaceLandmarker, canvas 2D
- Picture-in-picture
- Document Picture-in-Picture API, video PiP fallback
Nên đọc app nào trước
Bắt đầu với web client, kể cả khi bạn nhắm tới nền tảng khác. API WebRTC của trình duyệt là chuẩn mà các SDK native làm theo, code ngắn, và useCall.ts chứa trọn cuộc gọi 1:1 trong một file. Sau đó đọc app gần với nền tảng của bạn nhất:
| Bạn đang làm cho | Đọc |
|---|---|
| Flutter, React Native, hoặc bất cứ thứ gì chạy trên webrtc-sdk | Android và iOS: cùng họ SDK |
| App desktop dùng thẳng libwebrtc | Windows: C shim cho thấy toàn bộ phần API native mà một cuộc gọi cần |
| Một app khác chạy trên trình duyệt | Web |
| Các nền tảng của Apple | iOS và macOS |
Mỗi app lưu thiết lập ở đâu
| App | Nơi lưu | Lưu những gì |
|---|---|---|
| Web | localStorage | Địa chỉ server, effect đã chọn |
| Android | SharedPreferences | Địa chỉ server, effect đã chọn |
| iOS, macOS | UserDefaults | Địa chỉ server, effect đã chọn, thiết bị (trên Mac) |
| Windows | %LOCALAPPDATA%\WebRtcDemo\settings.json | Địa chỉ server, công tắc E2EE, thiết bị, effect đã chọn |
Library
| App | WebRTC |
|---|---|
| Web | Của trình duyệt |
| Android | io.github.webrtc-sdk:android 150.7871.01 |
| iOS, macOS | webrtc-sdk/Specs 150.7871.01, qua local Swift package ios/Packages/WebRTC |
| Windows | webrtc-sdk/libwebrtc m150.7871.03, qua một C shim |
Cả bốn bản build native đều lấy từ cùng nhánh m150 của bản fork webrtc-sdk, nhờ vậy FrameCryptor của chúng giống hệt nhau. Phiên bản đầy đủ có trong Phiên bản và giới hạn.
