haiyangwu / Mediasoup Client Android
Licence: mit
mediasoup android client side library https://mediasoup.org
Stars: ✭ 96
Programming Languages
java
68154 projects - #9 most used programming language
Labels
Projects that are alternatives of or similar to Mediasoup Client Android
Restcomm Android Sdk
Android Mobile SDK to easily integrate communication features (WebRTC, messaging, presence, voice, video, screensharing) based on RestComm into native Mobile Applications
Stars: ✭ 139 (+44.79%)
Mutual labels: webrtc, android-sdk
Pushkit silentpushnotification
PushKit_SilentPushNotification to receive VOIP call while iOS app is in background or terminated state
Stars: ✭ 93 (-3.12%)
Mutual labels: webrtc
Freeswitch
FreeSWITCH is a Software Defined Telecom Stack enabling the digital transformation from proprietary telecom switches to a versatile software implementation that runs on any commodity hardware. From a Raspberry PI to a multi-core server, FreeSWITCH can unlock the telecommunications potential of any device.
Stars: ✭ 1,213 (+1163.54%)
Mutual labels: webrtc
Multihack Web
Realtime collaboration for programmers. (Web Version)
Stars: ✭ 85 (-11.46%)
Mutual labels: webrtc
Phormatics
Using A.I. and computer vision to build a virtual personal fitness trainer. (Most Startup-Viable Hack - HackNYU2018)
Stars: ✭ 79 (-17.71%)
Mutual labels: webrtc
Lawsroom
Group video chat on your browser. [No plugin required]
Stars: ✭ 87 (-9.37%)
Mutual labels: webrtc
Camus
Peer-to-peer group video chat using WebRTC, Python, and Javascript
Stars: ✭ 75 (-21.87%)
Mutual labels: webrtc
Mediasoup3 Record Demo
Simple Record Demo using Mediasoup 3 and GStreamer
Stars: ✭ 84 (-12.5%)
Mutual labels: webrtc
Laverna
Laverna is a JavaScript note taking application with Markdown editor and encryption support. Consider it like open source alternative to Evernote.
Stars: ✭ 8,770 (+9035.42%)
Mutual labels: webrtc
Twilio Video App React
A collaboration application built with the twilio-video.js SDK and React.js
Stars: ✭ 1,233 (+1184.38%)
Mutual labels: webrtc
Sip.js
A simple, intuitive, and powerful JavaScript signaling library
Stars: ✭ 1,282 (+1235.42%)
Mutual labels: webrtc
Android Sdk Installer
Linux utility which aims to automatically install and configures Android SDK, Eclipse ADT Plugin, adds hardware support for devices and enables full MTP support.
Stars: ✭ 78 (-18.75%)
Mutual labels: android-sdk
Vue Qrcode Reader
A set of Vue.js components for detecting and decoding QR codes.
Stars: ✭ 1,240 (+1191.67%)
Mutual labels: webrtc
Android Avd
Headless Android x86 emulator ready for automated instrumentation testing.
Stars: ✭ 87 (-9.37%)
Mutual labels: android-sdk
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 (-1.04%)
Mutual labels: webrtc
Browser Phone
A fully featured browser based WebRTC SIP phone for Asterisk
Stars: ✭ 95 (-1.04%)
Mutual labels: webrtc
mediasoup-client-android
mediasoup android client side library https://mediasoup.org
Getting Started
Setting up the dependency
Include mediasoup-client-android
into your project, for example, as a Gradle compile dependency:
implementation 'org.mediasoup.droid:mediasoup-client:3.0.8-beta-3'
Example
- Initialize
MediasoupClient
MediasoupClient.initialize(getApplicationContext());
- Create
Device
and loadrouterRtpCapabilities
Device mMediasoupDevice = new Device();
// ...
// routerRtpCapabilities, the response of request `getRouterRtpCapabilities` from mediasoup-demo server
mMediasoupDevice.load(routerRtpCapabilities)
- Create
SendTransport
and produceMediaStreamTrack
// ...
// res, the response of request `createWebRtcTransport` from mediasoup-demo server
JSONObject info = new JSONObject(res);
String id = info.optString("id");
String iceParameters = info.optString("iceParameters");
String iceCandidates = info.optString("iceCandidates");
String dtlsParameters = info.optString("dtlsParameters");
String sctpParameters = info.optString("sctpParameters");
SendTransport mSendTransport =
mMediasoupDevice.createSendTransport(
sendTransportListener, id, iceParameters, iceCandidates, dtlsParameters);
// ...
// mLocalVideoTrack, created by `org.webrtc.PeerConnectionFactory`
Producer mCamProducer =
mSendTransport.produce(
producer -> {
Logger.e(TAG, "onTransportClose(), camProducer");
},
mLocalVideoTrack, null, null);
- Create
RecvTransport
and consumeMediaStreamTrack
// ...
// res, the response of request `createWebRtcTransport` from mediasoup-demo server
JSONObject info = new JSONObject(res);
String id = info.optString("id");
String iceParameters = info.optString("iceParameters");
String iceCandidates = info.optString("iceCandidates");
String dtlsParameters = info.optString("dtlsParameters");
String sctpParameters = info.optString("sctpParameters");
RecvTransport mRecvTransport =
mMediasoupDevice.createRecvTransport(
recvTransportListener, id, iceParameters, iceCandidates, dtlsParameters);
// ...
// request, the request `newConsumer` from mediasoup-demo server
JSONObject data = request.getData();
String peerId = data.optString("peerId");
String producerId = data.optString("producerId");
String id = data.optString("id");
String kind = data.optString("kind");
String rtpParameters = data.optString("rtpParameters");
String type = data.optString("type");
String appData = data.optString("appData");
Consumer consumer =
mRecvTransport.consume(
c -> {
Logger.w(TAG, "onTransportClose for consume");
},
id, producerId, kind, rtpParameters, appData);
Dependencies
- libmediasoupclient mediasoup client side C++ library which supported by mediasoup team
-
webrtc-android-build my personal
webrtc
android prebuilt static library which may be compiled with some patch
Demo Project
TODO
- [X] sync to the latest version of libmediasoupclient and adapter to
webrtc
m79 - [ ] support
DataProducer
etc - [ ] add convenient
Gradle Tasks
for sync, compile and so on - [X] add script to use
generate-jni
to automatic generate `xxx-jni.h - [ ] add java MediaSoupClientException mapping to `MediaSoupClientErrors.hpp
- [ ] document
Bugs and Feedback
For bugs, feature requests, and discussion please use GitHub Issues.
Author
Haiyang Wu(@haiyangwu at Github)
License
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].