All Projects → haiyangwu → Mediasoup Client Android

haiyangwu / Mediasoup Client Android

Licence: mit
mediasoup android client side library https://mediasoup.org

Programming Languages

java
68154 projects - #9 most used programming language

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
Ice
WIP RFC 8445 ICE implementation in go
Stars: ✭ 95 (-1.04%)
Mutual labels:  webrtc
Peerjs
Simple peer-to-peer with WebRTC
Stars: ✭ 9,888 (+10200%)
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
Myscreen.live
P2P Screen Sharing with WebRTC
Stars: ✭ 79 (-17.71%)
Mutual labels:  webrtc
Opentok React
React components for OpenTok.js
Stars: ✭ 93 (-3.12%)
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

Bintray Codacy Badge

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 load routerRtpCapabilities
Device mMediasoupDevice = new Device();
// ...
// routerRtpCapabilities, the response of request `getRouterRtpCapabilities` from mediasoup-demo server
mMediasoupDevice.load(routerRtpCapabilities)
  • Create SendTransport and produce MediaStreamTrack
// ...
// 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 consume MediaStreamTrack
// ...
// 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

mediasoup-demo-android

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

MIT

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].