仿微信实战项目 (二)聊聊 WebRTC

372 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情

Web Real-Time Communications 实时通信技术

前言

仿微信实战项目中,我们将通过 WebRTC 来实现 音视频通话 功能,所以这里单拎出来一节,浅谈下 WebRTC

音视频通话

简单理解音视频通话

以音频通话为例,就是两端分别将音频流推给对方。例如:

  • 李四本地起一个socket,监听 13579 端口
  • 王五本地起一个socket,监听 12138 端口

两人通过服务器,把本次通话的 ip 和 port 告诉对方。之后就能互发音频了

image.png

因为通话是临时的,可并发的。所以往往端口不会固定,通话结束后也会销毁。所以通过服务器互换 ip 和 port 是很有必要的。

进一步理解音视频通话

只知道对方的 ip 和 port 其实是不够的,往往还需要很多细节需要和对方协商。比如音、视频编码格式是什么?视频分辨率是多少?等等

所以互换 ip 和 port 的同时我们还需要携带更多的信息,以便于音视频通话能够顺利进行。

关于 WebRTC 与相亲

image.png

小帅是一个30多岁的单身狗,他一直对高中同学小美念念不忘,但是多年没联系了,他没有小美的联系方式。

于是他找到了高中班主任张三,表明了来意,并把自己的个人信息告诉了班主任(身高、体重、发量等)。然后张三拿着小帅的信息找到了小美,小美决定于尝试和小帅交流下,于是把自己的个人信息也让张三转交给小帅。

双方互换个人信息后,小帅心中大喜,有门。于是拜托张三把地址和邮编告诉小美。小美保存了小帅的地址和邮编以后,也把她的地址和邮编通过张三转告给了小帅。

自此,小帅和小美互留了对方的地址和邮编。 之后俩人就可以通过写信来交流了

image.png

相信细心的朋友已经发现了,小帅和小美建立联系的这段内容,映射到了通话的建立过程。对应到 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 。。。)


仿微信实战项目是一个正在更新的系列,过往文章: