(內附示例源碼)如何通過electron構建桌面跨平台音視頻應用


近年來,視頻直播、直播帶貨、在線教育、在線醫療等音視頻領域的相關行業都非常熱門,成為大眾矚目的焦點。

在不久的將來,音視頻技術滲透於各行各業,無處不在。從IoT網絡到個人用戶的移動設備,音視頻技術以不同的形態廣泛存在各個終端和應用平台。因此,實現跨平台的應用開發就顯得非常重要,一套代碼多平台適用,跨平台開發降低了工程師的工作量,讓產品快速迭代。

本文將介紹如何通過Electron構建桌面跨平台音視頻應用。

 

一、桌面音視頻應用開發難度大,跨平台開發變得流行

過去開發一個桌面的視頻應用,通常首選開發語言是C++。桌面UI框架一般選擇QT、MFC自繪、Duilib、SoUI或者付費的UI庫等,但是無論哪種框架,都有很大的局限性。要么是不跨平台,要么是使用的門檻高,要么是本身表現不好,要么就是不太穩定導致開發過程中還需要踩很多坑。可以說C++做桌面應用開發時,UI框架的選擇是比較困難的。

隨着前端技術發展的不斷革新,各種前端框架的不斷涌出,桌面應用越來越多的向web靠近,利用前端的技術來實現桌面應用的UI跨平台變得越來越流行。

Electron 技術的出現,讓開發者可以使用 JavaScript, HTML 和 CSS 構建跨平台的桌面應用,基於Electron構建的應用兼容 Mac、Windows 和 Linux等多系統,擺脫了不同瀏覽器之間的差異和版本限制。VS Code就是一款向世人展示Electron技術能力的優秀桌面應用程序。

 

二、通過WebRTC構建桌面應用的局限

Electron采用的是Chrome內核來做前端渲染,基於Chrome談音視頻,如果要用開源的音視頻方案,現在最流行的就是WebRTC了。 

基於WebRTC技術,可以實現簡單的視頻一對一通話場景。Google的推薦解決方案支持視頻p2p通話以及服務器轉發,開發者基本只需研發信令方面的內容,在服務器端幾乎可以不做任何開發,可以說是一個比較完善成熟的解決方案。

然而目前的實時音視頻應用,絕不僅限於簡單的視頻一對一通話。像視頻預處理加個美顏、聲音做個變聲或者直播時放個背景音樂等等看似很普通很合理的需求,如果直接使用WebRTC方案,從目前看都幾乎很難實現。音視頻領域有種流行說法:從demo到產品,中間還差1萬個WebRTC。雖說略為誇張,但卻反映了使用WebRTC的過程中,還有非常多音視頻專業問題需要解決。

僅僅只通過WebRTC來實現一款優秀的實時音視頻產品,想法過於簡單。音視頻領域涉及到非常多的專業內容,即便是做個簡單demo也不是幾行代碼就可以完成的,在實際產品開發中,通過信令交換sdp、candidate以及處理時序等各環節,都需要開發者小心翼翼去實現,才能夠完成視頻的聯通。

 

三、即構推出Electron平台SDK,實現高性能優化

音視頻產品跨平台開發的重要性在逐步凸顯,即構科技作為專業的實時語音視頻雲服務商,推出基於Electron平台的SDK,讓開發者通過調用即構SDK即可實現跨平台應用的快速構建。ZEGO Electron SDK基於Electron C++的拓展插件調用即構原生sdk實現,並對js與原生sdk交互進行優化實現高性能。

 

ZEGO Electron SDK主要的優化內容有:

1、減少js代碼處理視頻數據的機會。即構使用js和c++共享內存方式進行處理,處理視頻幀數據全部在c++層代碼,js層只負責把這塊內存數據輸送到顯卡內存,通過webgl來渲染。

2、優化視頻渲染性能。即構利用V-Sync技術進行渲染,有效解決多路視頻情況下的渲染性能問題。

通過Zego Electron SDK,不但獲得強大的原生平台音視頻能力,而且還能極大的降低開發門檻,大幅度提高開發效率。

 

四、4步搭建桌面跨平台音視頻應用

基於Zego Electron SDK,通過簡單的4個函數,就能實現視頻的發送和接收。

第一,初始化SDK。通過ZEGO官網控制台申請的AppId和AppSign初始化sdk即可。

 

 

第二,登錄房間。初始化sdk成功后,用戶自己指定一個房間id就可以進行登錄房間了。

 

 

 

第三,音視頻推流。登錄成功后,只通過一個推流函數,自定義一個推流id就可以把本地的攝像頭實時數據推到ZEGO的服務器。

 

第四,音視頻拉流。通過一個拉流函數,指定拉流的流id進行拉流,就可以把ZEGO服務器上的視頻流拉到本地進行顯示。

 

簡單四步,開發者可輕松構建一個桌面跨平台應用,實現實時音視頻數據的發送和接收。通過Zego Electron SDK 實現的音視頻應用,還能與Zego的其它平台SDK,如Android、iOS、Web js(webrtc版)、微信小程序、window(c++、c#)、Mac等互通,進一步降低跨平台開發的工作量。

Zego Electron SDK集成文檔請點擊:

https://doc-zh.zego.im/zh/2193.html

示例源碼請點擊:

https://github.com/zegoim/zego-electron-quick-start

關於音視頻行業的跨平台開發技術,歡迎留言與我們交流。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM