在firefox v60.0.2中创建sdf提供错误(WebRTC,Firefox)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在firefox v60.0.2中创建sdf提供错误(WebRTC,Firefox)相关的知识,希望对你有一定的参考价值。

当它触发RTCPeerConnection.createOffer()时,我收到下一个错误:

抛出:DOMException 代码:11 columnNumber:0 data:null 文件名: ”” lineNumber:0 消息:“当没有有效的收发器时,无法创建报价。” name:“InvalidStateError” 结果:2152923147 堆栈:“” __proto __:DOMExceptionPrototype {name:Getter,message:Getter,INDEX_SIZE_ERR:1,...} index.js:176:3

接下来是完整的代码片段(错误由行触发:pc.createOffer()。然后(...):

let pc = {};
let localStream = {};
const btnStart = document.querySelector("button[id='btnstart']");
let localVideoDisplay = document.getElementById('vOwn');

btnStart.addEventListener("click",(e)=>{

		pc = new RTCPeerConnection();
		pc.onicecandidate = (event)=>{
			console.log(event);
		}
		/*
			It captures local media
		*/
		navigator.mediaDevices.getUserMedia({ audio: 1, video: 1 }).then((stream)=>{
			localStream = stream;
			localVideoDisplay.srcObject = localStream;
		}).catch((err)=>{
			  console.log(err);
		});
		/* 
			It creates sdpOffer 
		*/
		pc.createOffer().then((rtcSession)=>{
			console.log(rtcSession);
		}).catch((error)=>{
			console.log(error);
		});
	});
<button id="btnstart">Start</button>
<video id="vOwn" autoplay></video>

代码在Chrome(移动和桌面)和Safari(移动版v11.3.1和桌面v11.0.2)上完美运行我的问题是:这是一个firefox错误还是我做错了什么?

答案

您在添加任何流或创建数据通道之前调用pc.createOffer()

这通常不是你想要的。试试这个:

navigator.mediaDevices.getUserMedia({ audio: 1, video: 1 }).then((stream)=>{
    localStream = stream;
    localVideoDisplay.srcObject = localStream;
    stream.getTracks().forEach((t) => pc.addTrack(t, stream));
    return pc.createOffer()
})
.then((rtcSession)=>{
    console.log(rtcSession);
}).catch((error)=>{
    console.log(error);
});

以上是关于在firefox v60.0.2中创建sdf提供错误(WebRTC,Firefox)的主要内容,如果未能解决你的问题,请参考以下文章

在 selenium 中创建 firefox 会话时出错

C#在WINForm程序中创建XML文件

创建的Sdf在代码首次迁移后被删除

如何在 c# wpf 中使用本地数据库 .sdf?

如何在 Visual Studio 2015 Community 中创建本地数据库?

如何在 vuetify 中创建可滚动的 v-list?