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

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

3天內不再提示

為OpenHarmony打造的一款新音視頻引擎——HiStreamer

科技觀點 ? 來源:科技觀點 ? 作者:科技觀點 ? 2022-04-29 18:08 ? 次閱讀

原標題:OpenHarmony新音視頻引擎——HiStreamer

OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)是由開放原子開源基金會(OpenAtom Foundation)孵化及運營的開源項目,目標是面向全場景、全連接、全智能時代,基于開源的方式,搭建一個智能終端設備操作系統的框架和平臺,促進萬物互聯產業的繁榮發展。面對萬物互聯時代種類眾多、且差異巨大的終端設備,我們為OpenHarmony打造了一款新的音視頻引擎——HiStreamer。

一、 HiStreamer產生背景

數字多媒體技術在過去的數十年里得到了飛速的發展,音樂、電話、電視、電影、視頻會議等等,伴隨著我們度過每一天。為了給用戶提供豐富的多媒體處理能力,業界已經有比較成熟的音視頻引擎,比如開源的音視頻引擎GStreamer。為什么我們還要打造一款新的音視頻引擎呢?

隨著萬物互聯時代的到來,越來越多的智能化設備出現在我們的生活中。比如:智能冰箱可以通過屏幕和聲音,告訴人們儲藏的菜品快要過期了;智能閘機可以通過人臉識別,自動完成檢票工作;智能門鎖可以通過語音和視頻,提升開鎖的效率和安全性......

與PC、手機等標準(Standard)設備不同,很多智能化設備的CPU處理能力比較弱、內存也比較小,傳統的音視頻引擎無法支持此類設備。HiStreamer應運而生,既支持輕量級的Mini/Small設備,也支持Standard設備(目前支持部分功能)。HiStreamer在不斷發展和完善中,未來將會支持Standard設備的更多功能。

二、 “管道+插件”,實現彈性部署

為了支持Mini/Small/Standard設備,HiStreamer采用管道(Pipeline)和插件(plugin)的軟件架構,從而可以根據設備的硬件和需求差異進行彈性部署。HiStreamer把音視頻處理的每個過程抽象成節點,上一個節點的輸出,作為下一個節點的輸入,把多個節點連接起來,整體形成一個管道(Pipeline),完成音視頻的數據讀取、解封裝、解碼、輸出的完整流程。同時,插件可以為Pipeline的節點提供豐富的擴展功能,讓HiSteamer的音視頻處理能力更強大。

1. Pipeline框架介紹

為了讓大家理解HiStreamer的Pipeline框架,下面以MP3音頻播放為例講解:

輸入是一個MP3文件,輸出是播放出的音樂,這中間經過了很多步驟。

先來看一下MP3文件結構:

poYBAGJruTOASdpAAAAM27wnJ9k158.png

圖1 MP3文件結構

MP3文件由ID3 Metadata容器頭和若干MP3 Frame(MP3數據幀)構成。每個MP3 Frame又由MP3 Header(MP3頭信息)和MP3 Data構成。這一系列的MP3 Frame稱為ES Data( Element Stream Data)。

● ID3 Metadata:容器頭,主要包括標題、藝術家、專輯、音軌數量等。

● MP3 Header:包含MP3 Sync word(標識MP3數據幀起始位置)和MPEG版本信息等。

● MP3 Data:包含壓縮的音頻信息。

播放MP3文件,首先需要把MP3文件數據讀進來,然后去掉ID3 Metadata容器頭(即解封裝),再把一系列MP3 Frame解壓縮成PCM(Pulse-Code Modulation)數據,最后驅動喇叭發聲。這個過程按順序可以抽象成如下四個節點:

pYYBAGJruTOAOG1VAAAiSXpEg1k424.png

圖2 MP3音頻播放的Pipeline

1. 輸入節點(MediaSourceFilter): 讀取MP3原始數據,傳給下一個節點。

2. 解封裝節點(DemuxerFilter): 解析ID3 Metadata容器頭信息,作為后續節點的參數輸入,并且把一幀幀MP3 Frame(即ES Data)傳給后續的解碼節點。

3. 解碼節點(AudioDecoderFilter): 把ES Data解碼成PCM數據,傳給輸出節點。

4. 輸出節點(AudioSinkFilter): 輸出PCM數據,驅動喇叭發聲。

由以上示例可知,HiStreamer通過Pipeline框架把音視頻處理的每個過程抽象成一個個節點。這些節點是解耦的,可以靈活拼裝,從而可以根據業務需要拼裝出不同的Pipeline。同時,為了使多個節點能更好地協同工作,HiStreamer還支持節點間的參數自動協商。

2. HiStreamer插件介紹

了解了HiStreamer的Pipeline框架后,我們再來看看HiStreamer插件。

HiStreamer的Pipeline框架的很多節點(比如輸入節點、解封裝節點、解碼節點、輸出節點等)都支持插件擴展。通過插件,節點的功能變得更加豐富、更加強大。

插件的應用場景非常廣泛,比如:

● 媒體格式非常多,且以后還會有新的格式產生,可以通過插件支持新的媒體格式。

● 不同OS平臺或設備,處理方式存在差異,可以通過插件支持不同的處理方式。

● 不同類型的設備,需求不同,能提供的CPU/ROM/RAM資源多少也不同,也可以通過插件來支持。

3. 彈性部署

HiStreamer基于管道(Pipeline)和插件(plugin)的軟件架構,可以根據設備的硬件和需求差異實現彈性部署。

poYBAGJruTSAAYpdAABdizdcPBg701.png

圖3 HiStreamer彈性部署

如圖3所示,Mini設備(比如音箱),它的CPU處理能力很弱,ROM/RAM資源很少,需要的功能也比較少,只需要音頻播放功能。HiStreamer可以配置成只支持音頻播放,并且選擇輕量級的插件,配置同步解碼模式,減少資源消耗。而Small設備,CPU處理能力強一些,ROM/RAM空間大一些,需要音頻播放和視頻播放功能。HiStreamer可以配置成支持音視頻播放,并且選擇功能更強的插件。

三、HiStreamer邏輯架構

經過上面的介紹,我們了解了HiStreamer的“管道+插件”的軟件架構。下面我們再來看看HiStreamer的詳細的邏輯架構。

pYYBAGJruTSAPAEOAABi6ACHWnQ384.png

圖4 HiStreamer邏輯架構圖

HiStreamer主要由HiStreamer引擎和HiStreamer插件構成。

其中,HiStreamer引擎又分為以下四層:

業務封裝層:基于Pipeline封裝實現播放器、錄音機功能,簡化上層應用使用。

Pipeline框架層:提供Pipeline和若干個節點(輸入、解封裝、解碼和輸出)的實現,支持把多個節點連接在一起形成Pipeline。

插件管理層:用于插件生命周期管理,支持動態加載或靜態鏈接兩種方式使用插件。

工具庫層:提供框架依賴的工具,隔離操作系統差異,提供調測功能。

HiStreamer插件,則分為平臺軟件插件和廠商硬插件兩類:

平臺軟件插件:由OpenHarmony平臺提供,可跨產品復用的軟件算法插件。

廠商硬插件:由廠商提供的基于硬件加速的插件,如硬件加速的編解碼插件。

應用開發者可以直接使用現成的插件來實現多媒體功能,節省大量的開發時間。插件越豐富,HiStreamer的音視頻處理能力會更強大。OpenHarmony歡迎廣大開發者參與HiStreamer插件的開發,一起來豐富HiStreamer插件!

四、HiStreamer插件開發及實例

下面就為大家介紹HiStreamer插件的開發過程及實例講解,感興趣的小伙伴們趕緊學起來,一起參與HiStreamer插件開發吧~

1. 插件的開發

HiStreamer插件的開發主要分為插件定義功能實現兩個部分。

(1)插件定義

HiStreamer插件是通過PLUGIN_DEFINITION宏來定義的。以輸入插件FileSource為例,定義代碼如下:

