0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何利用Electron實現(xiàn)一個視頻會議應(yīng)用?

BYXG_shengwang ? 來源:未知 ? 作者:李倩 ? 2018-03-20 15:35 ? 次閱讀

對于在線教育、醫(yī)療、視頻會議等場景來講,開發(fā)面向 Windows、Mac 的跨平臺客戶端是必不可少的一步。在過去,每個操作系統(tǒng)的應(yīng)用需用特定的編程語言編寫,每個客戶端都需要單獨開發(fā)。而現(xiàn)在我們可以利用多種工具、框架進行跨平臺開發(fā)。Electron 就是其中最熱門的一個。

Electron的前身是Atom Shell,是基于Node.js 和 Chromium 開源項目。它讓前端開發(fā)者也可以使用 JavaScript,HTML和CSS構(gòu)建跨平臺的桌面應(yīng)用程序。

Electron 兼容 Mac、Windows 和 Linux。利用它構(gòu)建的應(yīng)用可在這三個操作系統(tǒng)上面運行。我們在很多著名項目中都能看到它的身影,比如 Slack、Cocos Creator、Visual Studio Code 等 500 多個項目。

本文將為大家分析利用 Electron 做視頻會議應(yīng)用的幾種實現(xiàn)思路及其優(yōu)缺點,同時結(jié)合 demo 實例,分享如何基于 Electron 與聲網(wǎng) Agora Web SDK 開發(fā)一個視頻會議應(yīng)用。

實現(xiàn)視頻會議的幾種思路

如何利用 Electron 實現(xiàn)一個視頻會議應(yīng)用?這主要取決于使用什么技術(shù)來實現(xiàn)作為業(yè)務(wù)核心的 RTC 部分。

第一種思路是使用 C++ SDK 來實現(xiàn)。我們可以通過 NodeJS 插件 node-gyp 將 C++ 的庫編譯成 NodeJS 可以直接使用的文件,界面部分則通過 Web 來實現(xiàn),最后 RTC 業(yè)務(wù)部分則使用編譯的插件直接調(diào)用 C++ 接口。

這種方式的優(yōu)點是直接調(diào)用 C++ 接口,在性能和穩(wěn)定性上有一定優(yōu)勢。但是,缺點是 Native 模塊與 Web 模塊的交互會相對復雜。

盡管 NodeJS 可以直接調(diào)用 C++ 的接口,但若 C++ 要通過回調(diào)向 Node 部分傳遞數(shù)據(jù),則需要確保數(shù)據(jù)傳輸?shù)?Electron 所在的線程上, Electron 才可以收到回調(diào)。又比如,若 C++ SDK 使用了具有平臺差異的動態(tài)庫依賴,則在使用 node-gyp 編譯的過程中必須在不同平臺上編譯不同的版本才可以在 Electron 中正常使用。

第二種思路是使用 WebRTC,即界面部分和 RTC 業(yè)務(wù)部分都通過 Web 來實現(xiàn)。

這種方法的優(yōu)點是集成和調(diào)試十分簡單,大部分工作可以在瀏覽器中完成后直接近乎無縫移植到 Electron。

不過,由于 WebRTC 缺少服務(wù)端設(shè)計和部署方案,我們首先還需要將 WebRTC 與 Janus 等開源項目結(jié)合,解決服務(wù)器的部署、NAT 穿透等問題,實現(xiàn) RTC 部分,這也是這種實現(xiàn)方法的難點。但如果通過 Agora Web SDK 來實現(xiàn) RTC 部分,則不需要擔心以上問題,也是目前最快速簡便的實現(xiàn)方法。

通過與 WebRTC 技術(shù)結(jié)合,Agora Web SDK 實現(xiàn)了網(wǎng)頁端多方音視頻通訊,可以快速實現(xiàn) RTC 部分的開發(fā)。WebRTC 用戶的音視頻數(shù)據(jù)經(jīng)由 Agora.io 的 SD-RTN 實時云傳輸,可以最大程度上保證公網(wǎng)的傳輸質(zhì)量,結(jié)合 WebRTC 自有的丟包/丟幀重傳,以及帶寬預(yù)測,動態(tài)碼率調(diào)整等策略,可以達到非常良好的多方通話用戶體驗。

