Git Product home page Git Product logo

haiyangwu / mediasoup-client-android Goto Github PK

View Code? Open in Web Editor NEW
178.0 15.0 105.0 132.97 MB

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

License: MIT License

Java 3.75% CMake 0.22% C++ 84.90% Shell 0.12% Python 1.95% C 5.78% Assembly 0.04% Objective-C 1.29% Objective-C++ 1.76% HTML 0.03% MATLAB 0.08% CSS 0.01% JavaScript 0.07% Roff 0.01% Batchfile 0.01% PowerShell 0.01% Jinja 0.01% Lua 0.01%
webrtc mediasoup java jni-android android-sdk

mediasoup-client-android's Introduction

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:

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

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, null)
  • 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, 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

Bugs and Feedback

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

Author

Haiyang Wu(@haiyangwu at Github)

License

MIT

mediasoup-client-android's People

Contributors

chatelgu avatar codacy-badger avatar ethand91 avatar haiyangwu avatar rawnsley avatar taraskreknin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mediasoup-client-android's Issues

App crash on producer.close();

Hi @haiyangwu
App crash on producer.close()
Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 21002 (upandroidsample), pid 21002 (upandroidsample)

audio volume is pretty low when speaker is on

Volume is normal when the speaker off, but if turn on the speaker, the mic volume is low, and it is hard to hear. Is there any way to set the volume of the microphone when the speaker is on?

No implementation found for long org.mediasoup.droid.Device.nativeNewDevice()

After I execute Device mediaDevice = new Device(); I get the following error:

    --------- beginning of crash
2020-05-17 17:42:53.386 com.example.mediaclient E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.mediaclient, PID: 3644
    java.lang.UnsatisfiedLinkError: No implementation found for long org.mediasoup.droid.Device.nativeNewDevice() (tried Java_org_mediasoup_droid_Device_nativeNewDevice and Java_org_mediasoup_droid_Device_nativeNewDevice__)
        at org.mediasoup.droid.Device.nativeNewDevice(Native Method)
        at org.mediasoup.droid.Device.<init>(Device.java:8)
        at com.example.mediaclient.MainActivity$1$1.run(MainActivity.java:88)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6119)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

No implementation found for void org.webrtc.voiceengine.WebRtcAudioTrack.nativeGetPlayoutData

2021-04-17 22:49:04.150 10455-16973/? E/zygote64: No implementation found for void org.webrtc.voiceengine.WebRtcAudioTrack.nativeGetPlayoutData(int, long) (tried Java_org_webrtc_voiceengine_WebRtcAudioTrack_nativeGetPlayoutData and Java_org_webrtc_voiceengine_WebRtcAudioTrack_nativeGetPlayoutData__IJ)
2021-04-17 22:49:04.151 10455-16973/? E/AndroidRuntime: FATAL EXCEPTION: AudioTrackJavaThread
Process: cn.lecent.prisonroom.guards, PID: 10455
java.lang.UnsatisfiedLinkError: No implementation found for void org.webrtc.voiceengine.WebRtcAudioTrack.nativeGetPlayoutData(int, long) (tried Java_org_webrtc_voiceengine_WebRtcAudioTrack_nativeGetPlayoutData and Java_org_webrtc_voiceengine_WebRtcAudioTrack_nativeGetPlayoutData__IJ)
at org.webrtc.voiceengine.WebRtcAudioTrack.nativeGetPlayoutData(Native Method)
at org.webrtc.voiceengine.WebRtcAudioTrack.access$400(WebRtcAudioTrack.java:28)
at org.webrtc.voiceengine.WebRtcAudioTrack$AudioTrackThread.run(WebRtcAudioTrack.java:147)

Hardware video decoder not in use

As I checked, on android, we just use software video decoder which is low performance for high-resolution video.
We should use hardware instead of.

One Question

Hi @haiyangwu ,

First, thank you for your support.

I want ask you: will we have IOS swift demo that can connect to https://v3demo.mediasoup.org server?

I saw android demo(https://github.com/haiyangwu/mediasoup-client-android), but can't find ios swift demo anywhere?

This sample (https://github.com/ethand91/mediasoup-ios-client-sample) can't connect because data that send by web socket is not right. It is only fit with sample server (https://github.com/ethand91/mediasoup-sample-server)

If you know, please help.

Thank you very much.

Device.Load does not do anything

I am trying to do a simple loopback sample in android. I have already done this in the web client and the server works correctly there. I have pasted the relevant codes below.

## ~/build.gradle

buildscript {
    ext.kotlin_version = '1.3.72'
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.0.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.3'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.2.0'
        classpath 'com.google.firebase:perf-plugin:1.3.1'
    }
}
## ~/app/build.gradle

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'com.google.firebase.firebase-perf'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "ir.yooneskh.xxx"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 3
        versionName "1.2.1"
        multiDexEnabled true
        ndk {
            abiFilters 'x86' ,'x86_64', 'armeabi-v7a', 'arm64-v8a'
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8.toString()
    }
}

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

dependencies {

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.multidex:multidex:2.0.1'

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation "androidx.core:core-ktx:1.3.0"

    implementation "androidx.appcompat:appcompat:1.1.0"
    implementation "com.google.android.material:material:1.1.0"

    implementation "androidx.constraintlayout:constraintlayout:1.1.3"
    implementation "androidx.recyclerview:recyclerview:1.1.0"
    implementation "androidx.annotation:annotation:1.1.0"
    implementation "androidx.viewpager2:viewpager2:1.0.0"

    implementation "uk.co.chrisjenx:calligraphy:2.3.0"

    implementation "com.amitshekhar.android:android-networking:1.0.2"
    implementation 'io.coil-kt:coil:0.10.0'

    implementation "com.google.firebase:firebase-analytics:17.4.4"
    implementation "com.google.firebase:firebase-crashlytics:17.1.1"
    implementation "com.google.firebase:firebase-perf:19.0.8"
    implementation "com.google.firebase:firebase-messaging:20.2.3"

    implementation "net.grandcentrix.tray:tray:0.12.0"

    implementation 'com.github.quickpermissions:quickpermissions-kotlin:0.4.1'

    implementation 'com.github.nkzawa:socket.io-client:0.6.0'

    implementation 'org.mediasoup.droid:mediasoup-client:3.0.8-beta-3'

}

## Activity.kt

    YSocket.needsAuthentication = false
    YSocket.connect()
    debug("connecting")

    YSocket.onConnected {
      debug("connected")
      device = Device()
      YSocket.emit("getRouterRtpCapabilities")
    }

    YSocket.on("routerRtpCapabilities", Emitter.Listener { data ->
      debug("on router rtp :: ${data[0]}")
      device.load(data[0] as String)
      debug("after device load")
    })

This gets printed

on router rtp :: {"codecs":[{"kind":"audio","mimeType":"audio\/opus","clockRate":48000,"channels":2,"rtcpFeedback":[{"type":"transport-cc","parameter":""}],"parameters":{},"preferredPayloadType":100},{"kind":"video","mimeType":"video\/VP8","clockRate":90000,"rtcpFeedback":[{"type":"nack","parameter":""},{"type":"nack","parameter":"pli"},{"type":"ccm","parameter":"fir"},{"type":"goog-remb","parameter":""},{"type":"transport-cc","parameter":""}],"parameters":{"x-google-start-bitrate":1000},"preferredPayloadType":101},{"kind":"video","mimeType":"video\/rtx","preferredPayloadType":102,"clockRate":90000,"parameters":{"apt":101},"rtcpFeedback":[]}],"headerExtensions":[{"kind":"audio","uri":"urn:ietf:params:rtp-hdrext:sdes:mid","preferredId":1,"preferredEncrypt":false,"direction":"sendrecv"},{"kind":"video","uri":"urn:ietf:params:rtp-hdrext:sdes:mid","preferredId":1,"preferredEncrypt":false,"direction":"sendrecv"},{"kind":"video","uri":"urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","preferredId":2,"preferredEncrypt":false,"direction":"recvonly"},{"kind":"video","uri":"urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id","preferredId":3,"preferredEncrypt":false,"direction":"recvonly"},{"kind":"audio","uri":"http:\/\/www.webrtc.org\/experiments\/rtp-hdrext\/abs-send-time","preferredId":4,"preferredEncrypt":false,"direction":"sendrecv"},{"kind":"video","uri":"http:\/\/www.webrtc.org\/experiments\/rtp-hdrext\/abs-send-time","preferredId":4,"preferredEncrypt":false,"direction":"sendrecv"},{"kind":"audio","uri":"http:\/\/www.ietf.org\/id\/draft-holmer-rmcat-transport-wide-cc-extensions-01","preferredId":5,"preferredEncrypt":false,"direction":"recvonly"},{"kind":"video","uri":"http:\/\/www.ietf.org\/id\/draft-holmer-rmcat-transport-wide-cc-extensions-01","preferredId":5,"preferredEncrypt":false,"direction":"sendrecv"},{"kind":"video","uri":"http:\/\/tools.ietf.org\/html\/draft-ietf-avtext-framemarking-07","preferredId":6,"preferredEncrypt":false,"direction":"sendrecv"},{"kind":"video","uri":"urn:ietf:params:rtp-hdrext:framemarking","preferredId":7,"preferredEncrypt":false,"direction":"sendrecv"},{"kind":"audio","uri":"urn:ietf:params:rtp-hdrext:ssrc-audio-level","preferredId":10,"preferredEncrypt":false,"direction":"sendrecv"},{"kind":"video","uri":"urn:3gpp:video-orientation","preferredId":11,"preferredEncrypt":false,"direction":"sendrecv"},{"kind":"video","uri":"urn:ietf:params:rtp-hdrext:toffset","preferredId":12,"preferredEncrypt":false,"direction":"sendrecv"}]}

But somehow the code gets stuck at device.load and the next debug does not get printed. there is no error or anything.

This might be relevant too.

Screenshot from 2020-07-20 22-51-01

With More Detail

Screenshot from 2020-07-20 22-53-28

AEC is not working in some phone

AEC is not working on some phones, eg Xiaomi 9. It may be problems with the phone. Do you have any idea about this issue? I've taken lof of research and have no answer yet.

JNI creation of MediasoupException isn't working

Native errors are thrown back to the JVM using MediasoupException. The helper macro that does this uses JniEnv->ThrowNew, but this fails because it is expecting to find a constructor that takes a String (explained here). Instead you get something like this logcat error:

E/art: No <init>(Ljava/lang/String;)V in java.lang.Class<org.mediasoup.droid.MediasoupException>
E/AndroidRuntime: FATAL EXCEPTION: worker
    Process: org.mediasoup.droid.demo, PID: 2965
    java.lang.NoSuchMethodError: no non-static method "Lorg/mediasoup/droid/MediasoupException;.<init>(Ljava/lang/String;)V"
        at org.mediasoup.droid.Device.nativeLoad(Native Method)
        at org.mediasoup.droid.Device.load(Device.java:19)
        at org.mediasoup.droid.lib.RoomClient.joinImpl(RoomClient.java:669)
        at org.mediasoup.droid.lib.RoomClient.access$500(RoomClient.java:38)
        at org.mediasoup.droid.lib.RoomClient$2.lambda$onOpen$0$RoomClient$2(RoomClient.java:574)
        at org.mediasoup.droid.lib.-$$Lambda$RoomClient$2$1yrKTPoWaRxWuD7Kk1QcDNV7v7Y.run(lambda)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.os.HandlerThread.run(HandlerThread.java:61)

This could be fixed by either creating an instance of the exception and throwing that or by adding the missing constructor to the Java class.

Crash related to Audio

When "WebSockets connection lost", application crash with below ERROR log:

`No implementation found for void org.webrtc.voiceengine.WebRtcAudioTrack.nativeGetPlayoutData(int, long) (tried Java_org_webrtc_voiceengine_WebRtcAudioTrack_nativeGetPlayoutData and Java_org_webrtc_voiceengine_WebRtcAudioTrack_nativeGetPlayoutData__IJ)
03-21 14:26:08.102 3914-4000/ /AndroidRuntime: FATAL EXCEPTION: AudioTrackJavaThread
Process: com.immertec.vr, PID: 3914
java.lang.Error: FATAL EXCEPTION [AudioTrackJavaThread]
Unity version : 2018.4.18f1
Device model : unknown Android SDK built for x86
Device fingerprint: Android/sdk_google_phone_x86/generic_x86:6.0/MASTER/5525988:userdebug/test-keys

Caused by: java.lang.UnsatisfiedLinkError: No implementation found for void org.webrtc.voiceengine.WebRtcAudioTrack.nativeGetPlayoutData(int, long) (tried Java_org_webrtc_voiceengine_WebRtcAudioTrack_nativeGetPlayoutData and Java_org_webrtc_voiceengine_WebRtcAudioTrack_nativeGetPlayoutData__IJ)
    at org.webrtc.voiceengine.WebRtcAudioTrack.nativeGetPlayoutData(Native Method)
    at org.webrtc.voiceengine.WebRtcAudioTrack.access$400(WebRtcAudioTrack.java:28)
    at org.webrtc.voiceengine.WebRtcAudioTrack$AudioTrackThread.run(WebRtcAudioTrack.java:147)`

Duplicate a=mid value '2'

above 3.0.4-beta-2 it has this error with 3 devices and more

[WARN] PeerConnection::OnFailure() | webtc::SetSessionDescriptionObserver failure [INVALID_PARAMETER:Failed to set remote offer sdp: Duplicate a=mid value '2'.]

E/mediasoupclient-jni: [ERROR] transport_jni::JNI_RecvTransport_Consume() | Failed to set remote offer sdp: Duplicate a=mid value '2'.

mediasoup-client : FAILURE: Build failed with an exception.

I am using mediasoup-client lib and at the run-time facing below errors:

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':mediasoup-client:externalNativeBuildDebug'.

Build command failed.
Error while executing process /home/gwl/Android/Sdk/cmake/3.6.4111459/bin/cmake with arguments {--build /opt/AnarchyWork/Anarchy-Android-source/mediasoup-client/.cxx/cmake/debug/arm64-v8a --target mediasoupclient_so}
[1/1] Linking CXX shared library ../../../../build/intermediates/cmake/debug/obj/arm64-v8a/libmediasoupclient_so.so
FAILED: : && /home/gwl/Android/Sdk/ndk/20.0.5594570/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=aarch64-none-linux-android21 --gcc-toolchain=/home/gwl/Android/Sdk/ndk/20.0.5594570/toolchains/llvm/prebuilt/linux-x86_64 --sysroot=/home/gwl/Android/Sdk/ndk/20.0.5594570/toolchains/llvm/prebuilt/linux-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fno-limit-debug-info -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack -shared -Wl,-soname,libmediasoupclient_so.so -o ../../../../build/intermediates/cmake/debug/obj/arm64-v8a/libmediasoupclient_so.so CMakeFiles/mediasoupclient_so.dir/src/main/jni/jni_generator_helper.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/jni_onload.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/scoped_java_ref.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/java_types.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/consumer_jni.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/device_jni.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/logger_jni.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/mediasoup_client_jni.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/peerconnection_jni.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/producer_jni.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/transport_jni.cpp.o CMakeFiles/mediasoupclient_so.dir/src/androidTest/jni/parameters_jni.cpp.o CMakeFiles/mediasoupclient_so.dir/deps/libmediasoupclient/test/src/fakeParameters.cpp.o -landroid -llog -lOpenSLES deps/libmediasoupclient/libmediasoupclient.a deps/libmediasoupclient/libsdptransform/libsdptransform.a -Wl,--whole-archive ../../../../deps/webrtc/lib/arm64-v8a/libwebrtc.a -Wl,--no-whole-archive -latomic -lm && :
/home/gwl/Android/Sdk/ndk/20.0.5594570/toolchains/llvm/prebuilt/linux-x86_64/lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld:../../../../deps/webrtc/lib/arm64-v8a/libwebrtc.a: file format not recognized; treating as linker script
/home/gwl/Android/Sdk/ndk/20.0.5594570/toolchains/llvm/prebuilt/linux-x86_64/lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld:../../../../deps/webrtc/lib/arm64-v8a/libwebrtc.a:1: syntax error
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

Invalid patch file

I think path file is out of date. I got this issue when try to apply path:
error: patch failed: build/config/android/BUILD.gn:105
error: build/config/android/BUILD.gn: patch does not apply

We should be able to use dynamic library, right?

error during GetMethodID: <init>, (J)V

first of all, thank you so much for such a great SDK
I have this issue after released my app, in debug mode, it hasn't any problem.

# Fatal error in: /Users/why/Mediasoup/v3/mediasoup-client-android/mediasoup-client/src/main/jni/jni_generator_helper.cpp, line 61 # last system error: 0 # Check failed: !env->ExceptionCheck() # error during GetMethodID: <init>, (J)V

Android USB camera

Thank you for your android version app!
recently, i met a problem. in a robot scenraio , i wish to use an android-based machine with a usb-camera to connect the mediasoup server. However, the app can not recognise the USB_camera. I know I NEED add LIBUVC . BUT i am not clear that how can i GET the push the video to mediasoup after i attain the usb_Camera picture.
Could you give me a hint where the push stream interface is?
Sorry to bother you ! Thank you again!

关于web端刷新重新加入房间,android端sdp设置失败的问题

大佬,你好!
使用你的工程出现一个问题,希望可以指点一下。正常情况下没有问题,android端和web可以互通。但是web退出会议重新加入或者刷新重新加入房间的时候出现问题,Android端只有web端的声音无画面。日志里面报
E/mediasoupclient-jni: [ERROR] transport_jni::Java_org_mediasoup_droid_RecvTransport_nativeConsume() | Failed to set local answer sdp: Failed to process the bundled m= section.
还有
E/mediasoupclient-jni: [ERROR] transport_jni::Java_org_mediasoup_droid_RecvTransport_nativeConsume() | Session error code: ERROR_CONTENT. Session error description: Failed to process the bundled m= section..

以下是sdp以及报错详细信息

第一个offer和answer

