/react-native-webrtc-janus-gateway

Video conference system for mobile application. Base technology is react-native-webrtc + Janus Webrtc Gateway

Primary LanguageJavaScript

Demo

demo

How it wokrs?

work

Application

Dependent Libaries

  • "react-native": "^0.50.3",
  • "react-native-webrtc": "^1.58.3"
  • "react-native-incall-manager": "^2.2.0"
  • "react-native-vector-icons": "^4.4.2"
  • "react-native-elements": "^0.18.2"
  • "react-native-tab-navigator": "^0.3.4"
  • "react-native-gifted-chat": "^0.3.0"

Functionality

  • Janus WebRTC Gateway Video Room Implementation
  • Mobile users can send teh audio and video msg to other paritciapnts up to 6 max (can configure in janus)
  • Friendly text chat

TODO

  • iOS works
  • Android works
  • Janus Plugin Demo: Video Room works ( https://janus.conf.meetecho.com/videoroomtest.html )
  • Local camera view
  • Remote view
  • Audio mute
  • Video mute
  • Audio Speaker
  • Unpublish and publish
  • Switch front and back camera with react-native-webrtc MediaStreamTrack.prototype._switchCamera()
  • End call
  • Problem: the delay of receving remote viedeos increases when recreating the webrtc session by unpublish/publish. Soulution: use janus.destroy() for republishing instead of unpublish and publish
  • Rerender teh remote video view if others join and leave continuously
  • Rerender my video view when publishing and unpublishing
  • Switching camera works after recreating the session
  • Connecting modal when creating session
  • Redux integration
  • Better handling the janus session by simple redux
  • Better restarting the the janus session by simple queue system
  • Text Chat Mock
  • Rich UI
  • Refactor index.js and janus.mobile.js
  • More Details about how to use this Documentation
  • PR to awesome-react-native ( https://github.com/jondot/awesome-react-native )
  • Other Janus Plugin(Audio bridge, Streaming, Sip, Video Call ... etc)

Setup for iOS and Android

Setup for iOS

  • Code Signing for building on real device
  • Change the node path for you env, Build Phases -> Bundle React Native code and images ("export NODE_BINARY=/Users/jima/.nodebrew/current/bin/node")
  • Build the iOS project in release or debug

Setup for Android

License

  • MIT

Contributor

  • @atyenoria

Any request and bug repoting?

  • Could you create a new issue?