針對這方面的集成,我們也已經(jīng)在 Github 上提供了一個開源的 demo 項目。我們下面來簡要梳理一下 demo 中如何實現(xiàn)核心音視頻通話功能。

基于 Agora Web SDK實現(xiàn)音視頻通話

我們需要在 Electron 環(huán)境中創(chuàng)建一個名為 web-app 的目錄,在里面創(chuàng)建基本的 Web 部分內(nèi)容并快速實現(xiàn)一個視頻通話通能。

創(chuàng)建 AgoraRTC 實例并加入頻道:

1let client = AgoraRTC.CreateClient({mode:"interop"})

初始化 appid 并加入頻道:

1 client.init(options.key, () => {2 console.log("AgoraRTC client initialized")3 client.join(options.key, options.channel, options.uid, (uid) => {4 console.log("User " + uid + " join channel successfully")5 console.log(new Date().toLocaleTimeString())6 // create localstream7 resolve(uid)8 })9 })

創(chuàng)建本地流并推送:

1let stream = AgoraRTC.creatStream(merge(defaultConfig.config))2localStream.init(() =>{3 client.publish(localStream, err => {4 console.log("Publish local stream error: " + err);5 localStream.play("element_id")6 })7},

在完成上面的步驟后,你應(yīng)該就能看到自己的視頻畫面了,下一步我們要讓這部分代碼在 Electron 的 App 容器中跑起來。

創(chuàng)建 BrowserWindow 實例并讀取 web-app 目錄中的內(nèi)容:

1const electron = require('electron') 2// Module to control application life. 3const app = electron.app 4// Module to create native browser window. 5const BrowserWindow = electron.BrowserWindow 6let mainwindow 7function createWindow () { 8 // Create the browser window. 9mainWindow = new BrowserWindow({width: 800, height: 600})10 // and load the index.html of the app.11 mainWindow.loadURL(url.format({12 pathname: path.join(__dirname, './web-app/dist/index.html'),13 protocol: 'file:',14 slashes: true15 }))16mainWindow.webContents.openDevTools()17//Open the DevTools18//mainWindow.webContents.openDevTools()19//Emitted when the window is closed.20mainWindow.on('closed',function(){21 // Dereference the window object, usually you would store windows22 // in an array if your app supports multi windows, this is the time23 // when you should delete the corresponding element.24 mainWindow = null25})

完成后使用 npm start 啟動 Electron 即可。

最后附上 demo 源碼:https://github.com/AgoraIO/Agora-Web-Electron-Demo

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 視頻會議
    +關(guān)注

    關(guān)注

    4

    文章

    158

    瀏覽量

    30182
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2110

    瀏覽量

    73691

原文標題:一文解析:Electron實現(xiàn)視頻會議的幾種思路

文章出處:【微信號:shengwang-agora,微信公眾號:聲網(wǎng)Agora】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    視頻會議系統(tǒng)穩(wěn)定性更重要

    臺服務(wù)器上同時有上千人起使用,也不會出現(xiàn)視頻畫質(zhì)不流暢或者語音不清晰的情況。所以說,要想購買到好的視頻會議系統(tǒng),要想擁有好的視頻會議的效
    發(fā)表于 02-21 10:53

    什么牌子的視頻會議系統(tǒng)好?

    視頻會議系統(tǒng)還要貴。如果是幾個點起開視頻會議還可以勉強接受,如果并發(fā)數(shù)大的話,買斷型視頻會議系統(tǒng)相對于租賃型
    發(fā)表于 04-26 17:49

    MCU與視頻會議系統(tǒng)

    單元)的作用就是在視頻會議三點以上時,決定將哪路(或哪四路合并成)圖像作為主圖像廣播出去,以供其他會場點收看。所有會場的聲 音是實時同步混合傳輸?shù)?。在具有MCU
    發(fā)表于 06-14 14:35

    SD-WAN如何支持視頻會議

    種這樣的方法涉及寬帶綁定,其中可以組合兩或更多個互聯(lián)網(wǎng)線路以創(chuàng)建更具彈性和更高性能的隧道。隨著IT團隊制定出最能滿足公司目標的視頻會議系統(tǒng),他們需要考慮任何時候可能連接的設(shè)備數(shù)量以及他們的網(wǎng)絡(luò)容量
    發(fā)表于 07-12 14:08

    怎么實現(xiàn)視頻會議多點控制單元的MCU設(shè)計?

    怎么實現(xiàn)視頻會議多點控制單元的MCU設(shè)計?
    發(fā)表于 06-04 06:27

    視頻會議系統(tǒng)MCU是什么意思

    視頻會議系統(tǒng)MCU屬于視頻會議中的關(guān)鍵設(shè)備,般我們也稱作視頻會議服務(wù)器,本文將對視頻會議系統(tǒng)MCU進
    發(fā)表于 11-03 06:32

    視頻會議終端和MCU有哪些差異

    原標題:視頻會議終端和MCU兩者有什么區(qū)別視頻會議終端和MCU都是視頻會議系統(tǒng)的核心組成部分之,但其價格也相對高昂,是整個視頻會議系統(tǒng)的主
    發(fā)表于 11-03 08:05

    視頻會議系統(tǒng)/遠程會議解決方案分為幾種

    到相關(guān)互聯(lián)網(wǎng)企業(yè)的關(guān)注。軟件實現(xiàn)會議溝通需要“云”支持,其實就是通信數(shù)據(jù)處理,主要是利用云技術(shù)將相關(guān)視頻會議有效延伸到各終端,包括手機視頻
    發(fā)表于 11-03 07:02

    視頻會議MCU有何作用

    在回答這個問題之前,我們先來認識下,什么是視頻會議MCU。視頻會議MCU多點控制單元也叫多點會議控制器,英文名為Multi Control Unit,簡稱MCU。MCU是多點
    發(fā)表于 11-03 08:46

    視頻會議終端和MCU的區(qū)別是什么

    原標題:詳解視頻會議終端和MCU的區(qū)別視頻會議終端和MCU都是視頻會議系統(tǒng)的核心組成部分之,但其價格也相對高昂,是整個視頻會議系統(tǒng)的主要成
    發(fā)表于 02-08 07:46

    什么是視頻會議

    什么是視頻會議     視頻會議系統(tǒng)是通過網(wǎng)絡(luò)通信技術(shù)來實現(xiàn)的虛擬會議,使在地理
    發(fā)表于 12-30 11:22 ?946次閱讀

    什么是視頻會議系統(tǒng)

    什么是視頻會議系統(tǒng) 視頻會議系統(tǒng)是通過網(wǎng)絡(luò)通信技術(shù)來實現(xiàn)的虛擬會議,使在地理上分散的用戶可以共聚處,通過圖形、聲音等多種方式交流信
    發(fā)表于 02-06 14:37 ?661次閱讀

    如何設(shè)置視頻會議室簡介

    如何設(shè)置視頻會議室簡介  如何設(shè)置視頻會議視頻
    發(fā)表于 02-21 09:48 ?1711次閱讀

    視頻會議系統(tǒng),視頻會議系統(tǒng)是什么意思

    視頻會議系統(tǒng),視頻會議系統(tǒng)是什么意思  視頻會議視頻會議系統(tǒng),又稱會議電視系統(tǒng),是指兩或兩
    發(fā)表于 03-24 10:18 ?3446次閱讀

    高清視頻會議的標準 高清視頻會議和高清電視的區(qū)別

    高清視頻離我們越來越近,在視頻會議領(lǐng)域,各廠商也主打高清概念,那么高清視頻會議到底是什么呢?想必對些新手來說,可能還比較模糊,下面我們從高清視頻
    發(fā)表于 04-09 11:42 ?1608次閱讀