抓取网页音频(这些活动对于诊断连接问题或其它与WebRTC相关的问题)
优采云 发布时间: 2021-11-06 11:20抓取网页音频(这些活动对于诊断连接问题或其它与WebRTC相关的问题)
本文由 Janus 项目的作者 Lorenzo Miniero 撰写。2019年10月25日,他将来到北京RTC 2019,在“WebRTC Workshop”工作坊分享WebRTC服务器开发和Janus开发技巧,并与观众进行小范围的深度交流,名额有限,*敏*感*词*券~)
本文小结:抓取WebRTC流量看似比较简单,在大多数情况下确实如此:只需在其中一台机器上安装tcpdump或wireshark等抓包工具,然后查看生成的文件即可。在大多数情况下,它将是 .pcap 或 .pcapng 文件。这些活动对于诊断连接问题或与 WebRTC 相关的其他问题很有用:实际上,wireshark 可以自动检测标准协议,例如 STUN 和 DTLS,它们是 WebRTC PeerConnections 的重点。
这篇文章的关键是什么?
捕获 WebRTC 流量的唯一问题是媒体内容将被加密。检查STUN连接或DTLS握手后,这不是问题,但是当您要查看RTP或RTCP数据包时,它会成为问题,将其加密为SRTP和SRTCP。实际上,尽管 SRTP 标头未加密并且您可以以任何形式捕获流量,但 SRTP 有效负载并未加密,这意味着您无法查看其内容。
在大多数情况下,您不需要查看内容。正如预期的那样,您仍然可以查看加密的 RTP 数据包的头部,这是最常用的信息。在任何情况下,RTCP 都不能这样说:实际上,一个 RTCP 消息实际上可能收录多个数据包,并且没有共享头。此外,查看 RTP 负载可能是有效的。
这意味着捕获加密流量是可行的,但为了诊断目的捕获未加密数据可能更好。不幸的是,如果没有其他帮助,这是不可能的:实际上,在WebRTC的情况下,浏览器经常发送加密数据,即使有些允许您抓取未加密的数据进行测试,您仍然需要依靠其他工具来获取媒体。流才能开展这项工作。
进入杰纳斯!
作为 WebRTC 媒体服务器,Janus 确实发挥了它的作用:事实上,它存在于 PeerConnection 的每一个媒体路径上。另外,由于它为每个PeerConnections建立了一个安全的环境,因此可以获取输入和输出未加密的RTP和RTCP数据包。
一年前我们是这样想的。受 Firefox 的启发,我们首先添加了对 text2pcapdump 的支持,方法很简单:
1.使用Admin API开始抓取Janus处理的文件信息。
2.所有输入输出的RTP/RTCP包都转换成文本格式保存在相关文件中。
3. 捕获后,使用text2pcap App将捕获的文件转换为Wiresharak或其他工具兼容的格式。
请求的语法很简单:
<p>POST /admin/sessionId/handleId
{
"janus" : "start_text2pcap",
"folder" : "",
"filename" : "",
"truncate" : "