安卓WebRTC崩溃问题

4

我试图通过按下返回按钮来断开通话,但应用程序崩溃并显示此错误。我正在使用Pierre Chabardes在eclipse上的AndroidRTC应用程序。 https://github.com/pchab/AndroidRTC

我还通过Linux机器构建了最新的WebRTC libjingle_peerconnection_so.solibjingle_peerconnection.jar

04-10 12:20:16.695: E/rtc(29060): #
04-10 12:20:16.695: E/rtc(29060): # Fatal error in ../../talk/app/webrtc/java/jni/peerconnection_jni.cc, line 926
04-10 12:20:16.695: E/rtc(29060): # Check failed: 0 == (reinterpret_cast<MediaSourceInterface*>(j_p))->Release() (0 vs. 1)
04-10 12:20:16.695: E/rtc(29060): # Unexpected refcount.
04-10 12:20:16.695: E/rtc(29060): #
04-10 12:20:16.695: A/libc(29060): Fatal signal 6 (SIGABRT), code -6 in tid 29060 

@Haesh,你有没有为这个问题找到任何解决方案? - Arfan Mirza
有什么新消息吗?我在使用WebRTC Android库时遇到了同样的问题。 - tryp
@ArfanMirza 请查看我下面的答案。它可能会对你有所帮助。 - Haresh Chaudhary
@tryp 请查看下面的解决方案,它可能会对您有所帮助。 - Haresh Chaudhary
1个回答

6
经过多个小时的测试,我发现在onDestroy()方法中创建的Socket没有被正确地关闭,代码位于行上。
大概就像这样:
public void onDestroy() {
    for (Peer peer : peers.values()) {
        peer.pc.dispose();
    }
    videoSource.dispose();
    factory.dispose();
    client.disconnect();
    client.close();
}

这样做需要更加接近IT技术:

public void onDestroy() {
    for (Peer peer : peers.values()) {
        peer.pc.dispose();
    }
    videoSource.dispose();
    factory.dispose();
    client.off();<---- You need to turn OFF and then disconnect  and then close it.
    client.disconnect();
    client.close();
}

你使用了哪个版本的libjingle?我使用的是8981版本,但是client.off()无法工作。 - thanhtv
1
嗨,Harsh,谢谢。我使用这个修复了崩溃问题,我注释掉了//videoSource.dispose();并添加了videoSource.stop();。 - Avneesh
现在我遇到了禁用/启用视频流的问题,有人可以帮忙吗? - Avneesh
尝试通过videoSource.stop()停止视频流,然后您需要通过videoSource.dispose()处理视频流,只有这样才能在下一次启用流,否则您的应用程序将崩溃。 - Haresh Chaudhary
1
我在另一個瀏覽器上登錄了StackOverflow,只是為了給這個答案點贊。謝謝Chaudhary saab .. ;) - SRB Bans
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接