天天看点

C++/Qt音视频通话开发MetaRTC源码解读,sdp交互流程,sdp抓包sdp交互框架介绍http服务监听主叫sdp流程被叫sdp流程sdp抓包

目录

  • sdp交互框架介绍
  • http服务监听
  • 主叫sdp流程
  • 被叫sdp流程
  • sdp抓包

本章内容解读MetaRTC开源代码,无任何二次开发,用于学习交流。

MetaRTC是国人开发的开源项目,适用各种场景音视频二次开发,可以去git阅读README,我们使用相对成熟的版本测试:Release v5.0-b4。

本章解读sdp交互流程,关于sdp知识参考另一篇博文。

sdp交互框架介绍

由于MetaRTC只是一个demo,sdp交互比较简单,软件启动会建立一个http服务监听,http服务端口固定1988,界面输入对方IP;

主动点击推拉流的一方是主叫,主叫会组建自己的sdp,发起post给被叫的http服务,同步等待被叫回复被叫的sdp,收到被叫的sdp后解析;

另外一方是被叫,被叫的http服务端收到主叫的sdp后,解析sdp并回复自己的sdp给主叫。

整个sdp交互过程是http请求-响应过程。

p2p视频通话,sdp交互最重要的内容是得到对方的IP和端口,用于创建udp收发音视频数据。

http服务监听

程序启动,在YangP2pHandleImpl类构造函数创建和监听http服务,被叫会用到这个http服务,当收到主叫的sdp后使用g_p2p_receive回调。

C++/Qt音视频通话开发MetaRTC源码解读,sdp交互流程,sdp抓包sdp交互框架介绍http服务监听主叫sdp流程被叫sdp流程sdp抓包

主叫sdp流程

主叫在界面输入对方IP,点击推拉流按钮,开始sdp交互,主叫调用yang_http_post,这里是收发同步,yang_http_post第一个参数是出参,函数返回时拿到对方sdp。

C++/Qt音视频通话开发MetaRTC源码解读,sdp交互流程,sdp抓包sdp交互框架介绍http服务监听主叫sdp流程被叫sdp流程sdp抓包

获取被叫sdp后,解析sdp并创建udp用于音视频数据的收发,这里udp端口是每次程序启动随机生成的5位数。

C++/Qt音视频通话开发MetaRTC源码解读,sdp交互流程,sdp抓包sdp交互框架介绍http服务监听主叫sdp流程被叫sdp流程sdp抓包

被叫sdp流程

被叫的http服务端收到主叫的sdp后,执行回调函数g_p2p_receive,解析主叫sdp,创建自己的sdp作为出参使用http服务端回复给主叫。

C++/Qt音视频通话开发MetaRTC源码解读,sdp交互流程,sdp抓包sdp交互框架介绍http服务监听主叫sdp流程被叫sdp流程sdp抓包

sdp抓包

sdp交互过程是http请求-响应过程,wireshark抓包看比较清晰。

C++/Qt音视频通话开发MetaRTC源码解读,sdp交互流程,sdp抓包sdp交互框架介绍http服务监听主叫sdp流程被叫sdp流程sdp抓包

继续阅读