乐趣区

关于webrtc:如何用-Electron-WebRTC-开发一个跨平台的视频会议应用

在搭建在线教育、医疗、视频会议等场景时,很多中小型公司经常面临 PC 客户端和 Web 端二选一的抉择。Electron 技术的呈现解决了这一难题,只需前端开发就能实现一个跨平台的 PC 端利用。本文次要介绍应用 Electron + WebRTC 搭建跨平台的视频会议利用的技术计划。

作者| 峻崎

审校| 泰一

什么是 Electron?

Electron 是应用 JavaScript、Html 和 CSS 构建跨平台的桌面应用程序。(官网链接)

为什么要应用 Electron?

目前很多中小型公司并不具备 pc 端上的开发能力,广泛只有挪动端开发团队 + 前端开发团队。而在浏览器中应用音视频会议的限度又十分多。所以如何可能低成本,疾速开发一个 pc 端的利用,就成了很多中小型公司的需要。而 Electron 只须要前端开发就能实现一个跨平台的 pc 端利用。前端开发能够把原有的页面迅速移植到 electron 程序中,甚至能够间接在 Electron 中间接加载网页。

Electron 的架构

首先 Electron 外面蕴含了一个 chromium,而 chromium 的架构能够简略了解为:

因而,Electron 的架构就能够简略了解为:

Electron 反对平台

MacOS

对 macOS 提供 64 位版本,并且只反对 macOS 10.10 (Yosemite) 以及更高版本。

Windows

仅反对 Windows 7 或更高版本为 Windows 零碎提供 ia32 (x86) 和 x64 (amd64) 两种二进制版本。

Linux

Electron 的 ia32 (i686) 和 x64 (amd64) 预编译版本均是在 Ubuntu 12.04 下编译的,预编译版本是否可能失常运行,取决于其中是否蕴含了编译平台的链接库。所以只有 Ubuntu 12.04 是能够保障能失常运行的,并且以下平台也被证实能够失常运行 Electron 的预编译版本:

  • Ubuntu 12.04 或更高版本
  • Fedora 21
  • Debian 8

    Electron 中应用 WebRTC 两种计划

    基于浏览器 API 应用 WebRTC

    因为 Electron 中蕴含了 chromium,所以 Electron 能够应用浏览器的所有 api。如果曾经实现了基于浏览器的 WebRTC 利用,在 Electron 中也是不须要任何批改就能够间接应用的 (桌面共享稍微不同,须要做一点点批改)。

    基于 native sdk 应用 WebRTC

    因为 Electron 中运行了 nodejs,所以在 Electron 中就有了应用 native sdk 的解决方案。

接入方只须要对接 javascript 的 api。而不用关怀外部 native sdk 的 api 和应用形式。同样是一套前端的代码,同时能够生成 pc 端三个平台的应用程序。

两种计划在前端的区别

在接入层面,根本不存在区别。只是 H5 SDK 应用 html 中的 video 元素进行视频的显示。而 Electron SDK 因为应用了 native sdk,所以须要在 Electron SDK 本人进行绘制工作,所以须要传入的是 canvas 而不是 video。在音视频通话的品质方面,显著应用 native sdk 的品质会更高,不须要依赖浏览器内核,能够避开很多浏览器的限度,同时 native 端的一些优化也都能够应用。

Electron 中应用 native sdk 的注意事项

addon 版本问题

在 Electron 中应用 native sdk 须要用到 nodejs addon。具体 nodejs addon 的应用形式间接上官网链接,其中最最次要的就是 Electron 中自带了一个 nodejs,带来的问题就是开发者本机的 nodejs 版本和 Electron 中的不同,后果就是在本机 node 环境中运行失常的 addon 在 Electron 总是报错,次要是版本不兼容的谬误。所以在 Electron 应用之前须要做一次从新编译。Electron 中如何应用 Node 原生模块

HOME=~/.electron-gyp node-gyp rebuild --target=6.0.10 --arch=x64 --dist
-url=https://electronjs.org/headers

其中 target 是 Electron 的版本。能够在 Electron 我的项目的 package.json 中看到本人的版本。

native sdk 下载

因为 Electron 会将我的项目中应用到的依赖都打包到安装包中,而 Electron 自身就曾经带了 chromium 和 nodejs。所以个别会减少一个用于下载 native sdk 的库,主动判断以后的平台,而后下载对应平台的 sdk,同时也能够管制下载的 sdk 版本。防止一次下载所有平台的 sdk。减少利用的安装包大小。

「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实际技术文章,在这里与音视频畛域一流工程师交换切磋。

退出移动版