我使用了easyrtc工具包(http://easyrtc.com/)(为nodejs编写)在我的办公室网络中设置聊天系统。我没有做太多工作来实现这个设置,只是简单地使用了随工具包提供的演示。该应用程序托管在办公室内的VM上,而工具包的默认ICE配置提到位于办公室防火墙外的STUN和TURN服务器。
系统工作正常,但我有疑问。在与我的同事坐在办公室网络中的另一台计算机上发起webrtc视频聊天后,我在他的视频上做了一个“Inspect Element”。我期待blob地址在他的IP地址,因为我相信我们已经在我们之间建立了点对点连接。但IP地址是VM托管应用程序的IP地址。为什么会这样?
<video autoplay="" id="callerVideo" src="blob:http%3A//10.30.23.56/e09742eb-941a-456f-88dc-addfb013c8e9"></video>
这里10.30.23.56是VM的地址。虽然视频来自我同事的网络摄像头。
答案 0 :(得分:2)
视频标记正在播放由PeerConnection创建的MediaStream Blob对象的视频。此Blob对象通过URL字符串表示,该URL字符串仅是标识符,在这种情况下,使用窗口的URL +唯一标识符构造。见MediaStream API on MDN。您不应将此blob ID读入媒体的源IP。源将是另一个对等体,其IP地址取决于是使用主机IP,反射IP(通过STUN)还是TURN的IP。如果您想查看视频流的实际IP地址和端口,您可以检查SDP和在对等体之间生成和交换的ICE候选者,或者您可以使用Chrome的webrtc-internals(chrome:// webrtc) -internals)工具。