女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

如何利用Electron實現一個視頻會議應用?

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

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

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

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

本文將為大家分析利用 Electron 做視頻會議應用的幾種實現思路及其優缺點,同時結合 demo 實例,分享如何基于 Electron 與聲網 Agora Web SDK 開發一個視頻會議應用。

實現視頻會議的幾種思路

如何利用 Electron 實現一個視頻會議應用?這主要取決于使用什么技術來實現作為業務核心的 RTC 部分。

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

這種方式的優點是直接調用 C++ 接口,在性能和穩定性上有一定優勢。但是,缺點是 Native 模塊與 Web 模塊的交互會相對復雜。

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

第二種思路是使用 WebRTC,即界面部分和 RTC 業務部分都通過 Web 來實現。

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

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

通過與 WebRTC 技術結合,Agora Web SDK 實現了網頁端多方音視頻通訊,可以快速實現 RTC 部分的開發。WebRTC 用戶的音視頻數據經由 Agora.io 的 SD-RTN 實時云傳輸,可以最大程度上保證公網的傳輸質量,結合 WebRTC 自有的丟包/丟幀重傳,以及帶寬預測,動態碼率調整等策略,可以達到非常良好的多方通話用戶體驗。

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

基于 Agora Web SDK實現音視頻通話

我們需要在 Electron 環境中創建一個名為 web-app 的目錄,在里面創建基本的 Web 部分內容并快速實現一個視頻通話通能。

創建 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 })

創建本地流并推送:

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},

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

創建 BrowserWindow 實例并讀取 web-app 目錄中的內容:

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

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

    關注

    4

    文章

    160

    瀏覽量

    30462
  • C++
    C++
    +關注

    關注

    22

    文章

    2117

    瀏覽量

    74776

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

文章出處:【微信號:shengwang-agora,微信公眾號:聲網Agora】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    視頻會議系統穩定性更重要

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

    什么牌子的視頻會議系統好?

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

    MCU與視頻會議系統

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

    SD-WAN如何支持視頻會議

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

    怎么實現視頻會議多點控制單元的MCU設計?

    怎么實現視頻會議多點控制單元的MCU設計?
    發表于 06-04 06:27

    視頻會議系統MCU是什么意思

    視頻會議系統MCU屬于視頻會議中的關鍵設備,般我們也稱作視頻會議服務器,本文將對視頻會議系統MCU進
    發表于 11-03 06:32

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

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

    視頻會議系統/遠程會議解決方案分為幾種

    到相關互聯網企業的關注。軟件實現會議溝通需要“云”支持,其實就是通信數據處理,主要是利用云技術將相關視頻會議有效延伸到各終端,包括手機視頻
    發表于 11-03 07:02

    視頻會議MCU有何作用

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

    視頻會議終端和MCU的區別是什么

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

    什么是視頻會議

    什么是視頻會議     視頻會議系統是通過網絡通信技術來實現的虛擬會議,使在地理
    發表于 12-30 11:22 ?1004次閱讀

    什么是視頻會議系統

    什么是視頻會議系統 視頻會議系統是通過網絡通信技術來實現的虛擬會議,使在地理上分散的用戶可以共聚處,通過圖形、聲音等多種方式交流信
    發表于 02-06 14:37 ?720次閱讀

    如何設置視頻會議室簡介

    如何設置視頻會議室簡介  如何設置視頻會議視頻
    發表于 02-21 09:48 ?1741次閱讀

    視頻會議系統,視頻會議系統是什么意思

    視頻會議系統,視頻會議系統是什么意思  視頻會議視頻會議系統,又稱會議電視系統,是指兩或兩
    發表于 03-24 10:18 ?3504次閱讀

    高清視頻會議的標準 高清視頻會議和高清電視的區別

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