持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情
Web Real-Time Communications 实时通信技术
前言
仿微信实战项目中,我们将通过 WebRTC 来实现 音视频通话 功能,所以这里单拎出来一节,浅谈下 WebRTC
音视频通话
简单理解音视频通话
以音频通话为例,就是两端分别将音频流推给对方。例如:
- 李四本地起一个socket,监听 13579 端口
- 王五本地起一个socket,监听 12138 端口
两人通过服务器,把本次通话的 ip 和 port 告诉对方。之后就能互发音频了
因为通话是临时的,可并发的。所以往往端口不会固定,通话结束后也会销毁。所以通过服务器互换 ip 和 port 是很有必要的。
进一步理解音视频通话
只知道对方的 ip 和 port 其实是不够的,往往还需要很多细节需要和对方协商。比如音、视频编码格式是什么?视频分辨率是多少?等等
所以互换 ip 和 port 的同时我们还需要携带更多的信息,以便于音视频通话能够顺利进行。
关于 WebRTC 与相亲
小帅是一个30多岁的单身狗,他一直对高中同学小美念念不忘,但是多年没联系了,他没有小美的联系方式。
于是他找到了高中班主任张三,表明了来意,并把自己的个人信息告诉了班主任(身高、体重、发量等)。然后张三拿着小帅的信息找到了小美,小美决定于尝试和小帅交流下,于是把自己的个人信息也让张三转交给小帅。
双方互换个人信息后,小帅心中大喜,有门。于是拜托张三把地址和邮编告诉小美。小美保存了小帅的地址和邮编以后,也把她的地址和邮编通过张三转告给了小帅。
自此,小帅和小美互留了对方的地址和邮编。 之后俩人就可以通过写信来交流了
相信细心的朋友已经发现了,小帅和小美建立联系的这段内容,映射到了通话的建立过程。对应到 WebRTC音视频通话,
- 两人的个人信息,对应了 sdp
- 两人的地址和邮编,对应了 candidate
名词解释
| 名词 | 解释 | 补充解释 |
|---|---|---|
| Peerconnection | 代表一次会话连接的建立 | 就像你要建立Websocket连接,需要先 new 一个 WebSocket 一样。想要发起音视频会话,就要 new 一个 RTCPeerconnection 对象。 |
| SDP | 主要包含音视频相关的详细信息 | sdp中有一系列参数,表明了是音频还是视频?视频编码格式是 VP8 还是 H264?音视频传输方向是收发还是只收或只发? 等等。 |
| Candidate | 主要包含 IP Port 信息 |
WebRTC 能做什么
- 音视频传输
- 语音通话
- 视频通话
- 直播推流 - 采集摄像头画面,推送出去
- 桌面录屏 - 采集桌面画面,推送出去
- 本地音视频文件推送 - 播放本地文件,推送出去
- 音视频录制,并下载
- 数据传输
- 文字聊天
- 发送文件
- 等等
实际上官网的例子都已经很全了,而且有在线demo,具体请见 webrtc.github.io/samples/
音视频录制,并下载
官网中对这部分的内容,并不是很详细,所以我对其进行了补充,保证了整个流程的完整性,感兴趣的朋友可以看这篇文章 WebRTC 视频录制下载 - 我被产品经理套路了
后记
WebRTC 的入门其实还是很简单的,感兴趣的朋友可以切身体验下官网的在线demo。(虽然可能不做音视频的你,这辈子都用不到 WebRTC 。。。)
仿微信实战项目是一个正在更新的系列,过往文章: