實時音視頻技術專場活動回顧(一):Flutter實時音視頻應用場景實踐

2020-12-04 騰訊網

11月7日,即構和上海GDG技術社區聯合舉辦了實時音視頻雲上技術分享專場,來自即構科技和Bilibili的資深技術專家進行了深度分享。大會吸引了眾多開發人員交流、觀看,並在活動過程中與分享嘉賓進行了熱烈互動。下面我們將整理嘉賓們分享的核心內容,錯過活動直播的小夥伴可以繼續觀看學習。

本文是即構科技李展鵬帶來的主題為《Flutter實時音視頻應用場景實踐》的技術分享。以下為主要的分享內容:

大家好,我是來自即構科技的李展鵬,目前負責參與即構音視頻平臺SDK的建設工作。本人從內測版本開始接觸Flutter,較早開始處理Flutter應用於音視頻業務的場景,今天我將和大家一起交流一下Flutter在實時音視頻場景下的應用實戰。

01

Flutter系統架構

首先,給大家簡單介紹一下 Flutter 的整體架構。大家可以看下面這張圖:

圖中綠色區域是基於 Dart 語言的Framework層,包含兩大類UI樣式、控制項、動畫、手勢等等,是Flutter開發者們直接對接的一層。

藍色區域則為 Flutter 的引擎層,使用C++實現,這一層是Flutter實現跨平臺的關鍵所在。核心模塊主要包括與原生交互的Channel機制、skia圖形渲染框架,還有 Dart 虛擬機等等。

橙色區域主要是一些平臺特定模塊。就算 Flutter 擁有跨平臺的特性,但底層還是離不開原生的支持。當某些特定功能無法直接使用 Flutter 實現時,那麼開發者還可以通過編寫原生插件的形式進行支持。即構在Flutter中實現音視頻服務也是主要從這一層進行切入。

基於這張圖,我們大概可以看出Flutter的一些優缺點。

優點

Flutter的優點是跨平臺,擁有雙端一致的體驗,性能強大;基於自研引擎渲染,易於上手。Dart 語言當初用於對標 JS 語言,在設計上更靠近腳本語言風格,相比於原生語言來說更加容易入門。

缺點

Flutter 作為一個相對來說比較新興的框架,相比於其他框架來說避免不了存在生態不完善的問題。不少功能還需要開發者自己造輪子,使用原生語言進行雙端開發。

另外,Flutter 在 Github 上的 issue 相對較多,存在較多的已知bug。例如,在音視頻場景下,視頻渲染這塊的優化問題相比原生還是稍微遜色一些,但是我們可以看到 Flutter 團隊一直都在積極修復各種問題,我們相信未來會越來越穩定。

02

Flutter 實時音視頻快速接入

即構作為專業的音視頻雲服務商,我們很早就開始了對Flutter技術框架的研究,下面我們來介紹 Flutter 實時音視頻的快速接入。

即構SDK快速接入流程包括這幾步:初始化SDK、登錄房間伺服器、用戶推送自己的本地音視頻流,然後拉取遠端的音視頻流。

感興趣的開發者可以掃碼體驗Express Flutter SDK,裡面會有比較詳細的接入指南和示例Demo。

我們看到,當我們需要使用即構Flutter SDK 的時候,需要在工程根目錄下的配置文件裡,添加zego_engine_engine的依賴聲明,然後通過運行flutter pub get的命令,即可從遠端pub倉庫把SDK下載下來。

在圖示的代碼裡,我們可以看到使用即構 Flutter SDK進行快速接入主要包括以下幾步。

第一步,初始化SDK。這個步驟先要從即構官網(www.zego.im)上申請唯一專屬的 AppID 和 App sign。

第二步,登錄房間。

第三步,推送本地音視頻流。在推流前如果需要對視頻流進行本地預覽,那麼還需要使用即構 SDK 基於 Flutter 提供的外接紋理模塊封裝好的接口,創建一個視頻紋理渲染對象,獲取一個 TextureID。

拿到 TextureID 後,通過使用 Flutter 提供的 Texture 控制項,即可進行本地播放。

在這裡,Flutter 對音視頻場景提供了兩種視頻渲染方案,分別是Texture和Platform View。即構同時提供兩種渲染方案的接口,但基於兼容性和穩定性考慮,我們更推薦開發者使用 Texture 方案。

然後,拉流的步驟和推流類似,在這裡不重複贅述。

到這裡,開發者就可以實現簡單的實時音視頻場景了。

03

Flutter自定義視頻採集方案

視頻採集是整條實時音視頻鏈路中的起點。即構SDK內置了對攝像頭的視頻採集,可以直接將採集到的數據進行編碼推流。

但如果開發者需要在採集環節進行一些定製化操作,如,採集完攝像頭原始數據後還需要對接第三方的美顏前處理;或者應用場景中有多種不同的輸入源,如屏幕分享、播放一段視頻推流等,那麼就需要使用到自定義視頻採集功能。

下圖是Native 框架下自定義視頻採集的實現框架:

