第一章:搭建环境
在学习WebRTC音视频通话之前,你需要对WebSocket有一定的基础。如果你对WebSocket还不熟悉,可以先看看《springboot整合websocket(一)简单聊天室》这篇文章。本文将通过其他参考资料(其他博客、官网等)实践并分享,安装文件时请尽量与我的版本保持一致。第一章主要是搭建环境,暂时不需要写代码。我因为版本问题折腾了一下午,最后降级版本才成功。另外,你需要一台可以外网访问的服务器,比如可以在阿里云或腾讯云上租一台。
一、WebRTC的简单概念
WebRTC并不提供Stun服务器和Signal服务器,服务器端需要自己实现。Stun服务器可以使用Google提供的实现stun协议的测试服务器(stun:stun.l.google.com:19302),而Signal服务器则需要完全自己实现,它需要在ClientA和ClientB之间传送彼此的SDP信息和candidate信息,通过这些信息建立P2P连接来传送音视频数据。由于网络环境的复杂性,并不是所有的客户端之间都能够建立P2P连接,这种情况下就需要有一个relay服务器来做音视频数据的中转。Signal服务器其实就是我们的WebSocket,Stun服务器其实就是WebRTC。
图中的流程如下(比较长,大家粗略看下,有个概念即可,之后还有简化版的):
- ClientA首先创建PeerConnection对象,然后打开本地音视频设备,将音视频数据封装成MediaStream添加到PeerConnection中。
- ClientA调用PeerConnection的CreateOffer方法创建一个用于offer的SDP对象,SDP对象中保存当前音视频的相关参数。ClientA通过PeerConnection的SetLocalDescription方法将该SDP对象保存起来,并通过Signal服务器发送给ClientB。
- ClientB接收到ClientA发送过的offer SDP对象,通过PeerConnection的SetRemoteDescription方法将其保存起来,并调用PeerConnection的CreateAnswer方法创建一个用于answer的SDP对象。
小结与拓展
本文介绍了搭建Turn服务器的基本步骤和WebRTC的基本概念。在实际应用中,你可能还需要了解更多关于WebRTC和WebSocket的知识。如果你对WebRTC和WebSocket有更多疑问,欢迎访问我们的网站websoft网络软件专家了解更多内容。
