- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在调用另一位用户,一切似乎都工作正常,但当我用麦克风说话时,我听不到任何声音。我只对音频通话感兴趣。
当您按下按钮时,通话即开始,其他用户会自动接听。这是我的 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));
登录来电者 - Google Chrome:
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
我做错了什么吗?
最佳答案
您必须将远程音频流添加到音频元素。
阅读 link 中的 onRemoteStreamListener
关于javascript - Quickblox Webrtc 音频通话 - 听不到声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42607978/
Quickblox 经常记录以下内容: Performing async request: RestRequest: ------ POST http://api.quickblox.com/sess
我在我的 C# (Xamarin) 应用程序中使用 Quickblox。我无法移植 Windows Phone 代码,因此我决定使用 RESTful API。 我在获取 token 时遇到问题。我关注
我按照下面的快速 blox 给出的说明进行操作: 从 sdk 2.6.1 开始添加对特定模块的依赖只需添加: dependencies { compile("com.quickblox:quic
我已经为 JS 的 QuickBlox 聊天示例添加了一个功能,它允许向现有聊天添加新用户 函数 addUsers(){ var curDlgId = currentDialog._id ; var
我试图在我的网站上使用 quickbox javascript api 作为聊天应用程序。我使用了 quickblox 示例并且运行良好。但我不明白如何创建新用户。任何人都有关于此分享的任何代码或教程
[QBRequest signUp: user successBlock: ^ (QBResponse * response, QBUUser * user) { // your f
我正在使用 quickblox 开发应用程序的聊天模块。它工作正常。但是当应用程序终止时,我没有收到任何聊天消息的推送通知。任何人都可以帮助我吗? 最佳答案 如果您想收到推送通知,您需要验证以下步骤。
我是 iOS 新手。我正在使用自定义身份验证。我检查了示例代码,我很困惑,他们如何在用户登录时更新用户面板中的注册用户。 请告诉我应该如何使用他们的代码,我下载并运行了他们的示例代码,但它已经过时并且
我是 QuickBlox 新手。我刚刚从 SimpleSample-chat users-ios 下载示例代码并将其与我在 QuickBlox 上的应用程序连接。 注册和正常登录都可以正常工作。 但是
我正在尝试通过 QUICKBLOX 加入一个群组,并在编译我的加入群组代码之后。它向我展示了这个错误。 (Error Domain=com.quickblox.chat Code=-1004 "(nu
我正在使用 Quickblox 的 REST API。但每次,我都会收到回复: {"errors": { "base": ["Required session does not exist"] }
我目前正在涉足Android开发,并且有一个Android Studio项目,正在尝试将QuickBlox sdk添加到我的项目中。我尝试按照提供的说明进行操作,但发现它不起作用。通过一些研究,我发现
使用“自定义模块”时,是否有 API 可以获取所有类的列表? 由于可能会不时通过管理面板添加新类,因此应用程序将需要动态检索所有类。 最佳答案 没有标准的 API 可以做到这一点,但您可以创建类,例如
有什么方法可以查出 Quickblox 用户是否在线?我正在使用 Quickblox iOS SDK。 最佳答案 有两种方法: 使用 REST API - 这是指南 http://quickblox.
有什么办法可以查到Quickblox用户是否在线?我正在使用 Quickblox iOS SDK。 最佳答案 有两种方式: 使用 REST API - 这是指南 http://quickblox.co
- (void)loadUserInfoForId:(int)userId { NSMutableDictionary *getRequest = [NSMutableDictionary d
我是否可以对 quickblox 中的对象进行等效的 sql 连接,以便我可以在一次 api 调用中获取所有信息? 例如: 如果我有一个名为购买的自定义对象,这可能包含有关购买的详细信息,但也将包含
当用户尝试登录(确实登录)并忘记密码时,他会尝试重置密码,然后应用程序如何通过电子邮件调用 Rest Password,因为用户尚未登录 Quickblox。用户是否不需要登录 QuickBlox 才
我正在尝试将通知从 quickblox js sdk 推送到 ios。我有一些示例代码。 QuickBlox JavaScript SDK:2.12.7 'use strict'; const Qui
所以我刚刚开始与 QB 合作并尝试实现视频聊天。我从他们的示例中获取了代码并对其进行了一些修改。我可以连接两个有声音的设备,但没有显示任何视频。我确实在日志中注意到了这条消息: -[QBCha
我是一名优秀的程序员,十分优秀!