那麼,Flutter框架下是否可以沿用相同的方案呢?

相關焦點

  • 活動回顧:ZEGO實時音視頻服務架構實踐
    (jack),受邀參加2020中國系統架構師大會,在音視頻架構與算法專場進行了主題為《ZEGO實時音視頻服務架構實踐》的技術分享。由於主播使用了不同的終端形式來進行推流,那麼底層使用的音視頻協議也是不同的,分別對應著WebRTC,AVERTP(ZEGO的私有音視頻協議),RTMP。主播之間連麥互動需要互相拉流,為了獲得良好的互動效果,需要很低的端到端拉流延遲(<400ms)。因此,主播們可以到即構全球實時網絡來進行拉流,支持Web終端,和原生App拉流,國內的實際環境端到端延遲可以做到150-400ms。
  • 互動協作白板與音視頻實時同步技術實踐
    本文整理自即構科技互動白板技術負責人陳曉聰在LiveVideoStack的線上分享,內容主要圍繞白板與音視頻的同步和白板的多端實時互動兩個角度,深度解析即構在互動白板方面的技術探索實踐。技術點主要圍繞音視頻與白板的同步和多端實時互動同步講解。
  • 中國系統架構師大會預告:即構受邀分享實時音視頻服務架構實踐
    在大規模高並發分布式系統架構設計和實踐方面有著豐富經驗。在成熟的大規模高並發底層架構之外,針對服務系統的可用性保障手段,全球用戶接入質量問題,實時音視頻雲服務的調度系統和分發網絡建設等內容,也是音視頻後臺服務質量的關鍵。
  • 華為雲RTC:華為雲實時音視頻賦能更多創新場景
    重災疫情下,全民線上使得「非接觸」式概念火了,而RTC(實時音視頻)技術則是支持所有線上非接觸式實時互動場景的基石。而對於一場全民線上的大爆發,需求集中的在線教育和遠程辦公只是非接觸式經濟的冰山一角,RTC技術的發展已經讓「非接觸」的線上實時互動滲透到學習、生活、工作、娛樂的各個領域。在此次分享會上,華為雲視頻雲總監陸振宇分享了華為RTC技術在各行業場景的實際應用和覆蓋,包括在社交、教育、金融、醫療、企業協作等眾多行場景的實踐。
  • 即構科技實時音視頻sdk,四步在應用內快速實現音視頻功能
    當代音視頻技術融計算機、聲音、文本、圖像、動畫、 視頻和通信等多種功能於一體,得益於網際網路技術的普及與發展,實現了音、視頻信息的資源共享。音視頻技術早已深入到人們日常生活、學習、工作、生產、管理等各個方面,它並正潛移默化地改變著我們生活的面貌。
  • 了不起的WebRTC:生態日趨完善,或將實時音視頻技術白菜化
    《WebRTC實時音視頻技術基礎:基本架構和協議棧》《[觀點] WebRTC應該選擇H.264視頻編碼的四大理由》《基於開源WebRTC開發實時音視頻靠譜嗎?第3方SDK有哪些?》《開源實時音視頻技術WebRTC中RTP/RTCP數據傳輸協議的應用》《實時通信RTC技術棧之:視頻編解碼》《開源實時音視頻技術WebRTC在Windows下的簡明編譯教程》《網頁端實時音視頻技術WebRTC:看起來很美,但離生產應用還有多少坑要填?》
  • 實時音視頻面視必備:快速掌握11個視頻技術相關的基礎概念
    ,已經不再局限於IM中的實時視頻聊天、實時視頻會議這種功能,在遠程醫療、遠程教育、智能家居等等場景也司空見慣。雖然實時音視頻技術的應用越來越普及,但對於程式設計師來說,這方面的技術門檻仍然存在(準備地說是仍然很高),想要在短時間內全面掌握實時音視頻相關的技術難度非常大。
  • 環信實時音視頻雲亮相LiveVideoStackCon 2019
    4月19-20日, LiveVideoStackCon音視頻技術大會在上海隆重舉辦。本屆會議以「多媒體技術賦能新世界」為主題,匯集400餘位多媒體技術生態中的代表,聚焦音頻、視頻、圖像、AI等技術的最新探索與應用實踐,重新闡述音視頻技術在不同行業中的力量。
  • 從0到1構建實時音視頻引擎
    網易智企旗下產品網易雲信在實時音視頻領域深耕多年,積累了不少實踐經驗。在本文裡,筆者將以烹飪為比喻,深入淺出地將網易雲信如何從0到1構建實時音視頻引擎的過程分享給讀者。跟業界很多引擎的實現方案一樣,網易雲信也是基於WebRTC構建的實時音視頻引擎。
  • 融雲實時音視頻落地各應用場景以RTC+IM雙重能力服務開發者
    然而對開發者來說,分別選擇不同的IM和RTC廠商實現通信場景,不僅降低開發效率,還會大幅增加產品上線後的運營和服務成本。為解決部分開發者的實際需要,融雲適時升級了實時音視頻產品,並推出了「IM即時通訊+實時音視頻+推送」一體化解決方案,就是要「以一套SDK解決所有通信場景」,滿足多場景下的高品質通信的需求,成為下一代RTC的創領者。
  • 零基礎入門:實時音視頻技術基礎知識全面盤點
    1、引言隨著行動網路速度越來越快、質量越來越來,實時音視頻技術已經在各種應用場景下全面開花,語音通話、視頻通話、視頻會議、遠程白板、遠程監控等等。《即時通訊音視頻開發(十九):零基礎,史上最通俗視頻編碼技術入門》(* 必讀)《實時語音聊天中的音頻處理與編碼壓縮技術簡述》《移動端實時音視頻直播技術詳解(一):開篇》《移動端實時音視頻直播技術詳解(二):採集》《移動端實時音視頻直播技術詳解(三):處理》《移動端實時音視頻直播技術詳解(四):編碼和封裝》《
  • RTC Meetup | 這可能是年底最大、最有料的實時音視頻開發者聚會交流
    回首2017,從直播、狼人殺到在線抓娃娃,不斷迭起的風口讓我們看到,實時音視頻技術已經不斷地應用到各行各業。未來,隨著5G 的即將到來、新技術如機器學習算法在音視頻技術中的應用,可以預見,實時音視頻必然將更大規模的應用到更多的領域。
  • 零基礎入門:實時音視頻技術基礎知識全面盤點
    1、引言隨著行動網路速度越來越快、質量越來越來,實時音視頻技術已經在各種應用場景下全面開花,語音通話、視頻通話、視頻會議、遠程白板、遠程監控等等。實時音視頻技術的開發也越來越受到重視,但是由於音視頻開發涉及知識面比較廣,入門門檻相對較高,讓許許多多開發者望而生畏。
  • WebRTC實時音視頻通話之語音通話設計與實踐
    一、背景  在移動網際網路流量時代,很多業務場景都有音視頻通信的需求,比如IM場景,除了文字交流還需要音視頻通話進行實時交互。為了幫助58、趕集、安居客等業務線更好的為用戶提供服務,節約溝通成本,提升效率,TEG基於WebRTC提供了一套完整的實時音視頻通話解決方案——WRTC。
  • 實時音視頻社交 成就遊戲產業發展新變量
    近年來,網絡直播的興起使實時音視頻社交颳起了一陣旋風,裹挾著大批應用進入大眾生活。這其中有小咖秀、秒拍這類獨立性音視頻社交平臺,也有嵌入到社交平臺的直播類應用,如陌陌視頻。而一再引發關注的是實時音視頻社交功能走入遊戲,成為玩家常年「在線」遊戲平臺的定盤星。由此可見,在實時音視頻社交的風口之下,遊戲行業正迎來增長新契機。
  • 最低延遲66ms,融雲帶來更流暢的實時音視頻服務體驗
    實時音視頻性能實現全面升級  融雲實時音視頻服務以3.0為起點,從實踐出發,在應用中不斷總結優化,使此次升級版各項性能指標和技術優勢突顯。智能音箱、智能門禁等多種智能硬體設備中實現平臺間通信,全面保障融雲實時音視頻在各類終端上的良好應用。
  • 七牛雲RTN:基於WebRTC零基礎搭建實時音視頻平臺
    因此,對於音視頻技術能力儲備較少的公司,選擇一家靠譜的一站式解決方案供應商可以極大降低開發成本、縮短產品上線時間。  七牛實時音視頻雲是一套基於標準 WebRTC 的實時音視頻解決方案,同時對 WebRTC 的上述問題作出了優化。
  • 華為雲實時音視頻服務助力在線教育業務實現快速轉型升級
    其中,華為雲視頻高級產品經理陳鵬亮相音視頻專場論壇,帶來主題演講《雲視頻助力在線教育業務升級》,他認為,「在線教育業務正由音視頻業務技術+消費行為改變雙輪驅動快速發展,對於教培業務提出了新的需求和挑戰,華為雲視頻依託全棧雲原生的視頻雲服務,助力在線教育業務重塑體驗、激發創新。」
  • 音視頻技術開發周刊|172
    OTT/短視頻/線上教育/遠程協作/雲遊戲... 雲剪輯/線上視頻製作/AI視頻製作...... 當新的標準被應用到新領域、新的應用配備了新的標準、新的領域衍生了新的應用......音視頻技術人會帶來怎樣的技術革新,多媒體行業的後疫情時代又會催生出怎樣的新創?
  • 聲網發布首個基於Unity的遊戲實時音視頻SDK
    聲網首席音頻專家陳若非博士受邀做大會主題演講,和全球遊戲開發者分享《遊戲實時音視頻應用與技術解析》,並現場發布了首個基於Unity的遊戲實時音視頻SDK。陳若非博士認為,隨著手遊電競化、社交化和全球化,遊戲開發者越來越多地意識到,在手遊中集成遊戲語音和視頻對於提升遊戲本身的質量和用戶體驗,增加遊戲的社交屬性進而提升用戶粘性和用戶留存,具有重大意義。