我目前正在开发一个库,该库MediaStreamTrack
通过RTCPeerConnection
.
我目前遇到的问题是除了远程轨道外一切正常。我的MediaStreamTrack
相机是在本地主机上创建的,可以毫无问题地发送,但是当我尝试发送从外部服务器接收的轨道时,它只显示黑框。
我猜这和这里的问题一样。
我检查过的
正在接收曲目(我检查过chrome://webrtc-internals
)并且视频元素处于播放状态。我在控制台和 webrtc-internals 中都没有看到任何错误。此外,流/轨道已启用且未静音。在源窗口上使用captureStream()
结果相同。
使用外部源捕获和流式传输视频元素可以正常工作。
可能的原因
我认为问题可能在于初始流来自不是的域,localhost
因此无法重新流式传输它。在 w3c 标准中是这样描述的:
轨道可能包含应用程序无法访问的内容。这可能是由于任何会使跟踪 CORS 跨域的原因。这些轨道可以提供给 addTrack() 方法,并为它们创建一个 RTCRtpSender,但不得传输内容。发送静音(音频)、黑帧(视频)或同等缺失的内容来代替轨道内容。
主意
我不确定我上面提到的“可能的问题”是否是真正的问题,但我的一个想法是重写请求和响应标头以匹配localhost
但它不起作用。我猜它不会影响 WebRTC 连接。
我使用的电子钩子:
session.defaultSession.webRequest.onBeforeSendHeaders();
session.defaultSession.webRequest.onHeadersReceived();