Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maitrungduc1410/WebRTC-Demo
WebRTC demo on Web, Android and iOS
https://github.com/maitrungduc1410/WebRTC-Demo
Last synced: 3 months ago
JSON representation
WebRTC demo on Web, Android and iOS
- Host: GitHub
- URL: https://github.com/maitrungduc1410/WebRTC-Demo
- Owner: maitrungduc1410
- License: mit
- Created: 2020-04-09T09:01:37.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-06T03:02:50.000Z (about 2 years ago)
- Last Synced: 2023-03-05T06:23:46.735Z (almost 2 years ago)
- Language: Swift
- Homepage:
- Size: 93.7 MB
- Stars: 9
- Watchers: 3
- Forks: 5
- Open Issues: 31
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-webrtc - WebRTC-Demo - WebRTC demo on Web, Android and iOS. (Samples)
README
# WebRTC-Demo
A comprehensive WebRTC demo on Web, Android and iOS
# Features
- Up-to-date with latest WebRTC API. Currently using M125
- ✅ Audio control
- ✅ Video control
- ✅ Switch front/back camera
- ✅ Switch between microphone vs Speaker
- ✅ Send message using data channel
- ✅ Screen sharing. All except iOS
- End to end encryption. Only Web is supported. Native is in progress...([see below](#end-to-end-encryption))
- Stream video file. In progress...# Disclaimer
This is intended to show common use cases of WebRTC cross platforms and to give you some ideas, it may have bugs, use with caution!# Setup
## Start signaling server
First you need to start the signaling server, Open terminal at `signaling-server` and run:
```
npm install # or yarn install (to install dependencies)
npm run dev # or yarn dev
```
Once started the address of signling server will be printed in your terminal## Start clients
The usage of all clients are same, you just need to join clients in same room by input same roomID.### Web
To start web client, open terminal at `web` and run:
```
npm installnpm run dev
```
Then open 2 browsers at `localhost:5173` to test### Android
Change the value of `serverAddress` in `android/app/src/main/res/values/strings.xml` to server IP which is printed when you start the signaling server
### iOS
First run the following command in `ios` folder:
```
pod install
```Then change `SERVER_URL` in `CallViewController` to signaling server address
# Troubleshooting
## iOS - Compiling for iOS 11.0, but module...
Change Minimum Deployments of the pod that has issue to latest
## iOS - Sandbox: rsync.samba(13105)...
Solution: Update your Xcode project build option ENABLE_USER_SCRIPT_SANDBOXING to 'No'.
# End-to-end encryption
> [!NOTE]
> Currently only supported for Web-Web communicationUnder `web/src/App.vue`, set `enableE2EE=true` to enable E2EE
By default, E2EE use Web Worker for encrypt/decrypt, if you want to do that on Main thread then set `useEncryptionWorker=false`
If you want to verify if E2EE is working, turn on `shouldSendEncryptionKey=true`, then the remote peer won't receive encryptionKey and it will show raw video which is encrypted and not visible