webrtc的实时视频通话建立的流程--C++接口

一:webrtc通讯流程简介


  1. 附件下载:https://download.csdn.net/download/qq_37103755/13081717
  2. webrtc即Web Real-Time Communication,web实时通信技术。简单地说就是在web浏览器里面引入实时通信,包括音视频通话等。本文章只简单的描述下webrtc实时音视频通话建立了的过程,(文章中提到代码的部分都是C++的接口部分,但是建立通讯流程的过程都是一样的)
  3. 在webrtc的通讯过程中,主动呼叫方被称为offer方。被动等待呼叫的方,并回应对方为answer方。
  4. 信令服务器:在两端互不指定对方的信息之前,需要一个信令服务器作为中转的桥梁,来完成双方的信令数据的交换,最后完成p2p的通信。
  5. 下图简单的描述了webrtc的A,B方建立通讯的过程,先通过信令服务器之间的交互。互相添加sdp和交互Candidate后,建立视频通化,



     

二:C++代码部分的简介(下面大概讲的代码的核心部分,没有全部讲解)


  • 整个webrtc的源码部分非常的大,工程也是非常的多,可以自行下载源码进行编译。本人使用了vs2017编译了一个webrtc的源码,里面使用了ninja的编译器编译,
    如果使用vs2017编译出错,需要下载对应的windows的SDK。下图是一个webrtc的导出库的工程属性,使用了windows SDK的版本是10.0.1.15063.0
  • 源码工程里面自带了两个示例程序:peerconnection_client.exe 和peerconnection_server.exe.(可直接用户测试)
  • webrtc的工程里面还有一个导出的动态库:webrtc_unity_plugin.dll。可直接使用该动态库完成会话的建立,自定义一个信令服务服务。
  • unity_plugin_apis.h 是导出函数的接口,函数接口里面有上面流程图里面包含的接口。
  • 回调函数:我们需要处理的就是在回调函数里面拿到了数据后,就数据发送给信令服务器,信令服务器在转发给另一个与之建立视频通话的客户端,几次数据的交互后,从
    而建立视频通话的流程。

三:代码的应用:

  • 将webrtc的导出函数,声明为一个函数指针的变量,并将所有的到导出函数的函数指针放到一个结构体中。
  • 建立会话的第一步:先调用CreatePeerConnection();在创建的时候,需要同时注册回调函数和AddStream().然后等待sdp的回调函数,将消息内容发送到信令服务。
    一个类用于信令交互部分,自定义交互协议,一个类用于webrtc建立的p2p的过程。将业务和具体的实现部分分开。

  • AddTracks()  添加流的轨道:代码部分如下:注册本地和远程视频帧的回调函数,同时添加流。 回调的结果都是yuv420的格式。
  • 创建一个offer。等待回调函数,
  • 回调本地的sdp。然后将sdp信息发送到信令服务。调用流程就是按照上面的流程图,对应的就是相应的接口。
  • 当收集完Candidate后,会自动进入Candidate的回调函数,webrtc的整个通讯过程中,主要信息的获取都是在回调函数中完成的。
     

四:总结

  1. 由于平时个人工作比较忙,没有太多时间将细节写的太过详细,但是整个的通讯流程是这样的。附件会携带 unity_plugin_apis的源码部分。和已经编译好的的导出库的dll、lib、头文件。备注:该源码部分不能直接编译,只能供参考,因为依赖了webrtc的源码很多其他的东西,webrtc的源码部分太大,也就不附件上了。上面基于webrtc封装出来的代码部分掺杂了很多其他的业务逻辑部分,也不方便将代码上传,后期有时间写个简单的测试例子。
  2. 使用者可以直接使用该导出的动态库,实现自己的信令服务器和通话的客户端。信令交互部分可自定义。
  3. 同时附带webrtc自带的测试例子:peerconnection_client.exe 和peerconnection_server.exe。
  4. 如有疑问:附件中会携带本人QQ的联系方式。附件下载:https://download.csdn.net/download/qq_37103755/13081717



 

猜你喜欢

转载自blog.csdn.net/qq_37103755/article/details/109411791