「我始終相信開源會產生裂變。當越來越多的開發者參與到開源項目中,這套代碼、組件就不僅僅只是一套代碼,它會變成我們未來的生產力和競爭力。」網易智企低延時直播開源負責人、網易雲信流媒體首席架構師吳桐說道。
開源去年被納入《「十四五」軟件和信息技術服務業發展規劃》,上升到了國家戰略層面。同時,開源軟件公司在資本市場表現不負眾望,多家公司估值突破 100 億美元。國內的開發者社區和投資人群體對開源的認知在進一步提高。
越來越多的企業投身開源,網易智企便是其中之一。今年 3 月,網易智企正式發布了「易 +」開源計劃。網易智企旗下圍繞 IM、音視頻技術提供 PaaS 服務的網易雲信打響頭炮,先後開源了自己的會議組件 NetMeeting SDK 和低延時直播方案 LLS-Player。
相關地址:
https://github.com/GrowthEase/NetEase_Meeting
https://github.com/GrowthEase/LLS-Player/
依託網易 24 年 IM、音視頻技術積累,網易雲信已經幫助 120 萬企業開發者成功發送 1.6 萬億條消息,全球註冊應用數 48 萬,覆蓋智能終端 SDK 數超過 186 億。「網易智企許多產品和技術發展受益於開源帶來的紅利,現在我們也將部分技術開源,反哺技術創新。」吳桐表示。
今年 3 月份,網易雲信首次開源了自己的會議組件 NEMeeting SDK。
疫情期間,人們已經對在線會議軟件不再陌生,甚至在線會議軟件已經成為日常辦公的必備工具。為使開發者能夠快速便捷地擁有穩定的會議系統,網易會議 NEMeeting SDK 提供了一套簡單易用的接口,允許開發者通過調用 SDK 提供的 API,快速集成音視頻會議功能至現有應用中。
網易會議組件架構
根據官方介紹,NEMeeting SDK 架構可以分為四層:
Base 主要包含了雲信的各基礎 SDK 和一些第三方 SDK。
Room Kit 是一個無 UI 房間服務組件,承載了與 Server 通信邏輯,同時處理一些會控邏輯。據悉,Room Kit 未來會演進成一個泛會議的房間服務。
Meeting SDK 是一個帶 UI 的會議服務組件, 提供了一整套的標準會議 UI 實現,以及有限的 UI 自定義功能。
App 層,雲信標準版網易會議應用實現, 支持直接編譯成一個獨立的應用。
會議組件開源兩個月後,網易雲信在 5 月份再次開源了低延時直播方案,目前開源了信令交互協議、低延時引擎和播放器插件。開發者使用一套低延時播放器代碼,就可實現同時對接多家低延時直播廠商,大大減小包體積的增量。
根據吳桐介紹,目前市面上推出的低延時直播產品都採用了私有協議,並且需要綁定對應的 SDK,如果接入多家就需要接入多個 SDK,對包大小非常不友好。採用私有協議也導致各廠商產品之間無法兼容,低延時直播難以大規模推廣。
因此,網易雲信基於 WebRTC 實現了一個通用的低延遲的播放器,主要分為 3 個模塊:
FFmpeg plug-in: FFmpeg 插件。
RtdEngineImpl: 低延時播放引擎,既 WebRTC 封裝層,包含 API、引擎創建、信令建聯、媒體數據的接收回調等。
WebRTC: 標準 WebRTC 代碼,實現媒體建聯,數據接收,數據包排序組幀等。
開發者通過調用低延時引擎 API,快速集成低延時直播功能到現有的播放器中。同時,我們還將低延時引擎相關 API 封裝成了 FFmpeg 插件,作為 FFmpeg AVInputFormat 的一種,對於使用 FFmpeg 作為基礎庫的播放器,開發者僅需將低延時引擎和 FFmpeg 插件源碼編譯到自己的 FFmpeg 中,不需要對播放器進行改造,通過替換播放 URL,直接復用原有的流程就可以擁有低延時播放的能力。
針對低延時直播場景,網易雲信深度定製了 WebRTC 引擎,支持 AAC、B 幀和多 Slice,並對首幀和端到端延時都進行了優化,目前首幀時間控制在 200ms 左右,端到端延時控制在 1s 以內。
未來,網易雲信還會開源低延時直播引擎的裁剪版本,進一步優化包體積和各種播放指標。並繼續推出開源的低延時直播推流引擎和低延時推流插件,提供低延時直播的全鏈路解決方案,進一步降低開發門檻,推動低延時直播行業的快速發展。
「網易會議的開源開啟了網易智企的開源時代,低延時直播的開源則深化了我們的開源計劃。」吳桐說道。
事實上,「易 +」開源計劃在 2021 年便開始籌備。據吳桐透露,項目開源的準備工作非常多、非常雜。首先需要確定開源的內容、要開源到什麼地步,其次需要準備相關的資料,包括一套完整的代碼、成熟的指導文檔,甚至開源後的持續更新迭代和答疑也需要提前有所準備。
在許可證選擇方面,吳桐表示不想設置太多限制,希望開源項目可以對所有的開發者完全開放、支持修改商用。因此,目前的 NetMeeting SDK、LLS-Player 都選用了軟件授權條款相對寬鬆的 MIT 許可證。
「寬鬆的許可,能讓項目的使用範圍更廣,開創的內容也更豐富。」吳桐建議道,「對於開源項目,我們比較建議選擇 MIT/BSD/Apache,相對寬鬆的許可證會讓大家更有使用的意願。具體地,還要從許可授權、許可授予條件以及聲明免除保證和責任限制等幾個方面來綜合考慮。」
整個籌備過程中,最重要的還是開源源碼的籌備。「開放源碼的功能實現要最大程度的符合標準,因為我們的低延時播放器除了可以對接雲信的服務,也可以對接其他廠商的服務,標準化可以最大程度避免兼容性問題。另外,我們需要進行大量測試,保證代碼運行質量和功能指標。」吳桐表示。
源碼開放只是第一步,網易智企正在搭建和完善開源社區,吸引更多開發者參與共建,不斷推進場景化落地。
吳桐表示,目前開源社區在代碼管理上還是很困難的。社區一方面會接受其他使用源碼的開發者提交的代碼,與這些開發者做進一步的溝通與交流,另一方面又要防範惡意的代碼貢獻者,但很難從根本上防範惡意貢獻者在代碼中留下各樣的病毒。「對於開發者提交的開發代碼,我們會進行嚴格的優化和分析,確保能夠篩選出可以接收的代碼。」
目前,網易智企開源的都是雲信業務線的技術。吳桐透露,後續會在雲商和易盾兩條業務線中選擇開放其他技術能力。
「我們鼓勵開發者站在網易智企的肩膀上,基於優質的源代碼進行上層開發和迭代創新,深耕需求場景打磨產品,希望可以助力千行百業數字化轉型,與行業共同探索開源的巨大社會價值。」吳桐說道。
點擊底部閱讀原文訪問 InfoQ 官網,獲取更多精彩內容!
河南賦紅碼事件程序員不背鍋;馬斯克:向TikTok和微信學習;華為宣布將調整績效考核指標 | Q資訊
從維護性工作到軟件開發革命,運維 15 年間的大逆轉
IE 瀏覽器已「死」,一個時代的終結
被捧上天的 Scrum 敏捷管理為何不受大廠歡迎了?
點個在看少個 bug👇