0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenHarmony3.1媒體能力全景

電子發(fā)燒友開源社區(qū) ? 來源:HarmonyOS官方合作社區(qū) ? 作者:潤和軟件張漢孟 ? 2022-04-25 09:27 ? 次閱讀

一、背景

在當(dāng)前全民直播時代,我們每天刷著五花八門的抖音短視頻,看著各式各樣電視劇、電影以及隨時映入眼簾的各類視頻廣告等等,每天有無數(shù)的視頻文件被生成、播放。我們的眼球被花里胡哨的視頻瘋狂的沖擊,或無腦搞笑、或夸張諷刺、或雞湯淋頭、或無效科普等等,與此同時我們是否也可以想一想這些個撩人的視頻是怎么在我們眼前設(shè)備播放出來的??播放一個視頻文件對于OpenHarmony 3.1(以下簡稱OH)來說自然不在話下,這篇文章將告訴你一個視頻文件(本文以MP4封裝格式、H264壓縮格式的的視頻文件為例)是怎么在OH的設(shè)備上播放出來的。

二、OpenHarmony3.1媒體能力全景

OH技術(shù)架構(gòu)如下圖所示,完成視頻文件播放功能的是多媒體子系統(tǒng)。

25e33bce-c430-11ec-bce3-dac502259ad0.png

多媒體子系統(tǒng)框架如下圖所示:

25fe2984-c430-11ec-bce3-dac502259ad0.png

OH拉起了一個叫mediaserver的服務(wù)來處理媒體事務(wù),并且封裝了接口層包括JS接口、native接口提供給APP調(diào)用,mediaserver的核心則是引入了gstreamer(以下簡稱gst)框架來完成媒體功能。gstreamer是一套功能強(qiáng)大、兼容性好、結(jié)構(gòu)清晰的開源媒體框架,這里不做贅述,后面有專文解析。OH也在gst的基礎(chǔ)上開發(fā)了player engine來實(shí)現(xiàn)播放,同時也利用的gst豐富的插件資源實(shí)現(xiàn)幾乎所有的媒體功能,當(dāng)前已移植進(jìn)來的開源插件包括file source、demuxer、video decoder、libav插件等等,當(dāng)然也包括OH自研的video sink、memsink、Codec hdi插件等等。

三、H264視頻播放道路

大象裝進(jìn)冰箱分幾步,我們來看視頻播放流程:

2632fe5c-c430-11ec-bce3-dac502259ad0.png

播放一個視頻大致分為4步:
解協(xié)議->解封裝->解壓縮->送顯
播放pipeline

根據(jù)視頻播放的步驟,我們在OH上每一個環(huán)節(jié)都能找到對應(yīng)的插件來完成:

1、對于一個本地視頻文件(比如uri=file:///data/h264-640x480.mp4),對應(yīng)的filesrc插件來完成文件的解析,拿到MP4文件流;

2、拿到MP4文件流后,對應(yīng)的qtdemux插件來解封裝,完成音視頻分流,輸出H264裸碼流和音頻流;

3、拿到H264碼流后,h264parse插件開始切片,輸出H264幀數(shù)據(jù);

4、處理H264幀數(shù)據(jù),就由avdec_h264插件來完成,一般情況會輸出NV12的像素?cái)?shù)據(jù),當(dāng)然這個解碼器是基于ffmpeg的軟解插件,相信不久各個芯片廠商硬件加速解碼器都會加進(jìn)來;

5、至此解碼的工作已經(jīng)完成,后面就要根據(jù)顯示的像素格式、size來對解碼輸出數(shù)據(jù)進(jìn)行后處理(轉(zhuǎn)換、縮放、裁剪等),會有Converter、Scaler、Clip插件來完成;

6、滿足顯示要求后就會使用suRFacesink插件完成送顯。

再加上audio的插件解碼出音頻數(shù)據(jù),OH的player會完成音視頻同步,至此一個視頻文件就會播放顯示在屏幕上。

在OH為了更好的用戶體驗(yàn),同時也引入了一些解決性能問題的插件,比如multiqueue插件來實(shí)現(xiàn)buffer隊(duì)列,也使用decodebin高級插件來完成解碼element的選擇。

最終我們可以梳理出來一條播放的pipeline:

265fbb72-c430-11ec-bce3-dac502259ad0.png

通過播放OH自帶的圖庫播放本地H264視頻,抓取log,搜索OnElementSetuPCB關(guān)鍵字也可以得到播放的pipeline,也進(jìn)一步驗(yàn)證了本文的分析。

2687020e-c430-11ec-bce3-dac502259ad0.png

我們也可以使用gst-launch手動創(chuàng)建pipeline來驗(yàn)證:

gst-launch --gst-plugin-path=/system/lib/media/plugins filesrc location=/data/media/h264.mp4 ! qtdemux ! h264parse ! avdec_h264 ! videoconvert ! videoscale ! video/x-raw,width=640,height=480 ! surfacememsink

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 視頻
    +關(guān)注

    關(guān)注

    6

    文章

    1930

    瀏覽量

    72778
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3231

    瀏覽量

    42346
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3648

    瀏覽量

    16076
  • 潤和軟件
    +關(guān)注

    關(guān)注

    1

    文章

    247

    瀏覽量

    848

原文標(biāo)題:OpenHarmony 3.1 H264 視頻播放之路

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    50萬獎金池!開放原子大賽——第二屆OpenHarmony創(chuàng)新應(yīng)用挑戰(zhàn)賽正式啟動

    第二屆OpenHarmony創(chuàng)新應(yīng)用挑戰(zhàn)賽作為開放原子大賽旗下的重要賽項(xiàng),聚焦 OpenHarmony應(yīng)用開發(fā),致力提升開發(fā)者的動手實(shí)踐能力與開發(fā)創(chuàng)新應(yīng)用的能力。 賽項(xiàng)要求開發(fā)者
    發(fā)表于 10-24 15:40

    基于ArkTS語言的OpenHarmony APP應(yīng)用開發(fā):多媒體管理2

    1、程序介紹本示例展示了視頻組件的基本功能,以及如何控制播放狀態(tài)的相關(guān)能力。包括視頻組件化,全屏化,窗口化,上下輪播視頻等。本實(shí)例使用Video組件,具體如下:進(jìn)入首頁點(diǎn)擊播放按鍵。點(diǎn)擊視頻播放按鈕
    的頭像 發(fā)表于 09-21 08:06 ?219次閱讀
    基于ArkTS語言的<b class='flag-5'>OpenHarmony</b> APP應(yīng)用開發(fā):多<b class='flag-5'>媒體</b>管理2

    基于ArkTS語言的OpenHarmony APP應(yīng)用開發(fā):多媒體管理2

    1、程序介紹 本示例展示了視頻組件的基本功能,以及如何控制播放狀態(tài)的相關(guān)能力。包括視頻組件化,全屏化,窗口化,上下輪播視頻等。 本實(shí)例使用Video組件,具體如下: 進(jìn)入首頁點(diǎn)擊播放按鍵。 點(diǎn)擊視頻
    發(fā)表于 09-20 13:47

    基于ArkTS語言的OpenHarmony APP應(yīng)用開發(fā):HelloOpenharmony

    1、程序簡介該程序是基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)編寫的UI應(yīng)用類:HelloOpenHarmony。本案例是基于API9接口開發(fā)。本案例已在OpenHarmony凌蒙派-RK3568開發(fā)
    的頭像 發(fā)表于 09-15 08:09 ?285次閱讀
    基于ArkTS語言的<b class='flag-5'>OpenHarmony</b> APP應(yīng)用開發(fā):Hello<b class='flag-5'>Openharmony</b>

    康佳電視攜手華為,展示基于OpenHarmony的鴻鵠媒體創(chuàng)新方案

    在科技日新月異的今天,電視作為家庭娛樂的中心,正經(jīng)歷著前所未有的變革。6月24日,華為開發(fā)者大會上一項(xiàng)引人矚目的創(chuàng)新技術(shù)吸引了眾多目光——康佳電視展示的基于OpenHarmony Standard層級的鴻鵠媒體創(chuàng)新方案,標(biāo)志著智能電視領(lǐng)域邁入了新的發(fā)展階段。
    的頭像 發(fā)表于 06-24 17:17 ?1624次閱讀

    OpenHarmony南向開發(fā)實(shí)例:【游戲手柄】

    基于TS擴(kuò)展的聲明式開發(fā)范式編程語言,以及OpenHarmony的分布式能力實(shí)現(xiàn)的一個手柄游戲。
    的頭像 發(fā)表于 04-17 10:21 ?689次閱讀
    <b class='flag-5'>OpenHarmony</b>南向開發(fā)實(shí)例:【游戲手柄】

    OpenHarmony南向開發(fā)案例:【分布式畫板】

    使用OpenHarmony3.1-Release開發(fā)的應(yīng)用。通過OpenHarmony的分布式技術(shù),使多人能夠一起畫畫。
    的頭像 發(fā)表于 04-12 14:40 ?969次閱讀
    <b class='flag-5'>OpenHarmony</b>南向開發(fā)案例:【分布式畫板】

    OpenHarmony南向能力征集令

    1、適配過程中缺少哪些接口能力或者南向能力,需要OpenHarmony去補(bǔ)齊的?例如內(nèi)核、編譯、器件適配、單板適配等; 2、對標(biāo)linux,需要OpenHarmony提供哪些
    發(fā)表于 04-09 15:32

    知語云全景監(jiān)測技術(shù):現(xiàn)代安全防護(hù)的全面解決方案

    大型企業(yè)、政府機(jī)構(gòu)還是個人用戶,都可以通過該技術(shù)有效提升安全防護(hù)能力。例如,在企業(yè)內(nèi)部網(wǎng)絡(luò)中部署知語云全景監(jiān)測技術(shù),可以實(shí)時監(jiān)測員工行為、網(wǎng)絡(luò)攻擊等情況,有效防止數(shù)據(jù)泄露和非法入侵;在政府機(jī)構(gòu)中,該技術(shù)
    發(fā)表于 02-23 16:40

    無人機(jī)全景監(jiān)測:空域管理的新革命

    。這種實(shí)時監(jiān)測和快速響應(yīng)的能力,大大提高了空域管理的效率和安全性。 全面覆蓋與高精度數(shù)據(jù):無人機(jī)全景監(jiān)測能夠?qū)崿F(xiàn)對空域的全面覆蓋,不留死角。同時,高清攝像頭和傳感器能夠獲取高精度的影像數(shù)據(jù),為管理者
    發(fā)表于 02-20 15:23

    淺談兼容 OpenHarmony 的 Flutter

    OpenHarmony SIG 組織在 Gitee 開源了兼容 OpenHarmony 的 Flutter。該組織主要用于孵化 OpenHarmony 相關(guān)的開源生態(tài)項(xiàng)目。 ? ? ▲ 倉庫地址
    的頭像 發(fā)表于 02-02 15:22 ?551次閱讀
    淺談兼容 <b class='flag-5'>OpenHarmony</b> 的 Flutter

    震撼發(fā)布!知語云智能科技引領(lǐng)革新,全景反制無人機(jī)系統(tǒng)破繭而出!

    了國際先進(jìn)的無人機(jī)反制技術(shù),可對各類無人機(jī)進(jìn)行全面監(jiān)控和有效反制,為保障公共安全和重要目標(biāo)安全提供了強(qiáng)有力的支持。 全景反制無人機(jī)系統(tǒng)的最大亮點(diǎn)在于其全方位的監(jiān)控能力。該系統(tǒng)通過先進(jìn)的雷達(dá)和光學(xué)設(shè)備,可
    發(fā)表于 01-30 16:07

    C語言中結(jié)構(gòu)體能不能相加

    C語言中,結(jié)構(gòu)體能不能相加?
    的頭像 發(fā)表于 12-19 17:04 ?1194次閱讀
    C語言中結(jié)構(gòu)<b class='flag-5'>體能</b>不能相加

    潤開鴻基于高性能RISC-V開源架構(gòu)DAYU800通過OpenHarmony兼容性測評

    OpenHarmony標(biāo)準(zhǔn)系統(tǒng); 支持藍(lán)牙、Wi-Fi、音頻、視頻和攝像頭等功能,擁有豐富的擴(kuò)展接口,支持多種視頻輸入輸出接口,具有4K視頻處理能力;集成4核高性能玄鐵RISC-V處理器C910,AI
    發(fā)表于 12-14 17:33

    學(xué)習(xí)指南:如何快速上手媒體生態(tài)一致體驗(yàn)開發(fā)

    過去開發(fā)者們在使用多媒體能力時,往往會遇到這樣的問題,比如:為什么我開發(fā)的相機(jī)不如系統(tǒng)相機(jī)的效果好?為什么我的應(yīng)用和其他的音樂一起發(fā)聲了,我要怎么處理?以及我應(yīng)該怎么做才能在系統(tǒng)的播控中心里可以看到
    發(fā)表于 11-17 11:09