前言
WebRTC(Web Real-Time Communication)是一项支持浏览器进行实时高质量音视频通讯的技术,但是 WebRTC 本身实现起来相对复杂,其中包括 ICE、STUN、TURN、SDP 等概念。不过现在有很多好用的 WebRTC 库可以让我们更方便的实现这些功能,其中最主流的可能就是 SimpleWebRTC。不过在此介绍另外一款 WebRTC 库 — webrtc-ring。
webrtc-ring 是一款纯 JS 实现的 WebRTC 库,相对于 SimpleWebRTC 等库,webrtc-ring 的代码体积更小(大约 10KB), 集成了 STUN/TURN 服务器,支持多人通讯等。虽然它在国内使用较少,但是在国外社区中被广泛使用。
本文详细介绍 webrtc-ring 的使用方法,包含示例代码。
安装
安装 webrtc-ring 利用 npm 可以很方便地完成:
npm install webrtc-ring
webrtc-ring 中依赖了一款 Promise 实现的库 bluebird,如果你的项目中未引入可以像如下引入:
-- -------------------- ---- ------- --------- ----- ------ ------ --- ------- ------ --- ------- -------------------------------------------------------------------------------- ------- ----------------------------------------------- ------- -------
使用与 DEMO
在使用 webrtc-ring 之前,我们需要有一个 STUN/TURN 服务器。这里我们推荐 coturn,需要的自己配置。之后我们就可以像如下这样在项目中使用 webrtc-ring(以下演示了发布本地视频):
-- -------------------- ---- ------- ------ - --------- ---- - ---- -------------- ----------- ----- ---- - --- ------ -------------- --- -- -------- --------------- --- -- -------- -------------- --- -- ---- ----- --------------- --- -- ---- ----- -------------- --- -- ---- ----- --------------- --- -- ---- ----- --------- --- -- --------- --------- --- -- ---------- --- ------------------------------------- ------ ----- ------ ----- --------------------- -- - -- --------- ------ -- -------------------------------------------- ---------------- -- - --------------------------- ------- ------- ---
因为 webrtc-ring 的底层使用了 WebSocket,所以我们在配置完服务器信息后应该监听 ready 事件:
peer.on('ready', () => { console.log('Ring ready event'); });
发布本地视频流:
-- -------------------- ---- ------- -- -------------- ------------------------ -- - ----------------------------- ----------------------------------------------------------- -------------------- ------------------- -- - ---------------------- ----- ------------------- ---------------- -- - -------------------- -- ---------- -------- ------- ---
订阅远程视频流:
-- -------------------- ---- ------- -- -------------- ---------------------------------------------- -- - ----------------- --------- ----- ------------------------------- ----------------------------- ----- -- - ---------------------------- -- ----- ------------------------------------------ ------ ----- ------------ - -------------------------------- ---------------------- - --------------------------------- -------------------- ----------------------------------------------------------- --- ---------------- -- - -------------------- -- ----------- -------- ------- ---
完整示例代码见Github 仓库
API
webrtc-ring 还有其他丰富的 API 支持,比如说:
- Ring.connect: 用于创建 Ring 对象
- Ring.publish: 发布本地流
- Ring.subscribe: 订阅远程流
- Ring.leave: 离开会议
- Ring.getLocalVideo: 获取本地摄像头
详细使用可以查阅 webrtc-ring on Github.
总结
webrtc-ring 是一款轻量级,易上手的 WebRTC 库,相比于 SimpleWebRTC 等库的代码体积更小,相信会在未来被更多人使用。本文主要介绍了 webrtc-ring 的使用方法,同时提供了一个完整的 DEMO 供读者参考。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671058dd3466f61ffdd84