poYBAGJruTWAEF0CAACWDcaTwUA091.png

使用PLUGIN_DEFINITION宏定義插件(即上面最后一行代碼)時,傳入了四個參數:

a) 插件名稱:即示例中的“FileSource”。

b) License信息:即示例中的“LicenseType::APACHE_V2”。

c) 插件注冊函數:即示例中的“FileSourceRegister”,該函數描述了插件基本信息,包括插件對象創建函數,并且還調用AddPlugin把插件注冊到系統中。

d) 插件反注冊函數:可以傳為空實現。

(2)功能實現

實現插件功能時,需根據要實現的插件類型,繼承對應插件接口類,并實現相關接口。比如實現輸入插件FileSource,需要繼承SourcePlugin,并實現SetSource、Read等接口,代碼如下:

pYYBAGJruTaALNxxAAB-yZsWhtc126.png

FileSource插件的完整代碼可參考碼云平臺OpenHarmony項目:

https://gitee.com/openharmony/multimedia_histreamer/tree/master/engine/plugin/plugins/source/file_source

2. 插件的部署

使用PLUGIN_DEFINITION定義的HiStreamer插件,可以是單一功能的插件,也可以是有多個功能的插件包。每個這樣的插件或插件包,可以獨立編譯成.a或者.so,分別對應以下兩種部署方式:

● 靜態部署:一般用在mini設備上,插件編譯成靜態庫.a,鏈接到系統中。

● 動態部署:一般用在small/standard設備上,插件編譯成動態庫.so,放到系統指定目錄下,動態加載運行。

3. 插件的運行

插件開發完成且部署到系統之后,HiStreamer啟動時就會自動完成插件的注冊。下一步,就是運行插件了。

運行新實現的插件,需要先滿足該插件的運行條件。比如:FileSource只會在播放本地文件時運行;MP3解碼插件只會在播放MP3文件時運行......

開發者可以通過日志信息,查看是否運行了自己的插件。如果有別的插件注冊到系統中,導致自己的插件無法運行時,可以卸載引起干擾的插件。卸載動態部署的插件,刪除對應的.so即可;卸載靜態部署的插件,需要修改編譯腳本取消對應插件的編譯。

五、結束語

OpenHarmony歡迎廣大開發者一起加入HiStreamer插件開發,擴展自己想要的媒體功能,共同豐富HiStreamer媒體生態!

同時,預告大家: HiStreamer的下一個版本將為Standard設備增強更多功能,敬請期待!

審核編輯:符乾江

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

    關注

    4

    文章

    420

    瀏覽量

    29667
  • OpenHarmony
    +關注

    關注

    24

    文章

    3442

    瀏覽量

    15291
