Quickblox Webrtc 音频通话 - 听不到声音

Posted

技术标签:

【中文标题】Quickblox Webrtc 音频通话 - 听不到声音【英文标题】:Quickblox Webrtc Audio Calls - Can't hear sound 【发布时间】:2017-03-05 11:44:05 【问题描述】:

我正在给另一个用户打电话,一切似乎都正常,但是当我在麦克风上讲话时我听不到任何声音。 我只对音频通话感兴趣。

当您按下一个按钮并且其他用户自动接听时,就会开始通话。这是我的 javascript 代码:

(function (window, QB) 
    var CREDENTIALS = 
        appId: ,
        authKey: '',
        authSecret: ''
    ;

    QB.init(CREDENTIALS.appId, CREDENTIALS.authKey, CREDENTIALS.authSecret);

    QB.createSession(function (err, result) 
        // callback function
        console.log("QB Session Created");

        var mediaParams = 
            audio: true
        ;

        $("#connect").click(function () 
            var id = $('#usr').val();
            console.log("start connect");
            QB.chat.connect( userId: id, password: "testtest" , function (err, roster) 
                if (err) 
                    console.log(err);
                 else 
                    console.log("USER CONNECTED");

                    $("#call").click(function () 
                        console.log("start call");
                        var calleesIds = [24853124]; //24853088
                        var sessionType = QB.webrtc.CallType.AUDIO;

                        var session = QB.webrtc.createNewSession(calleesIds, sessionType);

                        session.getUserMedia(mediaParams, function (err, stream) 
                            if (err) 
                                console.log(err);
                             else 
                                console.log("Success get user media");

                                var extension = ;
                                session.call(extension, function (error) 
                                    if (error) 
                                        console.log(error);
                                    
                                    else
                                        console.log("Start Call");
                                );
                            
                        );
                    );

                
            );
        );

        QB.webrtc.onUserNotAnswerListener = function (session, userId) 
            console.log("User didn't answer: " + userId);
        ;

        QB.webrtc.onCallListener = function (session, extension) 
            console.log("Incoming Call");
            console.log('Session: ', session);
            console.log('Extension: ', extension);
            var ss = session;
            
            ss.getUserMedia(mediaParams, function (err, stream) 
                if (err) 
                    console.log(err);
                 else 
                    console.log("Success get user media");
                    var extension = ;
                    ss.accept(extension);
                    ss.unmute('audio');
                
            );
        ;

        QB.webrtc.onAcceptCallListener = function (session, userId, extension) 
            console.log("user accepted call: " + userId);
            session.unmute('audio');
        ;

    );
(window, window.QB));

登录来电者 - 谷歌浏览器:

QB Session Created
app2.js:30 start connect
app2.js:36 USER CONNECTED
app2.js:39 start call
app2.js:49 Success get user media
quickblox.min.js:40 [QBWebRTC]: Call, extension: 
quickblox.min.js:40 [QBWebRTC]: _createPeer, iceServers: "iceServers":["url":"stun:stun.l.google.com:19302","urls":"stun:stun.l.google.com:19302","url":"stun:turn.quickblox.com","username":"quickblox","credential":"baccb97ba2d92d71e26eb9886da5f1e0","urls":"stun:turn.quickblox.com","url":"turn:turn.quickblox.com:3478?transport=udp","username":"quickblox","credential":"baccb97ba2d92d71e26eb9886da5f1e0","urls":"turn:turn.quickblox.com:3478?transport=udp","url":"turn:turn.quickblox.com:3478?transport=tcp","username":"quickblox","credential":"baccb97ba2d92d71e26eb9886da5f1e0","urls":"turn:turn.quickblox.com:3478?transport=tcp","url":"turn:turnsingapor.quickblox.com:3478?transport=udp","username":"quickblox","credential":"baccb97ba2d92d71e26eb9886da5f1e0","urls":"turn:turnsingapor.quickblox.com:3478?transport=udp","url":"turn:turnsingapore.quickblox.com:3478?transport=tcp","username":"quickblox","credential":"baccb97ba2d92d71e26eb9886da5f1e0","urls":"turn:turnsingapore.quickblox.com:3478?transport=tcp","url":"turn:turnireland.quickblox.com:3478?transport=udp","username":"quickblox","credential":"baccb97ba2d92d71e26eb9886da5f1e0","urls":"turn:turnireland.quickblox.com:3478?transport=udp","url":"turn:turnireland.quickblox.com:3478?transport=tcp","username":"quickblox","credential":"baccb97ba2d92d71e26eb9886da5f1e0","urls":"turn:turnireland.quickblox.com:3478?transport=tcp"]
quickblox.min.js:40 [QBWebRTC]: RTCPeerConnection init. userID: 24853124, sessionID: 57f5dcc4-70d6-4c93-90c5-7793e580bfa7, type: offer
app2.js:57 Start Call
quickblox.min.js:40 [QBWebRTC]: getAndSetLocalSessionDescription success
quickblox.min.js:40 [QBWebRTC]: _startDialingTimer, dialingTimeInterval: 5000
quickblox.min.js:40 [QBWebRTC]: _dialingCallback, answerTimeInterval: 0
quickblox.min.js:40 [QBWebRTC]: onAccept. UserID:24853124. SessionID: 57f5dcc4-70d6-4c93-90c5-7793e580bfa7
app2.js:91 user accepted call: 24853124
quickblox.min.js:40 [QBWebRTC]: _clearDialingTimer
2quickblox.min.js:40 [QBWebRTC]: onIceCandidates. UserID:24853124. SessionID: 57f5dcc4-70d6-4c93-90c5-7793e580bfa7. ICE candidates count: 1
quickblox.min.js:40 [QBWebRTC]: 'setRemoteSessionDescription' success
quickblox.min.js:40 [QBWebRTC]: onIceConnectionStateCallback: checking
quickblox.min.js:40 [QBWebRTC]: onIceConnectionStateCallback: connected
quickblox.min.js:40 [QBWebRTC]: onIceConnectionStateCallback: completed

