WebRTC的技术组成
WebRTC技术主要包括三大部分
音视频通讯,这部分是最难的,但是Google的WebRTC框架,已经完整地实现了这一部分,不需要我们操心
点对点通信,这个我们在前两篇博客中已经详细讲过,通过ICE服务器可以实现这部分功能
业务逻辑,虽然ICE服务器已经允许我们建立点对点连接,但这是在通信双方互相知道对面地址的前提下
在实际应用中,具体要和谁进行通话,对方的网络地址是什么,对方支持的媒体格式是什么,这些是要通过额外的一个服务器来进行交换的,这个服务器就叫信令服务器
信令服务器的实现并不难,只需要一个共用的WebSocket服务器,相互交换字符串信息就行了
WebRTC的信令服务器,是有标准的规范协议的,我们了解这一协议和流程后,按照步骤做就行了
WebRTC信令协议
这张图片是很久以前做的,里面的媒体服务器实际是网络穿透服务器
由于当时还没有系统学习过音视频,误把网络穿透服务器当成媒体服务器,以为它是用来交换音视频数据的
WebRTC术语说明
SDP:Session Description Protocol,会话描述协议,就是流媒体客户端之间用来进行会话协商的协议
SDP包含了设备地址,设备参数,媒体参数等消息,通过SDP可以告诉目标客户端自己的客户端参数
Offer:呼叫方发出的SDP
Answer:接听方发出的SDP
LocalSDP:自己的SDP
RemoteSDP:对方的SDP
IceCandidate:点对点通信备选线路
了解这些后,我们可以发现,其实整个流程非常简单,本质就是
两个客户端交换SDP后,通过WebRTC框架拿到可用的Candidate,然后再逐个线路尝试,看看该线路是否能够连通
底层的代码,只需调用WebRTC框架完成即可,大家直接看代码就行
WebRTC源码
这是一个全平台方案,包含了服务端,网页,Android客户端
由于2021年,网页端的WebRTC进行了一次重要更新,但是Android客户端的库由于没有人维护,所以Android客户端是无法与2021年后的浏览器版本进行通信的,但是Android和Android,网页和网页直接通信是没问题的
其实还有一个更好的方案,就是移动客户端内嵌网页,这样既解决了兼容性问题,同时IOS和PC端也可用
由于WebRTC最早是在网页端实现的,网页的WebRTC框架是比移动端要更完善的,浏览器内核一般都有人维护更新,但是移动端的库很多没人维护
WebRTC全平台方案.zip
记得客户端要修改信令服务器和ICE服务器的地址
Nodejs等环境的安装,自己学习下就行了,本博客只讲音视频知识本身