收藏 人收藏

    評論

    相關推薦

    音視頻產品EMC整改案例解析

    音視頻產品EMCRE整改案例解析
    的頭像 發表于 05-20 16:49 ?112次閱讀
    <b class='flag-5'>音視頻</b>產品EMC整改案例解析

    【RTC程序設計:實時音視頻權威指南】音視頻的編解碼壓縮技術

    音視頻所載有的信息在通過傳輸的時候就需要壓縮編碼。 其中,文本壓縮是指通過使用各種算法和技術,將文本數據表示更緊湊的形式,以減少存儲空間。 霍夫曼編碼是種無損壓縮算法,它可以根據字符出現
    發表于 04-28 21:04

    音視頻SoC與AI技術融合,帶來更智能的音視頻處理解決方案

    電子發燒友網報道(文/李彎彎)音視頻SoC,即音視頻系統級芯片或片上系統,是一種高度集成化的芯片,它將電路板上的多塊芯片以及嵌入式軟件全部集成到一塊芯片中。音視頻SoC芯片廣泛應用于各種嵌入式系統
    的頭像 發表于 04-26 01:20 ?2952次閱讀

    【RTC程序設計:實時音視頻權威指南】新書

    應用,開發者提供了完整的RTC解決方案。 首先RTC 是個涉及音視頻編解碼、網絡傳輸、實時交互等多個領域的復雜技術。希望能通過這本書從基礎知識開始,逐步深入到高級應用和系統設計。 其次,RTC 技術
    發表于 04-22 09:09

    分享一款VGA轉USB3.0音視頻采集卡

    LCC385是靈卡技術研發的?VGA轉HDMI輸出的音視頻采集卡。其VGA輸入和HDMI輸出均支持1920x1080p@60fps視頻;其輸出接口采用USB3.0,兼容USB2.0,可輸出
    發表于 04-22 09:08

    音視頻解碼生成:打造你的專屬高清影院體驗

    在數字化時代,人們對觀影體驗的要求越來越高。音視頻解碼生成技術,作為現代多媒體播放的核心,正是為了滿足這種需求而不斷發展和完善的。通過這項技術,我們可以輕松打造屬于自己的高清影院體驗。 一、高清畫質
    的頭像 發表于 02-25 14:47 ?209次閱讀

    音視頻解碼生成:打造極致觀影體驗的關鍵技術

    在現代多媒體時代,音視頻解碼生成技術已成為提供極致觀影體驗的核心要素。它不僅能夠確保音視頻數據的高效傳輸,還能保證播放的流暢性和畫質清晰度,為用戶帶來身臨其境的觀影享受。 1. 解碼生成的重要性
    的頭像 發表于 02-25 14:43 ?198次閱讀

    音視頻

    音視頻技術都喜歡深究內部最核心的原理和機制,尤其是ffmpeg這個編解碼庫,可以說是音視頻領域事實上的標準。語音智能算法,語言語義分析和理解,流媒體服務器等高端技術也都基于它而構建。希望有幸獲得本書,深度學習ffmpeg核心技術,和作者
    發表于 11-23 08:51

    ESP RTC音視頻傳輸延遲測試

    音視頻
    Kevincoooool
    發布于 :2023年11月11日 10:54:02

    HarmonyOS音視頻開發概述

    通過Surface將視頻數據傳遞給AVRecorder進行數據處理。 當前常用的數據采集模塊相機模塊,相關說明以相機舉例,相機模塊目前僅對系統應用開放。 通過音視頻錄制組合,可分別實現純音頻錄制、純
    發表于 10-17 16:39

    打造沉浸式專業音視頻體驗

    AMD?ProAV技術與方案分享專題研討會 我們的生活被專業的音視頻設備所包圍。從零售廣告中的數字標牌,到現場活動中的麥克風和大屏幕顯示;從體育賽事的現場直播到行業的實時監控....。需要在不犧牲
    的頭像 發表于 09-06 09:10 ?488次閱讀
    <b class='flag-5'>打造</b>沉浸式專業<b class='flag-5'>音視頻</b>體驗

    音視頻矩陣是什么意思 音視頻矩陣的主要作用

    音視頻矩陣(Audio-Video Matrix)是一種設備或系統,用于管理和控制音頻和視頻信號的傳輸和分配。它允許用戶根據需求選擇和路由不同的音頻和視頻源,并將它們傳輸到所需的輸出設備,如揚聲器、顯示器、投影儀等。
    發表于 07-20 15:16 ?2506次閱讀

    音視頻開發:實時傳輸與處理音視頻流的技術與應用

    音視頻
    YS YYDS
    發布于 :2023年06月27日 18:20:58

    基于WebAssembly構建Web端音視頻通話引擎

    音視頻通話引擎。今天將從背景、WebAssembly引擎、方案落地和問題及展望四個方面展開介紹。 -01- 背景 隨著網絡基礎設施的
    的頭像 發表于 06-26 15:56 ?540次閱讀
    基于WebAssembly構建Web端<b class='flag-5'>音視頻</b>通話<b class='flag-5'>引擎</b>

    音視頻集成是什么 音視頻視頻有什么區別

    音視頻集成是將音頻和視頻設備、系統和技術進行整合,以實現全面的音視頻功能和體驗的過程。
    發表于 06-19 17:14 ?1964次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>