基于Webrtc和Janus的多人视频会议系统开发2---Janus建立连接过程的角色关系图

本篇文章开始讲解如何开发windows和mac下的原生c++的janus客户端SDK。

项目组几个人搜编百度,谷歌,bing,一直没找到Janus的c++原生SDK的demo,只有ios,android和web的demo, 但是我们windows和Mac下都要支持原生APP的SDK接入,最后无奈之下只好自己动手丰衣足食。

根据资料参考,webrtc源码的example下有个peerconnection_client和peerconnection_server, 可以演示c++的webrtc视频p2p通话,只要这个连通了,在加上Janus协议的支持,应该就可以支持janus的C++客户端,不过开始时是对整个连通过程一头雾水,下图是正确的客户端和Janus服务器关系的正确关系,帮助初入坑的兄弟们理解:

此图是peerconnection双方的连接过程,server其实是提供了个http服务,两个客户端使用http接口通过server交换sdp,达到相互建立连接的目的(对sdp不了解的可以百度下,可以说webrtc建立连接的过程就是如何得到对方的sdp以及把自己的sdp发给对方的过程),连接建立后双方就直接建立连接互发RTP包了, 大家注意角色,然后对比下janus的客户端服务器关系图。

在Janus客户端1和客户端2连接,如果理解成客户端1就是peerconnection例子了的client1,客户端2就是client2,Janus对应peerconnection图里的server那就理解错误了, 如图所示,事实上上图包含了3个完整的peerconnection过程, Janus不仅扮演了peerconnection例子里的server功能, 用于帮助交换sdp,同时还扮演了peerconnection client功能,接受客户端的RTP媒体,而peerconnection例子里的server实际只有信令交换功能,不处理媒体流的。

为何这么做呢?

因为janus要实现多人视频,帮助客户端1的媒体流转发给多个其他客户端, 如果客户端1的媒体流直接发给客户端2,客户端3的话,有多少个参会人,客户端1就要上行多少路媒体流,无论性能和带宽都吃不消,现在先通过一个完整的peerconnection过程将媒体流发到Janus后,对客户端1来说所有的过程就结束了,媒体流怎么发到客户端2,客户端3他不关心,那是Janus和客户端2和客户端3之间的事情, 是另外的peerconnection过程的事情。

理解了这个原理,才能理解后续的接入过程。下一篇文章开始讲解如何改造peerconnection例程。

----------------------------------------------------------------------------

原创文章,带点个人作品小广告,勿怪勿怪: “证爱网,见证爱

情侣之间,家庭成员之间,欢迎光临本店购买证爱礼物>>>

猜你喜欢

转载自blog.csdn.net/u011382962/article/details/81507131