• 已删除用户
Administrator
发布于 2022-12-16 / 2 阅读
0

HTML5标准之WebRTC

什么是 WebRTC

WebRTC 是一组 JavaScript API,可以在两个浏览器之间建立点对点连接,实现音频和视频等数据的传输,可以用它创建有语音/视频通话功能的应用程序。WebRTC 在 2021 年被 W3CIETF 发布为正式标准,而且得到了大多数主流浏览器的支持。

在 WebRTC 诞生之前,开发实时音视频应用的成本是非常高,需要考虑的技术问题很多,如音视频的编解码,数据传输延时、丢包、网络抖动、回音处理和消除等,如果要兼容浏览器端的实时音视频通信,还需要额外安装插件。

WebRTC 的特别之处是,一旦建立了连接,就可以直接在浏览器之间实时传输数据,不需要借助服务器,因此降低了延迟,所以用户都喜欢用 webRTC 直接传输音视频。

WebRTC 与 WebSockets 的区别

  • WebSockets
    使用 WebSockets 也可以建立点对点连接,实时传输数据,但这种连接是在客户端和服务器之间。因此,如果我向某一对等点发送消息,这个消息会先传送到服务器,然后服务器再把这个消息发送给另一个对等点。通常来说,这种传输非常快,如果大家发送的是聊天信息或某些通知,即使有一些延迟也注意不到。

    但如果我们用 WebSockets 传输音视频情况就不一样了。用 WebSockets 传输音视频时,即使有非常轻微的延迟也会非常明显,还会导致很多其他问题。当视频数据到达服务器并返回对等点时,用户会感觉到明显的延迟。

  • WebRTC
    WebRTC 的优势是在两个浏览器之间建立连接并直接交换数据,消除了服务器可能导致的延迟,WebRTC 还使用了用户数据报协议(UDP),这些都有利于数据的快速传输。

    WebRTC 使用 UDP,但是用 UDP 传输重要数据会有点不太可靠。UDP 的优势在于传输数据非常快,劣势在于它不检查数据是否被成功接收。所以,可以用 UDP 来传输视频,就算传输过程中丢失了几帧,也没啥大问题;但如果是发送文件,丢失几个字节的数据就会导致整个文件的损坏。

    WebRTC 没有内置信令,所以只用 WebRTC 没法建立点对点的连接,但一旦建立了连接,WebRTC 就可以处理所有问题,至于如何传输初始数据来连接两个对等点则由我们决定。

通常 WebRTC 会与 WebSocket 配合使用,WebSocket 的作用主要是用来交换客户端的 SDP 与网络信息,WebSocket 传输的内容与真正通信数据无关,只是协助 WebRTC 建立连接。

参考资料

WebRTC 已成为 HTML5 标准?是时候开始学习了?