国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

OpenHarmony4.0源碼解析之媒體框架

這篇具有很好參考價值的文章主要介紹了OpenHarmony4.0源碼解析之媒體框架。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

媒體框架簡介

媒體框架 multimedia_player_framework 主要提供音視頻的錄制與播放功能。

框架簡介

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

從框架圖中可以看出,媒體框架的主要工作模式為通過 Gstreamer 的插件自動化注冊及插件組合功能,將其余媒體播放相關(guān)的框架功能插件化,配合 Gstreamer 自身豐富的插件,共同來對外提供音視頻的錄制與播放功能。如通過 audio-sink 及 audio-source 插件調(diào)用音頻框架的播放及采集功能來實現(xiàn)音頻的播放與錄制;通過 surface-sink 調(diào)用圖形框架,video-decoder 調(diào)用解碼驅(qū)動模塊實現(xiàn)視頻的硬解播放等。

Gstreamer 基本概念

Gstreamer 是媒體框架中的重要組成部分,采用基于插件(plugin)和管道(pipeline)的體系結(jié)構(gòu),框架中的所有的功能模塊都被實現(xiàn)成可以插拔的組件(plugin),能夠很方便地安裝到任意管道上。插件架構(gòu)是 GStreamer 的核心,幾乎所有的媒體處理功能都可以抽象成為插件的一部分。

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

以一個圖中完整的 ogg 播放流程為例: GStreamer 內(nèi)部使用 pipeline(管線)機(jī)制來做信令控制,元素組件管理和數(shù)據(jù)傳輸,一個 pipeline 內(nèi)部存在多個 element(元素),每個元素內(nèi)部存在輸入和輸出的端口(pad);

解碼流程具體為 ogg 文件源 source 經(jīng)過解封裝器 demuxer 產(chǎn)生 vorbis 編碼的數(shù)據(jù)流,之后經(jīng)過解碼器 decoder 解碼為浮點 float 格式的 raw 數(shù)據(jù),浮點 raw 數(shù)據(jù)通過轉(zhuǎn)換器轉(zhuǎn)換為整形 raw 數(shù)據(jù),最后通過輸出 sink 完成音頻信號輸出。虛線下面的標(biāo)注為經(jīng)過每個 pad 的輸入格式和輸出格式。

GStreamer 定義了以下元素概念:

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

Source:可以理解為數(shù)據(jù)源,也就是數(shù)據(jù)流的起始地。例如文件,網(wǎng)絡(luò)源,攝像機(jī)麥克風(fēng)的輸入。

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

Filter: 過濾器, 也可理解為中間處理單元,將 sink pad 傳入的數(shù)據(jù)經(jīng)過內(nèi)部處理通過 src pad 傳出。編解碼器,封裝/解封裝都可以認(rèn)為是 Filter。有人可能會與 Ffmpeg 的 filter 相混淆,F(xiàn)fmpeg 中 Filter 定義為處理原始數(shù)據(jù)(解碼后數(shù)據(jù)的)的功能單元。提供音視頻后處理功能。Gstreamer 中 Filter 更強(qiáng)調(diào)同時存在輸入和輸出的概念,功能的范圍更大一些。

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

Sink:數(shù)據(jù)接受者,source 產(chǎn)生的數(shù)據(jù)流最終要流向的地方。例如輸出文件,屏幕顯示,揚(yáng)聲器輸出。

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

Bin: 與 pipeline 類似,它們的區(qū)別為 pipeline 肯定是一個 bin,但 bin 不一定是 pipeline,它就像一個盒子,存放了多個元素,實現(xiàn)了部分甚至完整的由 source 到 sink 的流程。Bin 提供了軟總線 Bus 用于處理內(nèi)部產(chǎn)生的信號(這些消息包括:錯誤消息(error messages),卷標(biāo)消息(tag messages),EOS 消息(EOS messages))。**PipeLine: pipeline 是高級的 Bin。**當(dāng)你設(shè)定管道的暫?;蛘卟シ艩顟B(tài)的時候,數(shù)據(jù)流將開始流動,并且媒體數(shù)據(jù)處理也開始處理。一旦開始,管道將在一個單獨的線程中運(yùn)行,直到被停止或者數(shù)據(jù)流播放完畢。

音視頻播放流程

1.視頻播放流程如下:

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

2.視頻播放的接口調(diào)用時序圖如下:播放器在設(shè)置播放源時,完成 Gstreamer engine 的加載,在 prepare 時 完成對于 gsreamer playbin 的初始化,后續(xù)的播放,暫停等接口都是通過控制 Gstreamer playbin 的狀態(tài)來控制播放流。

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

音視頻錄制流程

1.音視頻錄制流程如下:

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

2.音視頻錄制接口調(diào)用時序圖如下:以音頻錄制為例,用戶在調(diào)用 prepare 接口時,會依次設(shè)置音頻源,音頻輸出格式,以及音頻配置參數(shù)和音頻輸出路徑,在基本配置完成后,才會形成音頻錄制的 pipeline,與播放器不同,該 pipeline 為框架自定義。在音頻錄制的 pipeline 形成后,即可通過 recorderPipeline 的狀態(tài)來控制錄制流。

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

媒體框架 4.0 新增能力

1 ScreenCapture

ScreenCapture 為屏幕采集模塊,提供屏幕畫面采集及音頻采集功能。主要提供如下接口:

class ScreenCapture {
public:
    virtual ~ScreenCapture() = default;
    virtual int32_t Init(AVScreenCaptureConfig config) = 0;
    virtual int32_t SetMicrophoneEnabled(bool isMicrophone) = 0;
    virtual int32_t StartScreenCapture() = 0;
    virtual int32_t StopScreenCapture() = 0;
    virtual int32_t AcquireAudioBuffer(std::shared_ptr<AudioBuffer> &audiobuffer, AudioCaptureSourceType type) = 0;
    virtual sptr<OHOS::SurfaceBuffer> AcquireVideoBuffer(int32_t &fence, int64_t ×tamp, Rect &damage) = 0;
    virtual int32_t ReleaseAudioBuffer(AudioCaptureSourceType type) = 0;
    virtual int32_t ReleaseVideoBuffer() = 0;
    virtual int32_t Release() = 0;
    virtual int32_t SetScreenCaptureCallback(const std::shared_ptr<ScreenCaptureCallBack> &callback) = 0;
};

從提供的結(jié)構(gòu)體?AVScreenCaptureConfig?來看,主要采集類型如下:CaptureMode : 采集模式包括了主屏幕、特定屏幕(暫不支持)、特定窗口(暫不支持)采集;DataType : 數(shù)據(jù)類型包括原始流,編碼流(暫不支持)和文件(暫不支持);AudioInfo : 音頻信息包括對采樣率,采樣格式以及音頻源的設(shè)置。音頻源支持麥克風(fēng)以及系統(tǒng)內(nèi)部音源;VideoInfo : 視頻信息主要包括分辨率以及視頻源類型,視頻源類型主要為 yuv(暫不支持),es 流(暫不支持),rgba;

struct AVScreenCaptureConfig {
    CaptureMode captureMode;
    DataType dataType;
    AudioInfo audioInfo;
    VideoInfo videoInfo;
    RecorderInfo recorderInfo;
};

音視頻數(shù)據(jù)的流轉(zhuǎn)如下圖,分別存在音頻和視頻數(shù)據(jù)的緩存隊列,通過 bufferavailable 來通知用戶可用 buffer,用戶可通過 acquireBuffer 和 releaseBuffer 來獲取和刪除音視頻數(shù)據(jù)

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

2 SoundPool

SoundPool 為音頻池管理模塊,提供集中管理多個音頻資源的功能。該框架實際并未經(jīng)過媒體框架的 IPC,而是在 client 端直接調(diào)用了音頻解碼器和音頻渲染器。

SoundPool 通過 SoundIdManager 來管理 SoundParser 獲取音頻流解碼數(shù)據(jù),通過 StreamIdManager 來管理 CacheBuffer 控制音頻流的播放,加載資源及播放的調(diào)用流程如下:

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

3 Monitor

媒體框架的播放及錄制 client 與 stub 分別通過繼承 MonitorClientObject,MonitorServerObject 來實現(xiàn)對于媒體播放錄制運(yùn)行狀態(tài)的監(jiān)控。client 在開始播放或者錄制后每隔 1s 向 server 端發(fā)送 click 指令,Server 端每隔 1.5s 檢查對應(yīng)的 client 是否過長時間未發(fā)送指令,若出現(xiàn)異常,則調(diào)用暫停命令,否則調(diào)用恢復(fù)播放指令。

為了能讓大家更好的學(xué)習(xí)鴻蒙(HarmonyOS NEXT)開發(fā)技術(shù),這邊特意整理了《鴻蒙開發(fā)學(xué)習(xí)手冊》(共計890頁),希望對大家有所幫助:https://qr21.cn/FV7h05

《鴻蒙開發(fā)學(xué)習(xí)手冊》:

如何快速入門:https://qr21.cn/FV7h05

  1. 基本概念
  2. 構(gòu)建第一個ArkTS應(yīng)用
  3. ……

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

開發(fā)基礎(chǔ)知識:https://qr21.cn/FV7h05

  1. 應(yīng)用基礎(chǔ)知識
  2. 配置文件
  3. 應(yīng)用數(shù)據(jù)管理
  4. 應(yīng)用安全管理
  5. 應(yīng)用隱私保護(hù)
  6. 三方應(yīng)用調(diào)用管控機(jī)制
  7. 資源分類與訪問
  8. 學(xué)習(xí)ArkTS語言
  9. ……

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

基于ArkTS 開發(fā):https://qr21.cn/FV7h05

  1. Ability開發(fā)
  2. UI開發(fā)
  3. 公共事件與通知
  4. 窗口管理
  5. 媒體
  6. 安全
  7. 網(wǎng)絡(luò)與鏈接
  8. 電話服務(wù)
  9. 數(shù)據(jù)管理
  10. 后臺任務(wù)(Background Task)管理
  11. 設(shè)備管理
  12. 設(shè)備使用信息統(tǒng)計
  13. DFX
  14. 國際化開發(fā)
  15. 折疊屏系列
  16. ……

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

鴻蒙開發(fā)面試真題(含參考答案):https://qr18.cn/F781PH

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)

鴻蒙開發(fā)面試大盤集篇(共計319頁):https://qr18.cn/F781PH

1.項目開發(fā)必備面試題
2.性能優(yōu)化方向
3.架構(gòu)方向
4.鴻蒙開發(fā)系統(tǒng)底層方向
5.鴻蒙音視頻開發(fā)方向
6.鴻蒙車載開發(fā)方向
7.鴻蒙南向開發(fā)方向

OpenHarmony4.0源碼解析之媒體框架,移動開發(fā),HarmonyOS,OpenHarmony,媒體,harmonyos,Openharmony,鴻蒙開發(fā),華為,深度學(xué)習(xí)文章來源地址http://www.zghlxwxcb.cn/news/detail-854741.html

