All Projects → wojta → No Server Webrtc Android

wojta / No Server Webrtc Android

Licence: unlicense
A demo of using WebRTC with no signaling server. But in Kotlin (Java) for Android.

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to No Server Webrtc Android

Sip.js
A simple, intuitive, and powerful JavaScript signaling library
Stars: ✭ 1,282 (+1120.95%)
Mutual labels:  webrtc
Mediasoup Client Android
mediasoup android client side library https://mediasoup.org
Stars: ✭ 96 (-8.57%)
Mutual labels:  webrtc
Cloud Game
Web-based Cloud Gaming service for Retro Game
Stars: ✭ 1,374 (+1208.57%)
Mutual labels:  webrtc
Peerjs
Simple peer-to-peer with WebRTC
Stars: ✭ 9,888 (+9317.14%)
Mutual labels:  webrtc
Ice
WIP RFC 8445 ICE implementation in go
Stars: ✭ 95 (-9.52%)
Mutual labels:  webrtc
Learning Webrtc
Codes and notes while learning webrtc
Stars: ✭ 98 (-6.67%)
Mutual labels:  webrtc
Multihack Web
Realtime collaboration for programmers. (Web Version)
Stars: ✭ 85 (-19.05%)
Mutual labels:  webrtc
Callroulette
A WebRTC demo using Python (asyncio + aiohttp) as the backend
Stars: ✭ 104 (-0.95%)
Mutual labels:  webrtc
Webrtc voiceengine
This is the Wrapper Library for WebRTC Voice Engine. Including Acoustic Echo Cancellation (AEC), Noise Suppression (NS), VAD (Voice Active Detection) and so on.
Stars: ✭ 95 (-9.52%)
Mutual labels:  webrtc
Rn Voice Video Call
Usage of WebRTC for voice & video call with peer-to-peer or conference with Login and Register screen using response & Async storage with Call Dis/Connect, Failed and Idle views in react native. Youtube:
Stars: ✭ 100 (-4.76%)
Mutual labels:  webrtc
Pushkit silentpushnotification
PushKit_SilentPushNotification to receive VOIP call while iOS app is in background or terminated state
Stars: ✭ 93 (-11.43%)
Mutual labels:  webrtc
Browser Phone
A fully featured browser based WebRTC SIP phone for Asterisk
Stars: ✭ 95 (-9.52%)
Mutual labels:  webrtc
Quickblox Javascript Sdk
JavaScript SDK of QuickBlox cloud backend platform
Stars: ✭ 98 (-6.67%)
Mutual labels:  webrtc
Libcrtc
WebRTC C++ library built on top of chromium webrtc.
Stars: ✭ 89 (-15.24%)
Mutual labels:  webrtc
Translator
Translator.js is a JavaScript library built top on Google Speech-Recognition & Translation API to transcript and translate voice and text. It supports many locales and brings globalization in WebRTC! https://www.webrtc-experiment.com/Translator/
Stars: ✭ 103 (-1.9%)
Mutual labels:  webrtc
Lawsroom
Group video chat on your browser. [No plugin required]
Stars: ✭ 87 (-17.14%)
Mutual labels:  webrtc
U2web
stream video with p2p
Stars: ✭ 97 (-7.62%)
Mutual labels:  webrtc
Opentok Ios Sdk Samples Swift
Sample applications using the OpenTok iOS SDK in Swift
Stars: ✭ 105 (+0%)
Mutual labels:  webrtc
Opentok Network Test
Sample app to test network connectivity and statistics (bps, packet-lost)
Stars: ✭ 104 (-0.95%)
Mutual labels:  webrtc
Kamailio
Kamailio - The Open Source SIP Server for large VoIP and real-time communication platforms -
Stars: ✭ 1,358 (+1193.33%)
Mutual labels:  webrtc

serverless-webrtc-android

CircleCI

A demo of using WebRTC with no signaling server. But for Android written in Kotlin.

Compatible and inspired by this project written for JavaScript by Chris Ball:

What is WebRTC?

It's technology for real time peer to peer comunication. Especially useful for transfering audio and video - teleconference apps, but can be used for ordinary data as in this example. WebRTC is supported in recent Chrome browser, Node.js and also on Android/iOS.

How it works?

WebRTC requires two data payloads to be transferred between parties, it's called SDP (sesssion description protocol). One is called offer and the second is answer.

You can either create an offer and send it to other party or wait for an offer to be delivered to you. Usually SDP handshakes are done by special signalling server, but in this case we are not using any, so you'll need to pass SDPs manually by e.g. e-mail.

If it's running IPv4, it's very unlikely that both parties will have a public IP address or it will be on the same network. SDP requires that you'll need to pass external IP address there, this is done automatically by process called ICE gathering. It uses two types of external servers - STUN and TURN. We are using only STUN here, but it should work with TURN as well (and even better). It can even punch through some NAT mechanisms.

It uses libjingle library, it's a native library for WebRTC that comes with Chromium. There is also JNI wrapper for use in Java. You can compile it by yourself but it's extremely tricky. You can use already build dependency in your build.gradle. This helped me a lot:

Usage

Known issues

  • There is no renegotiation of connection, it doesn't make much sense without signalling server.
  • If you paste offer in the app, answer is created but after while it goes with 'icegathering failed'. You must be fast to pass the answer to the other side. I'm not sure what causes this.

License

You can do whatever you want with this code.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].