项目作者: haiyangwu

项目描述 :
mediasoup android client side library https://mediasoup.org
高级语言: C++
项目地址: git://github.com/haiyangwu/mediasoup-client-android.git
创建时间: 2019-09-19T03:38:46Z
项目社区:https://github.com/haiyangwu/mediasoup-client-android

开源协议:MIT License

下载


mediasoup-client-android

Codacy Badge

maven

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:

  1. implementation 'io.github.haiyangwu:mediasoup-client:3.4.0'

Example

  • Initialize MediasoupClient

    1. MediasoupClient.initialize(getApplicationContext());
  • Create Device and load routerRtpCapabilities

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

  1. * Create `RecvTransport` and consume `MediaStreamTrack`
  2. ```Java
  3. // ...
  4. // res, the response of request `createWebRtcTransport` from mediasoup-demo server
  5. JSONObject info = new JSONObject(res);
  6. String id = info.optString("id");
  7. String iceParameters = info.optString("iceParameters");
  8. String iceCandidates = info.optString("iceCandidates");
  9. String dtlsParameters = info.optString("dtlsParameters");
  10. String sctpParameters = info.optString("sctpParameters");
  11. RecvTransport mRecvTransport =
  12. mMediasoupDevice.createRecvTransport(
  13. recvTransportListener, id, iceParameters, iceCandidates, dtlsParameters);
  14. // ...
  15. // request, the request `newConsumer` from mediasoup-demo server
  16. JSONObject data = request.getData();
  17. String peerId = data.optString("peerId");
  18. String producerId = data.optString("producerId");
  19. String id = data.optString("id");
  20. String kind = data.optString("kind");
  21. String rtpParameters = data.optString("rtpParameters");
  22. String type = data.optString("type");
  23. String appData = data.optString("appData");
  24. Consumer consumer =
  25. mRecvTransport.consume(
  26. c -> {
  27. Logger.w(TAG, "onTransportClose for consume");
  28. },
  29. 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

Bugs and Feedback

For bugs, feature requests, and discussion please use GitHub Issues.

Author

Haiyang Wu(@haiyangwu at Github)

License

MIT