我正在将 Web 客户端转换为 React Native 客户端。有一个函数URL.createObjectURL在 RN 中不存在。我想知道是否有一个 npm 包可以做同样的事情。
我在chrome浏览器v30中运行自己的webrtc演示代码时遇到麻烦。但是代码完全可以在Firefox上正常工作。在其他要约接受要约之前,将触发onicecandidate事件。在另一端,仅在接受要约后才创建对等连接。因此,当onicecandidate被触发时,在接收方以对等连接结尾的null错误。据我了解WebRTC,我的代码流程是
步骤1:呼叫者按呼叫按钮
步骤2:将调用getUsermedia
步骤3:将创建对等连接
步骤4:将报价发送给呼叫者
步骤5:将报价向呼叫者显示的
步骤6:仅在呼叫者接受呼叫后才创建对等连接
步骤7:对等连接将创建答案
步骤8:将答案发送给呼叫者
步骤9:呼叫者会将icecandidates发送给被呼叫者
第10步:被叫方会将icecandidates发送给呼叫者
上述流程的问题在于,仅在用户接受报价后,才在被叫方建立对等连接。但是在要约创建之后且要约被接受之前的主叫方,将候选冰块发送给主叫方。呼叫方这将导致null错误。
我在debugbin中粘贴了调试日志:-pastebinDOTcom / gMgaxbBp
请为我提供此问题的解决方案。
在本文档中,它用于URL.createObjectURL设置视频源.(这是接听电话的代码).
var offer = getOfferFromFriend();
navigator.getUserMedia({video: true}, function(stream) {
pc.onaddstream = e => video.src = URL.createObjectURL(e.stream);
pc.addStream(stream);
pc.setRemoteDescription(new RTCSessionDescription(offer), function() {
pc.createAnswer(function(answer) {
pc.setLocalDescription(answer, function() {
// send the answer to a server to be forwarded back to the caller (you)
}, error);
}, error);
}, error);
});
Run Code Online (Sandbox Code Playgroud)
我希望video.src成为检索远程视频的地址.所以它应该由连接的另一端(无论是谁发起呼叫)修复和给出.但价值URL.createObjectURL回答者的一边产生,它的事件取决于函数被调用的时间.如何使用它来获取远程视频流?
编辑:URL.createObjectURL看起来像blob 的结果:http://some.site.com/xxxx-the-token-xxxx.使用此字符串,视频组件如何知道加载远程流的位置?是否存在{url:stream}的哈希映射?如果是这样,视频组件如何访问hashmap?
流对象确实存储了一个令牌字符串,您可以使用该字符串stream.toURL.但它与结果不同URL.createObjectURL.价值URL.createObjectURL取决于时间.如果连续两次调用它,则会得到不同的值.