D/mediasoupclient-jni: [DEBUG] Handler::Receive() | calling pc->setRemoteDescription() [offer:v=0
o=libmediasoupclient 10000 5 IN IP4 0.0.0.0
s=-
t=0 0
a=ice-lite
a=fingerprint:sha-512 EF:6C:D2:47:29:5B:FB:F7:10:5D:54:81:94:EB:26:22:98:8C:2F:D4:C4:16:24:2D:A1:5C:54:53:C3:18:EC:FC:FA:81:7B:FC:42:F9:DE:F7:D3:9C:9C:69:41:E2:6A:0E:5F:67:86:5F:A4:7C:DA:CE:7E:DC:5B:A9:44:62:47:E3
a=msid-semantic: WMS *
a=group:BUNDLE 0 1 2
m=audio 7 UDP/TLS/RTP/SAVPF 100
c=IN IP4 127.0.0.1
a=rtpmap:100 opus/48000/2
a=fmtp:100 minptime=10;sprop-stereo=1;usedtx=1;useinbandfec=1
a=extmap:4 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:10 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=setup:actpass
a=mid:0
a=sendonly
a=ice-ufrag:yculefwrjzikrqsp
a=ice-pwd:rxzafcxw4ozdwzdqoacz4h6plt0ehcij
a=candidate:udpcandidate 1 udp 1076558079 58.216.33.253 46408 typ host
a=candidate:tcpcandidate 1 tcp 1076302079 58.216.33.253 42357 typ host tcptype passive
a=end-of-candidates
a=ice-options:renomination
a=ssrc:200479048 cname:hz
I/mediasoupclient-jni: [TRACE] PeerConnection::SetRemoteDescription()
I/mediasoupclient-jni: [TRACE] PeerConnection::OnSignalingChange()
D/mediasoupclient-jni: [DEBUG] PeerConnection::OnSignalingChange() | new SignalingState:[have-remote-offer]
I/mediasoupclient-jni: [TRACE] PeerConnection::OnTrack()
[TRACE] PeerConnection::OnAddTrack()
[TRACE] PeerConnection::OnAddStream()
D/RoomClient: recvTransport::onConnectionStateChange newState=disconnected
I/mediasoupclient-jni: [TRACE] PeerConnection::OnIceGatheringChange()
D/mediasoupclient-jni: [DEBUG] PeerConnection::OnIceGatheringChange() | new IceGatheringState:[gathering]
I/mediasoupclient-jni: [TRACE] PeerConnection::CreateAnswer()
I/mediasoupclient-jni: [TRACE] Sdp::Utils::applyCodecParameters()
D/mediasoupclient-jni: [DEBUG] Handler::Receive() | calling pc->SetLocalDescription() [answer:v=0
o=- 2106674388572859380 6 IN IP4 127.0.0.1
s=-
t=0 0
a=msid-semantic: WMS
a=group:BUNDLE 0 1 2
m=audio 52560 UDP/TLS/RTP/SAVPF 100
c=IN IP4 192.168.18.245
a=rtpmap:100 opus/48000/2
a=fmtp:100 minptime=10;useinbandfec=1
a=rtcp:9 IN IP4 0.0.0.0
a=extmap:10 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=setup:active
a=mid:0
a=recvonly
a=ice-ufrag:Ei19
a=ice-pwd:tIyFyG6FIsMb8opbbZMpGWNK
a=fingerprint:sha-256 FD:DE:72:02:57:99:75:4F:76:DF:AF:5D:EC:8D:BF:CB:B2:49:64:4D:FA:ED:61:E4:18:9C:7A:6D:F8:7B:2B:E2
a=candidate:3696260944 1 udp 2122260223 192.168.18.245 52560 typ host generation 0 network-id 3 network-cost 10
a=ice-options:trickle
a=rtcp-mux
m=video 9 UDP/TLS/RTP/SAVPF 101 102
c=IN IP4 0.0.0.0
a=rtpmap:101 VP8/90000
a=rtpmap:102 rtx/90000
a=fmtp:102 apt=101
a=rtcp:9 IN IP4 0.0.0.0
a=rtcp-fb:101 goog-remb
a=rtcp-fb:101 ccm fir
a=rtcp-fb:101 nack
a=rtcp-fb:101 nack pli
a=extmap:12 urn:ietf:params:rtp-hdrext
I/mediasoupclient-jni: [TRACE] PeerConnection::SetLocalDescription()
W/mediasoupclient-jni: [WARN] PeerConnection::OnFailure() | webtc::SetSessionDescriptionObserver failure [INTERNAL_ERROR:Failed to set local answer sdp: Failed to process the bundled m= section.]
E/mediasoupclient-jni: [ERROR] transport_jni::Java_org_mediasoup_droid_RecvTransport_nativeConsume() | Failed to set local answer sdp: Failed to process the bundled m= section.

第二个offer(没有answer,安卓端无视频有音频)

D/mediasoupclient-jni: [DEBUG] Handler::Receive() | calling pc->setRemoteDescription() [offer:v=0
o=libmediasoupclient 10000 6 IN IP4 0.0.0.0
s=-
t=0 0
a=ice-lite
a=fingerprint:sha-512 EF:6C:D2:47:29:5B:FB:F7:10:5D:54:81:94:EB:26:22:98:8C:2F:D4:C4:16:24:2D:A1:5C:54:53:C3:18:EC:FC:FA:81:7B:FC:42:F9:DE:F7:D3:9C:9C:69:41:E2:6A:0E:5F:67:86:5F:A4:7C:DA:CE:7E:DC:5B:A9:44:62:47:E3
a=msid-semantic: WMS *
a=group:BUNDLE 0 1 2 2
m=audio 7 UDP/TLS/RTP/SAVPF 100
c=IN IP4 127.0.0.1
a=rtpmap:100 opus/48000/2
a=fmtp:100 minptime=10;sprop-stereo=1;usedtx=1;useinbandfec=1
a=extmap:4 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:10 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=setup:actpass
a=mid:0
a=sendonly
a=ice-ufrag:yculefwrjzikrqsp
a=ice-pwd:rxzafcxw4ozdwzdqoacz4h6plt0ehcij
a=candidate:udpcandidate 1 udp 1076558079 58.216.33.253 46408 typ host
a=candidate:tcpcandidate 1 tcp 1076302079 58.216.33.253 42357 typ host tcptype passive
a=end-of-candidates
a=ice-options:renomination
a=ssrc:200479048 cname:
I/mediasoupclient-jni: [TRACE] PeerConnection::SetRemoteDescription()
W/mediasoupclient-jni: [WARN] PeerConnection::OnFailure() | webtc::SetSessionDescriptionObserver failure [INTERNAL_ERROR:Session error code: ERROR_CONTENT. Session error description: Failed to process the bundled m= section..]
E/mediasoupclient-jni: [ERROR] transport_jni::Java_org_mediasoup_droid_RecvTransport_nativeConsume() | Session error code: ERROR_CONTENT. Session error description: Failed to process the bundled m= section..

device.load unsupport video

Please! I find do Device Class load(routerRtpCapabilities) and getRtpCapabilities() just return audio sdpmessage

v7a invalid codec.mimetype

Compiling v8a version can be used normally, but only using v7a will report an error.

E/RoomClient: joinRoom() failed:
    org.mediasoup.droid.MediasoupException: invalid codec.mimeType
E/RoomClient: org.mediasoup.droid.MediasoupException: invalid codec.mimeType
        at org.mediasoup.droid.Device.nativeLoad(Native Method)
        at org.mediasoup.droid.Device.load(Device.java:19)
        at org.mediasoup.droid.lib.RoomClient.joinImpl(RoomClient.java:669)
        at org.mediasoup.droid.lib.RoomClient.access$500(RoomClient.java:38)
        at org.mediasoup.droid.lib.RoomClient$2.lambda$onOpen$0$RoomClient$2(RoomClient.java:574)
        at org.mediasoup.droid.lib.-$$Lambda$RoomClient$2$1yrKTPoWaRxWuD7Kk1QcDNV7v7Y.run(Unknown Source:2)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:192)
        at android.os.HandlerThread.run(HandlerThread.java:65)

Crash on mediasoupclient::PeerConnection::SetRemoteDescription

Version: 3.0.8-beta1

Device:
Android 10,level 29 arm64-v8a, used by mediasoup-client-android

BT:
#00 pc 000000000006f06c /apex/com.android.runtime/lib64/bionic/libc.so (abort+160) [arm64-v8a]
2 #1 pc 0000000000971820 libmediasoupclient_so.so abort_message (/Volumes/Android/buildbot/src/android/ndk-release-r21/external/libcxx/../../external/libcxxabi/src/abort_message.cpp:76) [arm64-v8a]
3 #2 pc 0000000000971978 libmediasoupclient_so.so demangling_terminate_handler (/Volumes/Android/buildbot/src/android/ndk-release-r21/external/libcxx/../../external/libcxxabi/src/cxa_default_handlers.cpp:62) [arm64-v8a]
4 #3 pc 000000000096e868 libmediasoupclient_so.so __terminate (/Volumes/Android/buildbot/src/android/ndk-release-r21/external/libcxx/../../external/libcxxabi/src/cxa_handlers.cpp:59) [arm64-v8a]
5 #4 pc 000000000096e800 libmediasoupclient_so.so terminate (/Volumes/Android/buildbot/src/android/ndk-release-r21/external/libcxx/../../external/libcxxabi/src/cxa_handlers.cpp:88) [arm64-v8a]
6 #5 pc 000000000092992c libmediasoupclient_so.so rethrow_exception (/Volumes/Android/buildbot/src/android/ndk-release-r21/external/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp:70) [arm64-v8a]
7 #6 pc 0000000000929ed8 libmediasoupclient_so.so copy (/Volumes/Android/buildbot/src/android/ndk-release-r21/external/libcxx/src/future.cpp:145) [arm64-v8a]
8 #7 pc 000000000092a124 libmediasoupclient_so.so get (/Volumes/Android/buildbot/src/android/ndk-release-r21/external/libcxx/src/future.cpp:196) [arm64-v8a]
9 #8 pc 000000000022d4ac libmediasoupclient_so.so SetRemoteDescription (/Users/xxx/Documents/Projects/yyyy/MGYX/mediasoup/zzzz-android/mediasoup-client/deps/libmediasoupclient/src/PeerConnection.cpp:234) [arm64-v8a]
10 #9 pc 000000000021f6f4 libmediasoupclient_so.so StopReceiving (/Users/xxx/Documents/Projects/yyyy/MGYX/mediasoup/zzzz-android/mediasoup-client/deps/libmediasoupclient/src/Handler.cpp:591) [arm64-v8a]
11 #10 pc 0000000000242f98 libmediasoupclient_so.so OnClose (/Users/xxx/Documents/Projects/yyyy/MGYX/mediasoup/zzzz-android/mediasoup-client/deps/libmediasoupclient/src/Transport.cpp:427) [arm64-v8a]
12 #11 pc 0000000000242ff8 libmediasoupclient_so.so non-virtual thunk to mediasoupclient::RecvTransport::OnClose(mediasoupclient::Consumer*) (/Users/xxx/Documents/Projects/yyyy/MGYX/mediasoup/zzzz-android/mediasoup-client/deps/libmediasoupclient/src/Transport.cpp:0) [arm64-v8a]
13 #12 pc 0000000000214de8 libmediasoupclient_so.so Close (/Users/xxx/Documents/Projects/yyyy/MGYX/mediasoup/zzzz-android/mediasoup-client/deps/libmediasoupclient/src/Consumer.cpp:110) [arm64-v8a]
14 #13 pc 00000000001c8eac libmediasoupclient_so.so JNI_Consumer_Close (/Users/xxx/Documents/Projects/yyyy/MGYX/mediasoup/zzzz-android/mediasoup-client/src/main/jni/consumer_jni.cpp:127) [arm64-v8a]
15 #14 pc 00000000001c8de4 libmediasoupclient_so.so Java_org_mediasoup_droid_Consumer_nativeClose (../../../../src/main/jni/generated_mediasoupclient_jni/jni/Consumer_jni.h:164) [arm64-v8a]

androidstudio build failed

undefined reference to `rtc::Thread::SetName(std::__ndk1::basic_string<char, std::__ndk1::char_traits, std::__ndk1::allocator > const&, void const*)'

Video codec not recognized

Android client cannot play stream(consume) because of this error from libwebrtc:
Unrecognized profile 4 for video/mp4v-es
I checked by codec info application, phone supports MPEG-4 Visual.
I think we need codec setting from demo website

Producer connection state stuck to "checking"

Basically the title. I am following all the proper steps, but I have never been able to hear anything coming from my device.

Here is my send transport listener :

 val listener = object: SendTransport.Listener
 {
            override fun onConnect(transport: Transport?, dtlsParameters: String?)
            {
                val params = JSONObject()
                params.put("method", "connectWebRtcTransport")

                val data = JSONObject()
                data.put("transportId", sendTransport.id)
                data.put("dtlsParameters", dtlsParameters)

                params.put("data", data)

                socket.send("request", params)
            }

            override fun onProduce(transport: Transport?, kind: String?, rtpParameters: String?, appData: String?): String
            {
                val params = JSONObject()
                params.put("method", "produce")

                val data = JSONObject()
                data.put("transportId", sendTransport.id)
                data.put("kind", kind)
                data.put("rtpParameters", JSONObject(rtpParameters))
                data.put("appData", appData)

                params.put("data", data)

                val latch = CountDownLatch(1)

                socket.emit("request", params, Ack { args ->

                    val idObj = args.firstOrNull { arg -> arg is JSONObject } as JSONObject
                    sendTransportRemoteId = idObj.getString("id")

                    latch.countDown()
                })

                latch.await()

                Log.i("Socket", "Returning = $sendTransportRemoteId // Thread = ${Thread.currentThread().name} // State = ${transport?.connectionState}")

                return sendTransportRemoteId
            }

            override fun onConnectionStateChange(transport: Transport?, connectionState: String?) {
                Log.i("Socket", "Send Transport : ${transport.toString()}, connectionState : $connectionState")
            }
        }

createRecvTransport doest work correctly

mMediasoupDevice.createRecvTransport(recvTransportListener, id, iceParameters, iceCandidates, dtlsParameters, null);

private RecvTransport.Listener recvTransportListener =
new RecvTransport.Listener() {

            private String listenerTAG = TAG + "_RecvTrans";

            @Override
            public void onConnect(Transport transport, String dtlsParameters) {
                Logger.e(listenerTAG, "onConnect()");
                
            }

            @Override
            public void onConnectionStateChange(Transport transport, String connectionState) {
                Logger.e(listenerTAG, "onConnectionStateChange: " + connectionState);
            }
        };

recvTransportListener doest not fire to event onConnect or onConnectionStateChange? Can you help me?

编译失败

clone 最新的dev代码, 用Android Studio编译出错. 是否有什么环境需要特别的指定.deps/webrtc的库是否可以正常使用?
求大神指点, 万分感谢

AILED: : && /opt/android/android-sdks/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++  --target=x86_64-none-linux-android21 --gcc-toolchain=/opt/android/android-sdks/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64 --sysroot=/opt/android/android-sdks/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security   -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc_real.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,libmediasoupclient_so.so -o ../../../../build/intermediates/cmake/debug/obj/x86_64/libmediasoupclient_so.so CMakeFiles/mediasoupclient_so.dir/src/main/jni/jni_generator_helper.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/jni_onload.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/scoped_java_ref.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/java_types.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/consumer_jni.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/device_jni.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/logger_jni.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/mediasoup_client_jni.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/peerconnection_jni.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/producer_jni.cpp.o CMakeFiles/mediasoupclient_so.dir/src/main/jni/transport_jni.cpp.o CMakeFiles/mediasoupclient_so.dir/src/androidTest/jni/parameters_jni.cpp.o CMakeFiles/mediasoupclient_so.dir/deps/libmediasoupclient/test/src/fakeParameters.cpp.o  -landroid -llog -lOpenSLES deps/libmediasoupclient/libmediasoupclient.a deps/libmediasoupclient/libsdptransform/libsdptransform.a -Wl,--whole-archive ../../../../deps/webrtc/lib/x86_64/libwebrtc.a -Wl,--no-whole-archive -latomic -lm && :
/opt/android/android-sdks/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/lib/gcc/x86_64-linux-android/4.9.x/../../../../x86_64-linux-android/bin/ld: error: ../../../../deps/webrtc/lib/x86_64/libwebrtc.a:1:9: syntax error, unexpected STRING
/opt/android/android-sdks/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/lib/gcc/x86_64-linux-android/4.9.x/../../../../x86_64-linux-android/bin/ld: error: ../../../../deps/webrtc/lib/x86_64/libwebrtc.a: not an object or archive
../../../../deps/webrtc/src/rtc_base/checks.h:223: error: undefined reference to 'rtc::webrtc_checks_impl::FatalLog(char const*, int, char const*, rtc::webrtc_checks_impl::CheckArgType const*, ...)'
../../../../deps/webrtc/src/rtc_base/checks.h:223: error: undefined reference to 'rtc::webrtc_checks_impl::FatalLog(char const*, int, char const*, rtc::webrtc_checks_impl::CheckArgType const*, ...)'
../../../../deps/webrtc/src/rtc_base/checks.h:223: error: undefined reference to 'rtc::webrtc_checks_impl::FatalLog(char const*, int, char const*, rtc::webrtc_checks_impl::CheckArgType const*, ...)'
../../../../deps/webrtc/src/rtc_base/checks.h:223: error: undefined reference to 'rtc::webrtc_checks_impl::FatalLog(char const*, int, char const*, rtc::webrtc_checks_impl::CheckArgType const*, ...)'
/home/luosh/work/project/mediasoup-client-android/mediasoup-client/src/main/jni/jni_generator_helper.cpp:26: error: undefined reference to 'webrtc::GetClass(_JNIEnv*, char const*)'
../../../../deps/webrtc/src/sdk/android/native_api/jni/scoped_java_ref.h:185: error: undefined reference to 'webrtc::AttachCurrentThreadIfNeeded()'
/home/luosh/work/project/mediasoup-client-android/mediasoup-client/src/main/jni/jni_onload.cpp:11: error: undefined reference to 'webrtc::jni::InitGlobalJniVariables(_JavaVM*)'
../../../../deps/webrtc/src/sdk/android/src/jni/class_reference_holder.h:24: error: undefined reference to 'webrtc::jni::GetEnv()'
../../../../deps/webrtc/src/sdk/android/src/jni/class_reference_holder.h:24: error: undefined reference to 'webrtc::InitClassLoader(_JNIEnv*)'
/home/luosh/work/project/mediasoup-client-android/mediasoup-client/deps/libmediasoupclient/src/ortc.cpp:1622: error: undefined reference to 'webrtc::H264::GenerateProfileLevelIdForAnswer(std::__ndk1::map<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::less<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, std::__ndk1::allocator<std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > > > > const&, std::__ndk1::map<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::less<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, std::__ndk1::allocator<std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > > > > const&, std::__ndk1::map<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::less<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, std::__ndk1::allocator<std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > > > >*)'

app is crash

vsersion 3.0.4-beta-2 is crash
/org.mediasoup.client.demo E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.mediasoup.client.demo, PID: 13676
java.lang.UnsatisfiedLinkError: No implementation found for void org.mediasoup.droid.Logger.nativeSetDefaultHandler() (tried Java_org_mediasoup_droid_Logger_nativeSetDefaultHandler and Java_org_mediasoup_droid_Logger_nativeSetDefaultHandler__)
at org.mediasoup.droid.Logger.nativeSetDefaultHandler(Native Method)
at org.mediasoup.droid.Logger.setDefaultHandler(Logger.java:39)
at org.mediasoup.client.demo.Application.onCreate(Application.java:13)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1162)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6717)
at android.app.ActivityThread.access$2000(ActivityThread.java:273)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2020)
at android.os.Handler.dispatchMessage(Handler.java:112)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7625)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)

Video consumer only support Software Decoder

I add log to trace flow of code from mediasoupclient to webrtc.
for video consuming, it uses libvpx which is only software based.
2020-05-31 18:19:35.083 15115-15247/? I/libvpx_vp8_decoder.cc: (line 159): LibvpxVp8Decoder::Decode

Can we switch to hardware decoder of android such as OMX?

Failed to set remote audio description send parameters

use mediasoup demo server.

07-02 15:34:11.806 23566-23625/org.mediasoup.droid.demo E/RoomClient: "newConsumer" request failed:
07-02 15:34:11.806 23566-23625/org.mediasoup.droid.demo E/RoomClient: org.mediasoup.droid.MediasoupException: Failed to set remote offer sdp: Failed to set remote audio description send parameters.
07-02 15:34:11.807 23566-23625/org.mediasoup.droid.demo E/RoomClient: org.mediasoup.droid.MediasoupException: Failed to set remote offer sdp: Failed to set remote audio description send parameters.
at org.mediasoup.droid.RecvTransport.nativeConsume(Native Method)
at org.mediasoup.droid.RecvTransport.consume(RecvTransport.java:48)
at org.mediasoup.droid.lib.RoomClient.onNewConsumer(RoomClient.java:1052)
at org.mediasoup.droid.lib.RoomClient.access$300(RoomClient.java:38)
at org.mediasoup.droid.lib.RoomClient$2.lambda$onRequest$2$RoomClient$2(RoomClient.java:596)
at org.mediasoup.droid.lib.-$$Lambda$RoomClient$2$8B9dCuDRW2LL5UzQlkr80_pqLG0.run(lambda)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.os.HandlerThread.run(HandlerThread.java:61)

JNI crashes on WebRtcAudioRecord.nativeDataIsRecorded and WebRtcAudioTrack.nativeGetPlayoutData

I'm using this library successfully, but sometimes get these two crashes indicating that there are missing native JNI functions:

First: org.webrtc.voiceengine.WebRtcAudioRecord.nativeDataIsRecorded

----- Unhandled Exception: No implementation found for void org.webrtc.voiceengine.WebRtcAudioRecord.nativeDataIsRecorded(int, long) (tried Java_org_webrtc_voiceengine_WebRtcAudioRecord_nativeDataIsRecorded and Java_org_webrtc_voiceengine_WebRtcAudioRecord_nativeDataIsRecorded__IJ) -----
java.lang.UnsatisfiedLinkError: No implementation found for void org.webrtc.voiceengine.WebRtcAudioRecord.nativeDataIsRecorded(int, long) (tried Java_org_webrtc_voiceengine_WebRtcAudioRecord_nativeDataIsRecorded and Java_org_webrtc_voiceengine_WebRtcAudioRecord_nativeDataIsRecorded__IJ)
--------- Stack trace ---------
org.webrtc.voiceengine.WebRtcAudioRecord.nativeDataIsRecorded(Native Method)
org.webrtc.voiceengine.WebRtcAudioRecord.access$600(WebRtcAudioRecord.java:26)
org.webrtc.voiceengine.WebRtcAudioRecord$AudioRecordThread.run(WebRtcAudioRecord.java:166)

Second: org.webrtc.voiceengine.WebRtcAudioTrack.nativeGetPlayoutData (already reported)

----- Unhandled Exception: No implementation found for void org.webrtc.voiceengine.WebRtcAudioTrack.nativeGetPlayoutData(int, long) (tried Java_org_webrtc_voiceengine_WebRtcAudioTrack_nativeGetPlayoutData and Java_org_webrtc_voiceengine_WebRtcAudioTrack_nativeGetPlayoutData__IJ) -----
java.lang.UnsatisfiedLinkError: No implementation found for void org.webrtc.voiceengine.WebRtcAudioTrack.nativeGetPlayoutData(int, long) (tried Java_org_webrtc_voiceengine_WebRtcAudioTrack_nativeGetPlayoutData and Java_org_webrtc_voiceengine_WebRtcAudioTrack_nativeGetPlayoutData__IJ)
--------- Stack trace ---------
org.webrtc.voiceengine.WebRtcAudioTrack.nativeGetPlayoutData(Native Method)
org.webrtc.voiceengine.WebRtcAudioTrack.access$400(WebRtcAudioTrack.java:28)
org.webrtc.voiceengine.WebRtcAudioTrack$AudioTrackThread.run(WebRtcAudioTrack.java:147)

Android client opus does not support

I’m using https://github.com/haiyangwu/mediasoup-client-android for my android device.

I know opus support >= android 5.0. My sony xperia z5 android 7.0 is play ok. But my android box android 10 can’t play. I saw log “router.canConsume = false”. I searching and know new android os need change to .ogg to can play opus. But i don’t know how to implement it to my android device.

Really thanks to someone who can help me!

WebSocket Disconnected

Hi , we deployed the latest code on our own server, when i am trying to connect to server it is showing Websocket disconnected

使用构建webrtc的构建命令无法得到.a文件,大家知道如何解决么?

webrtc-android-build

Precompiled binaries for webrtc android native

  • Build m79 with command like below
./tools_webrtc/android/build_aar.py --extra-gn-args 'is_debug=false is_component_build=false is_clang=true rtc_include_tests=false rtc_use_h264=true rtc_enable_protobuf=false use_rtti=true use_custom_libcxx=false' --build-dir ./out/release-build/

使用改命令后,无法找到"libwebrtc.a"文件。

Package manager support?

Would it be possible for you to upload this library to maven?
This would make the library a lot easier to implement.

Would love to see some documentation

Hi @haiyangwu,

It would be really useful having documentation about the scope of the project, the installation and use guide, etc.

Any help you may need please let us know to the mediasoup team :-)

Error during make project or run

Hello @haiyangwu
I am facing an issue during make project, can you help me: see error

AILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':mediasoup-client:externalNativeBuildDebug'.

Build command failed.
Error while executing process /home/gwl/Android/Sdk/cmake/3.6.4111459/bin/cmake with arguments {--build /opt/AndroidWork/mediasoup-demo-android/mediasoup-client/.cxx/cmake/debug/x86 --target mediasoupclient_so}
[1/29] Building CXX object deps/libmediasoupclient/libsdptransform/CMakeFiles/sdptransform.dir/src/grammar.cpp.o
[2/29] Building CXX object deps/libmediasoupclient/libsdptransform/CMakeFiles/sdptransform.dir/src/parser.cpp.o
[3/29] Building CXX object deps/libmediasoupclient/libsdptransform/CMakeFiles/sdptransform.dir/src/writer.cpp.o
[4/29] Linking CXX static library deps/libmediasoupclient/libsdptransform/libsdptransform.a
[5/29] Building CXX object deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/scalabilityMode.cpp.o
[6/29] Building CXX object deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/Consumer.cpp.o
[7/29] Building CXX object deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/Device.cpp.o
[8/29] Building CXX object deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/Handler.cpp.o
[9/29] Building CXX object deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/Logger.cpp.o
[10/29] Building CXX object deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/mediasoupclient.cpp.o
FAILED: /home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=i686-none-linux-android18 --gcc-toolchain=/home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64 --sysroot=/home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot -DMSC_LOG_DEV=1 -DMSC_LOG_TRACE=1 -DWEBRTC_POSIX -I../../../../deps/libmediasoupclient/include -I../../../../deps/libmediasoupclient/deps/libsdptransform/include -I/opt/webrtc/linux -I/opt/webrtc/linux/third_party/abseil-cpp -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -std=gnu++11 -Wall -MD -MT deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/Device.cpp.o -MF deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/Device.cpp.o.d -o deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/Device.cpp.o -c /opt/AndroidWork/mediasoup-demo-android/mediasoup-client/deps/libmediasoupclient/src/Device.cpp
In file included from /opt/AndroidWork/mediasoup-demo-android/mediasoup-client/deps/libmediasoupclient/src/Device.cpp:4:
In file included from ../../../../deps/libmediasoupclient/include/Device.hpp:5:
In file included from ../../../../deps/libmediasoupclient/include/Handler.hpp:4:
In file included from ../../../../deps/libmediasoupclient/include/PeerConnection.hpp:5:
../../../../deps/libmediasoupclient/deps/libsdptransform/include/json.hpp:1799:1: warning: 'tuple_size' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
class tuple_size<::nlohmann::detail::iteration_proxy_value>
^
/home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/__tuple:25:22: note: did you mean class here?
template struct _LIBCPP_TEMPLATE_VIS tuple_size;
^
In file included from /opt/AndroidWork/mediasoup-demo-android/mediasoup-client/deps/libmediasoupclient/src/Device.cpp:4:
In file included from ../../../../deps/libmediasoupclient/include/Device.hpp:5:
In file included from ../../../../deps/libmediasoupclient/include/Handler.hpp:4:
../../../../deps/libmediasoupclient/include/PeerConnection.hpp:6:10: fatal error: 'api/peer_connection_interface.h' file not found
#include "api/peer_connection_interface.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning and 1 error generated.
FAILED: /home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=i686-none-linux-android18 --gcc-toolchain=/home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64 --sysroot=/home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot -DMSC_LOG_DEV=1 -DMSC_LOG_TRACE=1 -DWEBRTC_POSIX -I../../../../deps/libmediasoupclient/include -I../../../../deps/libmediasoupclient/deps/libsdptransform/include -I/opt/webrtc/linux -I/opt/webrtc/linux/third_party/abseil-cpp -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -std=gnu++11 -Wall -MD -MT deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/Consumer.cpp.o -MF deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/Consumer.cpp.o.d -o deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/Consumer.cpp.o -c /opt/AndroidWork/mediasoup-demo-android/mediasoup-client/deps/libmediasoupclient/src/Consumer.cpp
In file included from /opt/AndroidWork/mediasoup-demo-android/mediasoup-client/deps/libmediasoupclient/src/Consumer.cpp:4:
In file included from ../../../../deps/libmediasoupclient/include/Consumer.hpp:5:
../../../../deps/libmediasoupclient/deps/libsdptransform/include/json.hpp:1799:1: warning: 'tuple_size' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
class tuple_size<::nlohmann::detail::iteration_proxy_value>
^
/home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/__tuple:25:22: note: did you mean class here?
template struct _LIBCPP_TEMPLATE_VIS tuple_size;
^
In file included from /opt/AndroidWork/mediasoup-demo-android/mediasoup-client/deps/libmediasoupclient/src/Consumer.cpp:4:
../../../../deps/libmediasoupclient/include/Consumer.hpp:6:10: fatal error: 'api/media_stream_interface.h' file not found
#include "api/media_stream_interface.h" // MediaStreamTrackInterface
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning and 1 error generated.
FAILED: /home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=i686-none-linux-android18 --gcc-toolchain=/home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64 --sysroot=/home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot -DMSC_LOG_DEV=1 -DMSC_LOG_TRACE=1 -DWEBRTC_POSIX -I../../../../deps/libmediasoupclient/include -I../../../../deps/libmediasoupclient/deps/libsdptransform/include -I/opt/webrtc/linux -I/opt/webrtc/linux/third_party/abseil-cpp -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -std=gnu++11 -Wall -MD -MT deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/mediasoupclient.cpp.o -MF deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/mediasoupclient.cpp.o.d -o deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/mediasoupclient.cpp.o -c /opt/AndroidWork/mediasoup-demo-android/mediasoup-client/deps/libmediasoupclient/src/mediasoupclient.cpp
In file included from /opt/AndroidWork/mediasoup-demo-android/mediasoup-client/deps/libmediasoupclient/src/mediasoupclient.cpp:4:
In file included from ../../../../deps/libmediasoupclient/include/mediasoupclient.hpp:4:
In file included from ../../../../deps/libmediasoupclient/include/Device.hpp:5:
In file included from ../../../../deps/libmediasoupclient/include/Handler.hpp:4:
In file included from ../../../../deps/libmediasoupclient/include/PeerConnection.hpp:5:
../../../../deps/libmediasoupclient/deps/libsdptransform/include/json.hpp:1799:1: warning: 'tuple_size' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
class tuple_size<::nlohmann::detail::iteration_proxy_value>
^
/home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/__tuple:25:22: note: did you mean class here?
template struct _LIBCPP_TEMPLATE_VIS tuple_size;
^
In file included from /opt/AndroidWork/mediasoup-demo-android/mediasoup-client/deps/libmediasoupclient/src/mediasoupclient.cpp:4:
In file included from ../../../../deps/libmediasoupclient/include/mediasoupclient.hpp:4:
In file included from ../../../../deps/libmediasoupclient/include/Device.hpp:5:
In file included from ../../../../deps/libmediasoupclient/include/Handler.hpp:4:
../../../../deps/libmediasoupclient/include/PeerConnection.hpp:6:10: fatal error: 'api/peer_connection_interface.h' file not found
#include "api/peer_connection_interface.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning and 1 error generated.
FAILED: /home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=i686-none-linux-android18 --gcc-toolchain=/home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64 --sysroot=/home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot -DMSC_LOG_DEV=1 -DMSC_LOG_TRACE=1 -DWEBRTC_POSIX -I../../../../deps/libmediasoupclient/include -I../../../../deps/libmediasoupclient/deps/libsdptransform/include -I/opt/webrtc/linux -I/opt/webrtc/linux/third_party/abseil-cpp -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -std=gnu++11 -Wall -MD -MT deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/Handler.cpp.o -MF deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/Handler.cpp.o.d -o deps/libmediasoupclient/CMakeFiles/mediasoupclient.dir/src/Handler.cpp.o -c /opt/AndroidWork/mediasoup-demo-android/mediasoup-client/deps/libmediasoupclient/src/Handler.cpp
In file included from /opt/AndroidWork/mediasoup-demo-android/mediasoup-client/deps/libmediasoupclient/src/Handler.cpp:4:
In file included from ../../../../deps/libmediasoupclient/include/Handler.hpp:4:
In file included from ../../../../deps/libmediasoupclient/include/PeerConnection.hpp:5:
../../../../deps/libmediasoupclient/deps/libsdptransform/include/json.hpp:1799:1: warning: 'tuple_size' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
class tuple_size<::nlohmann::detail::iteration_proxy_value>
^
/home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/__tuple:25:22: note: did you mean class here?
template struct _LIBCPP_TEMPLATE_VIS tuple_size;
^
In file included from /opt/AndroidWork/mediasoup-demo-android/mediasoup-client/deps/libmediasoupclient/src/Handler.cpp:4:
In file included from ../../../../deps/libmediasoupclient/include/Handler.hpp:4:
../../../../deps/libmediasoupclient/include/PeerConnection.hpp:6:10: fatal error: 'api/peer_connection_interface.h' file not found
#include "api/peer_connection_interface.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning and 1 error generated.
In file included from /opt/AndroidWork/mediasoup-demo-android/mediasoup-client/deps/libmediasoupclient/src/scalabilityMode.cpp:4:
In file included from ../../../../deps/libmediasoupclient/include/scalabilityMode.hpp:4:
../../../../deps/libmediasoupclient/deps/libsdptransform/include/json.hpp:1799:1: warning: 'tuple_size' defined as a class template here but previously declared as a struct template [-Wmismatched-tags]
class tuple_size<::nlohmann::detail::iteration_proxy_value>
^
/home/gwl/Android/Sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1/__tuple:25:22: note: did you mean class here?
template struct _LIBCPP_TEMPLATE_VIS tuple_size;
^
1 warning generated.
ninja: build stopped: subcommand failed.

I am using below path in local.properties
webrtc.include.path=/opt/webrtc/linux/
webrtc.binary.path=/opt/webrtc/linux/src/out/android-webrtc-m74
webrtc.jar.path=/opt/webrtc/linux/src/out/android-webrtc-m74/lib.java/sdk/android

using v7a in 64 cpu cause peerview show nothing

when i use beta-3 version,Compiling client deemo using v8a is normally, but only using v7a will report an error , the remote peerview doesn't work and show nothing , it cause:

E/RoomClient: "newConsumer" request failed:
E/RoomClient: org.mediasoup.droid.MediasoupException: Session error code: ERROR_CONTENT. Session error description: Failed to set remote audio description send parameters..
E/RoomClient: org.mediasoup.droid.MediasoupException: Session error code: ERROR_CONTENT. Session error description: Failed to set remote audio description send parameters..
at org.mediasoup.droid.RecvTransport.nativeConsume(Native Method)
at org.mediasoup.droid.RecvTransport.consume(RecvTransport.java:48)
at org.mediasoup.droid.lib.RoomClient.onNewConsumer(RoomClient.java:1052)
at org.mediasoup.droid.lib.RoomClient.access$300(RoomClient.java:38)
at org.mediasoup.droid.lib.RoomClient$2.lambda$onRequest$2$RoomClient$2(RoomClient.java:596)
at org.mediasoup.droid.lib.-$$Lambda$RoomClient$2$8B9dCuDRW2LL5UzQlkr80_pqLG0.run(lambda)
at android.os.Handler.handleCallback(Handler.java:755)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
E/RoomClient: unknown protoo notification.method downlinkBwe

No implementation found for void org.webrtc.voiceengine.WebRtcAudioTrack.nativeGetPlayoutData

crack while exit room

2020-08-01 17:33:58.484 31238-31432/com.quickfly.rtc I/mediasoupclient-jni: [TRACE] transport_jni::JNI_SendTransport_FreeTransport()
2020-08-01 17:33:58.487 31238-31448/com.quickfly.rtc I/org.webrtc.Logging: WebRtcAudioManager: dispose@[name=Thread-22, id=12486]
2020-08-01 17:33:58.493 31238-31432/com.quickfly.rtc I/mediasoupclient-jni: [TRACE] transport_jni::JNI_Transport_Close()
2020-08-01 17:33:58.493 31238-31432/com.quickfly.rtc I/mediasoupclient-jni: [TRACE] transport_jni::JNI_RecvTransport_GetNativeTransport()
2020-08-01 17:33:58.493 31238-31432/com.quickfly.rtc I/mediasoupclient-jni: [TRACE] Transport::Close()
2020-08-01 17:33:58.493 31238-31432/com.quickfly.rtc I/mediasoupclient-jni: [TRACE] Transport::Close()
2020-08-01 17:33:58.493 31238-31432/com.quickfly.rtc I/mediasoupclient-jni: [TRACE] Handler::Close()
2020-08-01 17:33:58.493 31238-31432/com.quickfly.rtc I/mediasoupclient-jni: [TRACE] PeerConnection::Close()
2020-08-01 17:33:58.500 31238-31455/com.quickfly.rtc I/mediasoupclient-jni: [TRACE] Handler::OnIceConnectionChange()
2020-08-01 17:33:58.500 31238-31455/com.quickfly.rtc I/mediasoupclient-jni: [TRACE] Transport::OnConnectionStateChange()
2020-08-01 17:33:58.500 31238-31455/com.quickfly.rtc D/RoomClient_RecvTrans: onConnectionStateChange: closed
2020-08-01 17:33:58.501 31238-31455/com.quickfly.rtc I/mediasoupclient-jni: [TRACE] PeerConnection::OnSignalingChange()
2020-08-01 17:33:58.501 31238-31455/com.quickfly.rtc D/mediasoupclient-jni: [DEBUG] PeerConnection::OnSignalingChange() | [newState:closed]
2020-08-01 17:33:58.507 31238-31396/com.quickfly.rtc I/org.webrtc.Logging: EglRenderer: video_rendererDropping frame - No surface
2020-08-01 17:33:58.523 31238-31528/com.quickfly.rtc E/zygote64: No implementation found for void org.webrtc.voiceengine.WebRtcAudioTrack.nativeGetPlayoutData(int, long) (tried Java_org_webrtc_voiceengine_WebRtcAudioTrack_nativeGetPlayoutData and Java_org_webrtc_voiceengine_WebRtcAudioTrack_nativeGetPlayoutData__IJ)
2020-08-01 17:33:58.523 31238-31528/com.quickfly.rtc W/zygote64: Got a deoptimization request on un-deoptimizable method void org.webrtc.voiceengine.WebRtcAudioTrack.nativeGetPlayoutData(int, long)

Invalid Codec

While running on emulator it is showing me invalid codec.mimetype error

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.