前面写了那几篇Webrtc方面理论性的知识,从这篇文章开始终于开始进入Janus WebRTC server的源码阅读和分析; 工欲善其事,必先利其器,这篇文章我们来说下阅读Janus-gateway源码准备的工具和环境;同时了解下如何利用这些工具阅读Janus源码 Janus WebRTC server是由C语言编写,依赖了Linux系统的一些特有库,所以不支持在Window下进行编译调试,由于linux和MacOS其实最终是同宗同源,所以Janus也能在Mac系统下面进行编译和安装; 所以为了方便开发调试及体验,我们这里需要准备一个Linux或者Mac系统的机器;我这里是Visualbox虚拟机+Ubuntu16.04;并且我把环境及依赖库导出来存在网盘中,如果有网友觉得从头到尾搭建环境比较麻烦可以留言找我要网盘地址,总大小4G左右,这个虚拟机镜像包括【ubuntu+Janus编译环境+Janus源码+VisualStudoCode的C调试环境+Wireshark】; 这里我使用轻量级的编辑器Viusal studio code和C/C++插件如下图: 在ubuntu中安装了Wireshark,用Wireshark抓包分析信令协议和Webrtc中的各种协议例如ICE,SDP,RTP等等;这样抓包分析协议再结合Janus WebRTC server源码比纯粹只阅读Janus源码上手要快的多 使用VisualStudio Code调试Janus代码之前,请确保你正确的编译了源码;编译方式请看这篇文章 经过以上两步后,直接打断点进行RUN就可以调试Janus WebRTC server源码了 安装完Wireshark后要root权限启动Wireshark,Ubuntu系统也就是执行【 sudo wireshark 】,否则无法获取网卡接口,会列出很多网卡包括一些虚拟网卡通道,如果不确定需要抓取哪个,就选择any进行抓包,也就是抓所有网卡的包; 请看上面第一个Websocket信息和第二个Websocket信息,我们知道Janus信令是自定义的Json格式,第一个,第一个信令告诉Janus WebRTC server 创建,其实就是创建一个客户端UDP的Session用户记录一个客户端连接,后续详细剖析源码的时候会知道;创建Session成功后Janus WebRTC server回通过Websocket返回成功的信令,并且我们还能看出来一来一个会的信令的transaction标志是相同的,也就是属于同一个事务; 这里我进行抛砖引玉,说明我后续如何进行分析Janus 源码和其中的协议;要想很好的理解和分析,这些协议还是需要我们详细的了解;否则也没法进行分析 引用文章请标明出处,否则可以保留一切追究责任的权利
Webrtc音视频会议之Janus源码阅读必备
注意:
后面的文章要求:
如果达不到上面三个条件,那可以放弃;又或者达到上面三个条件我们再继续;哈哈……环境准备
Linux和MacOS环境
调试IDE
抓包工具
开始第一次调试Janus源码
添加配置弹出后选择 (GDB)启动 项后会在项目根目录生成.vscode目录,这个目录下面会生成launch.json文件;{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) 启动", "type": "cppdbg", "request": "launch", "program": "/opt/janus/bin/janus", // Janus编译后的二进制文件,看前面编译Janus源码相关文章 "args": ["--config=/opt/janus/etc/janus/janus.jcfg"], // Janus配置文件目录,看前面编译Janus源码相关文章 "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
利用Wireshark分析Janus的Websocket下的信令
因为我配置Janus WebRTC server 使用Websocket作为信令transport;所以我过滤只抓包websocket 和udp的包,Websocket是信令通道,UDP是Webrtc的相关协议通道,例如RTP,ICE……
如下图:
Websocket信令
RTP包如何分析
通过以上的步骤把UDP包转成RTP包进行分析,这样更直观;但是要进行详细的分析必须要了解RTP协议,否则其中RTP的Header和Body看不懂也不知道如何分析啊总结
技术交流:
qq:408365330
微信:egojit
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算