Intel® Collaboration Suite for WebRTC
Community support and discussions on the Intel® Collaboration Suite for WebRTC (Intel® CS for WebRTC).

v3.2.1 Android遇到的问题

han_x_
Beginner
883 Views

你好,v3.2.1的Android端偶尔遇到这样的错误。

异常日志:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
    at com.intel.webrtc.conference.ConferenceClient$1.call(ConferenceClient.java:331)
    at io.socket.client.Socket.onack(Socket.java:379)
    at io.socket.client.Socket.onpacket(Socket.java:307)
    at io.socket.client.Socket.access$100(Socket.java:19)
    at io.socket.client.Socket$2$2.call(Socket.java:111)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.client.Manager.ondecoded(Manager.java:407)
    at io.socket.client.Manager.access$1600(Manager.java:20)
    at io.socket.client.Manager$7.call(Manager.java:383)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.parser.Parser$Decoder.add(Parser.java:157)
    at io.socket.client.Manager.ondata(Manager.java:399)
    at io.socket.client.Manager.access$1000(Manager.java:20)
    at io.socket.client.Manager$2.call(Manager.java:350)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.engineio.client.Socket.onPacket(Socket.java:497)
    at io.socket.engineio.client.Socket.access$900(Socket.java:30)
    at io.socket.engineio.client.Socket$5.call(Socket.java:299)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.engineio.client.Transport.onPacket(Transport.java:127)
    at io.socket.engineio.client.Transport.onData(Transport.java:119)
    at io.socket.engineio.client.transports.WebSocket.access$300(WebSocket.java:32)
    at io.socket.engineio.client.transports.WebSocket$1$3.run(WebSocket.java:111)
    at io.socket.thread.EventThread$2.run(EventThread.java:75)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    at java.lang.Thread.run(Thread.java:818)

 

反编译ConferenceClient$1.class,找到源代码:

    public transient void call(Object aobj[])
    {
        if(aobj[0] != null && (aobj[0].toString().equals("error") || aobj[0].toString().equals("timeout")))
        {
            ConferenceClient.access$000(ConferenceClient.this).remove(((LocalStream)val$stream).getMediaStream().label());
            if(val$callback != null)
                val$callback.onFailure(new WoogeenException((new StringBuilder()).append("Server replied with error message: ").append(aobj[0].toString()).toString()));
            return;
        } else
        {

            val$stream.setId(aobj[1].toString());
            aobj = new ConferencePeerConnectionChannel(ConferenceClient.access$100(ConferenceClient.this), ConferenceClient.this, (LocalStream)val$stream);
            ConferenceClient.access$200(ConferenceClient.this).add(((Object) (aobj)));
            ((ConferencePeerConnectionChannel) (aobj)).sendOffer();
            return;
        }
    }

 

aobj[1]没判断是否为null就取值,是否合适?

请帮忙看看这个问题。多谢!

0 Kudos
8 Replies
He_Z_Intel
Employee
883 Views

Hi, Han

could you please provide the server version please?

and i assume you only called publish(), right? could you please provide detailed reproduce procedure?

 

0 Kudos
He_Z_Intel
Employee
883 Views

你好,

使用的server(MCU) 是哪个版本呢?

publish时候的具体参数是什么呢?可以提供一下复现的具体步骤吗?谢谢

0 Kudos
han_x_
Beginner
883 Views

服务端和Android客户端使用的都是v3.2.1。发布这块代码是这样:

LocalCameraStreamParameters lcsp = new LocalCameraStreamParameters(true, true);
lcsp.setCamera(LocalCameraStreamParameters.CameraType.BACK);
lcsp.setResolution(640, 480);
LocalCameraStream mLocalStream = new LocalCameraStream(lcsp);
PublishOptions options = new PublishOptions();
options.setMaximumVideoBandwidth(300);
options.setMaximumAudioBandwidth(50);
options.setVideoCodec(MediaCodec.VideoCodec.H264);//或VP8
ConferenceClient mRoom;
mRoom.publish(mLocalStream, options, new ActionCallback<Void>(){

...

}

这个异常偶尔出现,没有规律,我各种尝试没法复现。比如Android端正在跟pc端视频会议,音视频都正常,过一阵子就可能出现这个异常。v3.2.1之前的版本都没发现过这个问题。

0 Kudos
He_Z_Intel
Employee
883 Views

Hi Han

感谢让我们得知这个问题,我们会尽快复现并查找原因。

0 Kudos
han_x_
Beginner
883 Views

在Android SDK的conferenceSample中能复现了这个异常:

1、频繁的点击按钮connect(join)、disconcert(leave)、Start Video(publish)、Stop Video(unpublish),间隔时间随机(几秒~30秒),conferenceSample会闪退。

2、在保持connect的条件下,频繁的点击按钮Start Video(publish)、Stop Video(unpublish),间隔时间随机(几秒~30秒),conferenceSample会闪退。

在我根据conferenceSample修改的代码中也是这样,多次publish、unpublish就会异常。

请帮忙看看,多谢。

0 Kudos
He_Z_Intel
Employee
882 Views

han x. wrote:

在Android SDK的conferenceSample中能复现了这个异常:

1、频繁的点击按钮connect(join)、disconcert(leave)、Start Video(publish)、Stop Video(unpublish),间隔时间随机(几秒~30秒),conferenceSample会闪退。

2、在保持connect的条件下,频繁的点击按钮Start Video(publish)、Stop Video(unpublish),间隔时间随机(几秒~30秒),conferenceSample会闪退。

在我根据conferenceSample修改的代码中也是这样,多次publish、unpublish就会异常。

请帮忙看看,多谢。

 

出现的异常是指上面提到的异常吗?我们会在下一个版本修复这个问题。 谢谢

0 Kudos
han_x_
Beginner
882 Views

conferenceSample里没加异常捕获,异常时直接闪退,logcat看不到具体的异常信息。我根据conferenceSample改的代码加了异常捕获,就是一楼提到的空指针异常。二者现象都是一样的,都是频繁发布、取消发布时出现了应用闪退。我给conferenceSample加上异常捕获再确认下。

0 Kudos
han_x_
Beginner
882 Views

v3.3后再没出现过这种问题。

0 Kudos
Reply