【发布时间】:2013-07-08 15:15:12
【问题描述】:
我想知道有什么工具或任何方法可以让我看到底层的 WebRTC 点对点连接?
举个简单的例子,如果我正在使用 webrtc 实现视频聊天,所有连接(offer、answer、ice)都已建立但我看不到视频流,我该如何调试并查看是否有任何数据包或其他东西是否在这两个对等方之间发送。
【问题讨论】:
我想知道有什么工具或任何方法可以让我看到底层的 WebRTC 点对点连接?
举个简单的例子,如果我正在使用 webrtc 实现视频聊天,所有连接(offer、answer、ice)都已建立但我看不到视频流,我该如何调试并查看是否有任何数据包或其他东西是否在这两个对等方之间发送。
【问题讨论】:
如果您使用的是 Chrome,则可以导航至 chrome://webrtc-internals。这将向您显示有关连接的提议、答案、ICE 状态和统计信息(一旦建立)。
要进行更深入的调试,您可以通过使用以下标志启动 Chrome 来查看候选者之间所有 STUN ping 的日志:
--enable-logging --v=4
日志将在您的用户数据目录中的chrome_debug.log 文件中:http://dev.chromium.org/user-experience/user-data-directory
【讨论】:
有一些方法可以调试底层连接状态。如果您使用的是 Web 应用程序,则可以导航到浏览器统计信息。对于铬,chrome://webrtc-internals (API structure)。 This thread 也很有帮助(使用 peerJs)。对于 Firefox,请浏览至 about:webrtc。
对于本机应用程序,即对于 Windows,您需要从编译器本身获取日志。在 MS Visual Studio 2015 中,尝试 Debug > Attach Process > your native application PID,Debug>windows>output。
【讨论】:
视频无法流式传输可能有几个原因。
您的 stun 服务器有响应吗?要检查这一点,请在控制台中记录您收到的候选冰。然后检查他们的类型。如果您的 stun 服务器正在响应,那么您将看到类型 srflx 而不仅仅是“主机”类型的候选冰。您也可以在 chrome://webrtc-internals 中查找它们。
在 RTCPeerConnection 对象回调 onaddstream 后,您是否将正确的 src blob 附加到视频元素?
您必须从您的 javascript 显式调用视频元素上的 .play() 方法才能启动远程视频流。
【讨论】: