Opentok on streamCreated 订阅使移动 chrome 冻结



我正在opentok平台和vue.js上开发webRTC聊天。虽然在desctop和移动Firefox浏览器上一切正常,但移动chrome在尝试订阅event.stream时会挂起。奇怪的是,如果我激活开发人员工具,那么它将按预期在移动 chrome 上运行,因此我无法调试此错误日志。我已经为此绞尽脑汁了三天了。如果有人能帮助我,我将不胜感激!这是我代码的相关部分:

    //start the live vicdeo sessiion
    startLivevideoSession: function(session){
        this.call = true; //set call to true
        //initiate opentok session
        this.LiveVideo_session = OT.initSession(session.apiKey, session.session)
        //define on streamcreated method
        this.LiveVideo_session.on('streamCreated', function(event) {
                //this is the problem:
                this.LiveVideo_session.subscribe(event.stream, 'stream_video1', {
                      height: '100%',
                      width: '100%',
                      showControls: true,
                      style: {
                        audioLevelDisplayMode: 'auto',
                        buttonDisplayMode: 'off',
                        nameDisplayMode: 'off',
                        videoDisabledDisplayMode: 'auto',
                        showArchiveStatus: false
                      }
                }, this.handleError)
                //problem ends

            }.bind(this))
        //define on sessionDisconnected method
        this.LiveVideo_session.on("sessionDisconnected", function (event) {
                if(this.call){
                    this.stopVideoButtonPress() //stop on going chat session if any
                    bus.$emit('showModal', "stopLivevideoSessionLeft"); //notify user that other user left the page
                }
            }.bind(this))
        //define connect method
        this.LiveVideo_session.connect(session.token, function(error) {
                if(error){
                    this.handleError(error)
                }else{
                    //if call mode is chat, do not publish chat at all
                    if(this.call_mode != 'chat'){
                        this.LiveVideo_session.publish(this.my_video); //publish my video to chatroom
                    }
                    //if testsession, publish stream also to stream_video1
                    if(this.testSession){
                        this.LiveVideo_session.publish(this.test_publisher)
                    }
                }
            }.bind(this));
        //store session.premium_session to premium_session
        this.premium_session = session.premium_session
        //wait for UI elements to be created on page before OT.initPublisher
        setTimeout(() => {
            //setup my_video
            if(this.call_mode == "audio") //if only audio is selected
                var publisherOptions = {
                  videoSource: null,
                  name: this.connection_setup.stream_video_description+" (vain ääni)",
                  width: '100%',
                  height: '100%',
                  opaque: '1',
                  style: {
                    nameDisplayMode: "on",
                    audioLevelDisplayMode: "on",
                    }
                }
                else
                //setup my_video for videochat
                var publisherOptions = {
                  name: this.connection_setup.stream_video_description,
                  width: '100%',
                  height: '100%',
                  opaque: '1',
                  style: {
                    nameDisplayMode: "on",
                    audioLevelDisplayMode: "on",
                    }
                }
            //if call mode is chat, do not publish chat at all
            if(this.call_mode != 'chat'){
                console.log("call mode"+this.call_mode)
                this.my_video = OT.initPublisher('my_video', publisherOptions, this.handleError)
            }
            //if testsession, publish stream also to stream_video1
            if(this.testSession){
                console.log("call testSession "+this.testSession)
                publisherOptions.name = 'Sinun kuvasi keskustelukumppanin näkemänä';
                this.test_publisher = OT.initPublisher('stream_video1', publisherOptions, this.handleError)
            }
        }, 600);
    },

冻结的可能是Chrome,而不是opentok。请参阅此chrome 61/android错误,其中包括添加边框半径的解决方法

最新更新