环境配置
启动janus demo:
1 | cd $janus_path/html/ |
由于webrtc的使用需要https,因此需要生成自签名证书:
1 | openssl genrsa -out www.example.com.key 1024 |
配置nginx:
1 | server { |
配置janus:
/opt/janus/etc/janus/janus.transport.websockets.jcfg
1 | general: { |
修改demo中的transport地址:
echotest.js
1 | var server = null; |
启动janus:
1 | ./bin/janus |
调用链
启动echo test demo,可以看到服务端会启动一个udp端口的监听:
抓包能够看到,udp 41993开始传输数据:
启动janus server并且测试janus_echotest plugin,查看rtp的处理流程
1 | gdb ./bin/janus |
在janus demo中操作echo test,会进入janus_echotest_create_session,通过bt查看调用链如下:
1 | (gdb) bt |
单步调试进入gateway的relay_rtp:
1 | (gdb) p *gateway |
最终调用到janus_ice_relay_rtp,该函数处理完毕会调用janus_ice_queue_packet放入异步队列,最终分发报文通过janus_ice_outgoing_traffic_dispatch该函数调用janus_ice_outgoing_traffic_handle分发