相关疑难解决方法(0)

WebRTC - 从Chrome获取'格式错误的约束对象',而不是Firefox

我不知道我做错了什么.

我从这里得到'格式错误的约束对象'错误:

pc.createAnswer( function (answer) {
  ...
}, fail, { offerToReceiveAudio: true, offerToReceiveVideo: true });
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

javascript html5 webrtc

4
推荐指数
1
解决办法
2837
查看次数

WebRTC永远不会触发onCandidate

我开始使用WebRTC开发,但那件事从来没有给我ICE候选人.我设置了所有内容,我正在交换描述和内容,我还在那里缩小了一个超级丑陋的功能,以确保一切都正常运行,一个接一个.信号状态对两者都是稳定的,onError永远不会被触发(如预期的那样),但onIceCandidate也是(不是预期的),当我想发送一个随机的空MediaStream对象时pc1.addStream(new webkitMediaStream());,它总是触发onNegotiationNeeded.

有没有人知道我的代码到底有什么问题?我花了几个小时浏览Stack Overflow,HTML5 Rocks和W3C文档,但我不明白.这是我的整个代码:

var config={
  'iceServers':[{
    'url':'stun:stun.l.google.com:19302'
  },{
    'url':'stun:stun1.l.google.com:19302'
  },{
    'url':'stun:stun2.l.google.com:19302'
  },{
    'url':'stun:stun3.l.google.com:19302'
  },{
    'url':'stun:stun4.l.google.com:19302'
  }]
};
var pc1=new webkitRTCPeerConnection(config);
var pc2=new webkitRTCPeerConnection(config);

var onError=function(error)
{
  console.error(error);
}

pc1.onicecandidate=function()
{
  console.log('PC1 onIceCandidate (finally) fired!');
}
pc2.onicecandidate=function()
{
  console.log('PC2 onIceCandidate (finally) fired!');
}

pc1.oniceconnectionstatechange=function()
{
  console.log('PC1 oniceconnectionstatechange fired!');
}
pc2.oniceconnectionstatechange=function()
{
  console.log('PC2 oniceconnectionstatechange fired!');
}
pc1.onnegotiationneeded=function()
{
  console.log('PC1 onnegotiationneeded fired!');
}
pc2.onnegotiationneeded=function()
{
  console.log('PC2 onnegotiationneeded fired!');
}

pc1.createOffer(function(offer){
  pc1.setLocalDescription(offer,function(){
    pc2.setRemoteDescription(new RTCSessionDescription(offer),function(){
      pc2.createAnswer(function(answer){
        pc2.setLocalDescription(answer,function(){ …
Run Code Online (Sandbox Code Playgroud)

javascript webrtc

3
推荐指数
3
解决办法
3877
查看次数

未接收视频,onicecandidate 未执行

所以我按照本教程学习如何实现 WebRTC 服务器-客户端设置。一旦我开始工作,我想将客户端分成两部分,一个发送者和一个接收者。现在他们可以相互建立连接,但接收者永远不会从发送者那里得到流。

我设法确定原始代码和拆分版本之间的代码流保持不变,只是两个对等方都不执行 onicecandidate 事件。

根据这个,我需要明确包括OfferToReceiveAudio: trueOfferToReceiveVideo: true因为我使用的是Chrome,我做到了,但它似乎没有任何区别。

目前,它们都从对方接收 SDP,peerConnection 中有本地和远程描述,并且iceGatheringState是“新的”但iceConnectionState正在“检查”(与他声明的第二个链接也应该是“新的”不同)

当像这样一分为二时,他们为什么不交换 ICE 候选人?

发件人.js

const HTTPSPort = 3434;
const domain = '127.0.0.1';
const wssHost = 'wss://' + domain + ':' + HTTPSPort + '/websocket/';

// Feed settings
const video = true;
const audio = true;
const constraints = { "audio": audio, "video": video };

var videoContainer = null, feed = null,
	pC = null, wsc = …
Run Code Online (Sandbox Code Playgroud)

javascript webrtc

2
推荐指数
1
解决办法
991
查看次数

标签 统计

javascript ×3

webrtc ×3

html5 ×1