到了這里,關(guān)于OpenHarmony4.0源碼解析之媒體框架的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • OpenHarmony4.0系列(一)編譯環(huán)境搭建+代碼上庫

    1. VMware + Ubuntu20.04 + 內(nèi)存8G+ + 硬盤150G+ 2. Ubuntu20.04 Server + 內(nèi)存64G + 硬盤24T 3. Ubuntu20.04 + 內(nèi)存16G+ + 硬盤1T 4. Windows 10 通過子系統(tǒng)方式安裝Ubuntu20.04 四種方案,推薦方案四。 VMware下載: Vmware Workstation pro 15.5.5 清華開源鏡像站: ubuntu-20.04.6-desktop-amd64.iso 開源USB啟動盤制作工具: Rufus-

    2024年01月22日
    瀏覽(99)
  • RK3568 OpenHarmony4.0適配HDMI液晶屏

    ????????先看下最終適配效果視頻: OpenHarmony_V40_HDMI液晶屏 ????????本文基于如下開發(fā)環(huán)境進(jìn)行開發(fā)調(diào)試: 處理器:RK3568 CPU:四核64位Cortex-A55,主頻最高達(dá)2.0GHz GPU:ARM G52 2EE,支持OpenGL ES 1.1/2.0/3.2,OpenCL 2.0,Vulkan 1.1,支持內(nèi)嵌高性能2D加速硬件 NPU:支持1T算力 多媒體

    2024年02月02日
    瀏覽(155)
  • openHarmony4.0Release-riscv64荔枝派版本新增glmark2三方庫

    openHarmony4.0Release-riscv64荔枝派版本新增glmark2三方庫

    如題,需要在openHarmony4.0Release-riscv64荔枝派版本的third_party目錄下增加glmark2。 由于其他同事已經(jīng)在別的環(huán)境上完成代碼適配,可以直接拿過來用。 https://gitee.com/wawanala/glmark2-es2 在third_party目錄下直接git clone下載后解壓即可。 參考https://www.51cto.com/article/745922.html 文件增加以下內(nèi)

    2024年04月12日
    瀏覽(19)
  • OpenHarmony源碼學(xué)習(xí)之編譯框架

    OpenHarmony源碼學(xué)習(xí)之編譯框架

    云將東游,過扶搖之枝,而適遭鴻蒙?!肚f子·在宥》 OpenHarmony是由開放原子開源基金會(OpenAtom Foundation)孵化及運(yùn)營的開源項目,目標(biāo)是面向全場景、全連接、全智能時代、基于開源的方式,搭建一個智能終端設(shè)備操作系統(tǒng)的框架和平臺,促進(jìn)萬物互聯(lián)產(chǎn)業(yè)的繁榮發(fā)展。

    2024年02月01日
    瀏覽(20)
  • OpenHarmony 源碼解析之SystemUi—Statusbar(TS)

    OpenHarmony 源碼解析之SystemUi—Statusbar(TS)

    作者:董偉 SystemUI應(yīng)用是OpenHarmony中預(yù)置的系統(tǒng)應(yīng)用,為用戶提供系統(tǒng)相關(guān)信息展示及交互界面,包括系統(tǒng)狀態(tài)、系統(tǒng)提示、系統(tǒng)提醒等,例如系統(tǒng)時間、電量信息。 本文主要分析batterycomponent、clockcomponent、wificomponent三大組件: 導(dǎo)入batteryInfo模塊,監(jiān)聽系統(tǒng)電池事件,實時獲

    2024年04月09日
    瀏覽(17)
  • OpenHarmony中基于HDF框架的驅(qū)動開發(fā)和使用

    OpenHarmony中基于HDF框架的驅(qū)動開發(fā)和使用

    代碼版本:openharmony 3.2 release 主要內(nèi)容 ? ? ? ? HDF框架基礎(chǔ)知識 ? ? ? ? HDF驅(qū)動框架的開發(fā) ? ? ? ? HDF驅(qū)動框架的應(yīng)用 HDF框架基礎(chǔ)知識? HDF(Hardware Driver Foundation)驅(qū)動框架,為驅(qū)動開發(fā)者提供驅(qū)動框架能力,包括驅(qū)動加載、驅(qū)動服務(wù)管理和驅(qū)動消息機(jī)制。旨在構(gòu)建統(tǒng)一的

    2024年02月20日
    瀏覽(18)
  • OpenHarmony 標(biāo)準(zhǔn)系統(tǒng) HDF 框架音視頻驅(qū)動開發(fā)

    OpenHarmony 標(biāo)準(zhǔn)系統(tǒng) HDF 框架音視頻驅(qū)動開發(fā)

    OpenHarmony 操作系統(tǒng)為了做到給千行百業(yè)提供全場景業(yè)務(wù)能力,達(dá)到設(shè)備快速互聯(lián)、硬件互助、資源共享;統(tǒng)一 OS、一次開發(fā)多端彈性部署的目標(biāo)。在此背景下 OpenHarmony 提出在傳統(tǒng)的單設(shè)備系統(tǒng)能力基礎(chǔ)上,基于同一套系統(tǒng)能力、適配多種終端形態(tài)的分布式理念,并且內(nèi)核層、

    2023年04月22日
    瀏覽(24)
  • OpenHarmony鴻蒙源碼下載編譯和開發(fā)環(huán)境搭建

    OpenHarmony鴻蒙源碼下載編譯和開發(fā)環(huán)境搭建

    目錄 一、開發(fā)環(huán)境搭建和源碼下載 二、編譯 三、總結(jié) ?一、開發(fā)環(huán)境搭建 最好是在如Ubuntu18.04以上的系統(tǒng)中搭建,不然有些軟件依賴需要解決,加大搭建時間 如gitee中開源OpenHarmony中的文檔所示,搭建開發(fā)環(huán)境,搭建文檔網(wǎng)站如下: zh-cn/device-dev/get-code/sourcecode-acquire.md ·

    2024年01月21日
    瀏覽(49)
  • OpenHarmony多媒體-metadata-extractor

    OpenHarmony多媒體-metadata-extractor

    metadata-extractor是用于從圖像、視頻和音頻文件中提取 Exif、IPTC、XMP、ICC 和其他元數(shù)據(jù)的組件。 OpenHarmony ohpm環(huán)境配置等更多內(nèi)容,請參考 如何安裝OpenHarmony ohpm包 。 引入文件及代碼依賴 讀取數(shù)據(jù) 展示數(shù)據(jù) 說明:支持ImageMetadataReader.readMetadata(path)統(tǒng)一入口;也支持對應(yīng)文件格

    2024年04月25日
    瀏覽(16)
  • 前端移動端開發(fā)分類及跨平臺開發(fā)框架簡述

    前端移動端開發(fā)分類及跨平臺開發(fā)框架簡述

    前端移動端主流分為以下三種:Native App ,Hybrid App ,Web App 優(yōu)點: (1)用戶體驗好 (2)性能穩(wěn)定 (3)操作速度快 (4)能夠訪問本地資源(通訊錄,相冊) (5)能夠設(shè)計出色的動效,轉(zhuǎn)場 (6)擁有系統(tǒng)級別的貼心通知或提醒 (7)用戶留存率高 缺點: (1)開發(fā)成本高

    2024年02月04日
    瀏覽(98)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包