A low-latency video calling application
Try it out live (use two devices): https://virtualmeetrtc.herokuapp.com/
-
Navigate into the backend folder:
- cd backend
-
Run the command:
- yarn install && yarn client-install
-
Start the frontend (client) and backend (server) concurrently:
- yarn dev
- Typescript
- Express
- Signaling Server - Firebase
A mesh network topology should work well up to 4 clients according to multiple sources.
- Mobile/tablet detection https://stackoverflow.com/questions/11381673/detecting-a-mobile-browser ✅
- Joystick for mobile: https://www.npmjs.com/package/react-joystick-component ✅
- Add more features from Steam game: https://github.com/Christofferos/4PlayerLocalGame
- Add timer to environment events
- Challenge someone that is online to play with
- Add images with base64: https://onlinepngtools.com/convert-png-to-base64 ✅
- Make game playable for 4 clients✅
- Scale down video if device width is smaller than output video ✅
- Allow for more than 2 people to join the call (WebRTC Media Server - group calls)
- Talk | Virtual Meet | Play ✅
- Improve design and interface ✅
- Publish on Heroku ✅
- Idea: What is the object? Recognition (https://www.youtube.com/watch?v=01sAkU_NvOY) (https://data-flair.training/blogs/data-science-project-ideas/)
Bit rate results from N clients in mesh network (marked in blue)
Caller:
- Start a webcam feed
- Create an ‘RTCPeerConnection` connection
- Call createOffer() and write the offer to the database
- Listen to the database for an answer
- Share ICE candidates with other peer
- Show remote video feed
Callee:
- Start a webcam feed
- Create an ‘RTCPeerConnection` connection
- Fetch database document with the offer.
- Call createAnswer(), then write answer to database.
- Share ICE candidates with other peer
- Show remote video feed
Firebase: will work as a 3rd party server is required for signaling that stores shared data for stream negotiation