登录被调用者 - Google Canary

QB Session Created
app2.js:30 start connect
app2.js:36 USER CONNECTED
quickblox.min.js:40 [QBWebRTC]: onCall. UserID:24853197. SessionID: 57f5dcc4-70d6-4c93-90c5-7793e580bfa7
app2.js:72 Apel primit
app2.js:73 Session:  
i ID: "57f5dcc4-70d6-4c93-90c5-7793e580bfa7", state: 1, initiatorID: 24853197, opponentsIDs: Array(1), callType: 2…
app2.js:74 Extension:  
Object 
quickblox.min.js:40 [QBWebRTC]: _createPeer, iceServers: "iceServers":["url":"stun:stun.l.google.com:19302","urls":"stun:stun.l.google.com:19302","url":"stun:turn.quickblox.com","username":"quickblox","credential":"baccb97ba2d92d71e26eb9886da5f1e0","urls":"stun:turn.quickblox.com","url":"turn:turn.quickblox.com:3478?transport=udp","username":"quickblox","credential":"baccb97ba2d92d71e26eb9886da5f1e0","urls":"turn:turn.quickblox.com:3478?transport=udp","url":"turn:turn.quickblox.com:3478?transport=tcp","username":"quickblox","credential":"baccb97ba2d92d71e26eb9886da5f1e0","urls":"turn:turn.quickblox.com:3478?transport=tcp","url":"turn:turnsingapor.quickblox.com:3478?transport=udp","username":"quickblox","credential":"baccb97ba2d92d71e26eb9886da5f1e0","urls":"turn:turnsingapor.quickblox.com:3478?transport=udp","url":"turn:turnsingapore.quickblox.com:3478?transport=tcp","username":"quickblox","credential":"baccb97ba2d92d71e26eb9886da5f1e0","urls":"turn:turnsingapore.quickblox.com:3478?transport=tcp","url":"turn:turnireland.quickblox.com:3478?transport=udp","username":"quickblox","credential":"baccb97ba2d92d71e26eb9886da5f1e0","urls":"turn:turnireland.quickblox.com:3478?transport=udp","url":"turn:turnireland.quickblox.com:3478?transport=tcp","username":"quickblox","credential":"baccb97ba2d92d71e26eb9886da5f1e0","urls":"turn:turnireland.quickblox.com:3478?transport=tcp"]
quickblox.min.js:40 [QBWebRTC]: RTCPeerConnection init. userID: 24853197, sessionID: 57f5dcc4-70d6-4c93-90c5-7793e580bfa7, type: answer
quickblox.min.js:40 [QBWebRTC]: _startAnswerTimer
app2.js:82 Success get user media
quickblox.min.js:40 [QBWebRTC]: Accept, extension: 
quickblox.min.js:40 [QBWebRTC]: _clearAnswerTimer
quickblox.min.js:40 [QBWebRTC]: 'setRemoteSessionDescription' success
quickblox.min.js:40 [QBWebRTC]: onIceConnectionStateCallback: checking
quickblox.min.js:40 [QBWebRTC]: onIceConnectionStateCallback: connected
quickblox.min.js:40 [QBWebRTC]: onIceCandidates. UserID:24853197. SessionID: 57f5dcc4-70d6-4c93-90c5-7793e580bfa7. ICE candidates count: 16

我做错了吗?

【问题讨论】:

【参考方案1】:

您必须将远程音频流添加到音频元素。

在link 中阅读onRemoteStreamListener

【讨论】:

以上是关于Quickblox Webrtc 音频通话 - 听不到声音的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 QuickBlox 录制视频通话

Flutter webrtc音频无法在android上运行

Quickblox Flutter SDK 示例 WebRTC 未连接

Android端WebRTC音视频通话录音-获取音频输出数据

Quickblox cordova 示例视频 webrtc 应用程序不在 Android 设备上显示摄像头流

如何在 WebRTC 音频通话中控制单声道/立体声?