RM新时代网站-首页

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

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

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

OpenHarmony 3.2 Beta多媒體子系統(tǒng)的媒體庫(kù)模塊

2KHh_gh_15d2f06 ? 來(lái)源:深開(kāi)鴻 ? 作者:巴延興 ? 2022-09-16 09:50 ? 次閱讀

巴延興

深圳開(kāi)鴻數(shù)字產(chǎn)業(yè)發(fā)展有限公司

os框架開(kāi)發(fā)工程師

1.MediaLibrary介紹

OpenAtom OpenHarmony(以下簡(jiǎn)稱“OpenHarmony”)MediaLibrary媒體庫(kù)提供了一系列易用的接口用于獲取媒體文件元數(shù)據(jù)信息。MediaLibrary接口是OpenHarmony系統(tǒng)內(nèi)部使用接口,不是外部三方應(yīng)用使用的接口。

MediaLibrary的功能支持掃描設(shè)備中所有媒體文件的能力,為相冊(cè)、音視頻播放器、文件管理器等應(yīng)用提供統(tǒng)一的媒體元數(shù)據(jù)信息操作接口,目前可實(shí)現(xiàn)的具體能力如下:

● 查詢音頻、視頻和圖片文件元數(shù)據(jù)信息

● 查詢圖片和視頻相冊(cè)

● 媒體文件操作如創(chuàng)建、重命名、拷貝和刪除

● 相冊(cè)操作如創(chuàng)建、重命名和刪除

MediaLibrary媒體庫(kù)代碼倉(cāng)的位置:foundation/multimedia/media_library

2.代碼結(jié)構(gòu)

89eeeec8-34f7-11ed-ba43-dac502259ad0.png

代碼的框架主要分為Napi和Native兩部分。

NAPI部分實(shí)現(xiàn)了媒體資源的查詢、相冊(cè)增刪改查的實(shí)現(xiàn)及JS接口。

Native部分:

(1)media_library_helper:

主要提供了資源的設(shè)置和創(chuàng)建功能,比如相冊(cè)的操作、縮略圖操作等,主要涉及到資源文件或者文件夾的創(chuàng)建。

(2)media_library_manager:

主要對(duì)媒體庫(kù)的相關(guān)數(shù)據(jù)庫(kù)進(jìn)行操作。

(3)media_scanner:

media_library/frameworks/innerkitsimpl/media_scanner中的代碼沒(méi)有添加到編譯系統(tǒng)中,OpenHarmony 3.2 Beta版本的掃描代碼主要放在media_library/frameworks/services/media_scanner目錄中。

(4)medialibrary_data_extension:

該目錄中涉及到一些C++源碼和Hap包的應(yīng)用代碼,目前的掃描、截圖等流程沒(méi)有涉及到本目錄的內(nèi)容。

3.對(duì)外接口

getPublicDirectory 查看公共目錄

根據(jù)參數(shù)傳遞的目錄類型返回不同類型媒體庫(kù)的相對(duì)目錄。例如:"Cameras/"、"Videos/"、"Pictures/"、"Audios/"、"Documents/"和"Downloads/".

getFileAssets 獲取文件資源

調(diào)用DataShareHelper的Query查詢接口,獲取文件資源,最終回調(diào)用JsDataShareExtAbility的Query接口實(shí)現(xiàn)。

getAlbums 獲取相冊(cè)

查詢媒體中的相冊(cè)目錄信息。

createAsset 創(chuàng)建資源

調(diào)用DataShareHelper提供的Insert()接口插入數(shù)據(jù)庫(kù),傳入的uri通過(guò)“create_asset”字符表示創(chuàng)建數(shù)據(jù)資源。

deleteAsset 刪除資源

調(diào)用DataShareHelper提供的Insert()接口插入數(shù)據(jù)庫(kù),傳入的uri通過(guò)“delete_asset”字符表示刪除數(shù)據(jù)資源。

4. 媒體庫(kù)相關(guān)服務(wù)

OpenHarmony 3.2 Beta版本的目錄結(jié)構(gòu)進(jìn)行了比較大的調(diào)整,將Services目錄放到了frameworks路徑下,并且相比3.1 Release版本去掉了IPC調(diào)用機(jī)制。目前,Services目錄下的media_library_data_share和media_thumbnail里面的文件內(nèi)容為空,后續(xù)會(huì)完善。

8a0e6c08-34f7-11ed-ba43-dac502259ad0.png

5. 媒體庫(kù)相關(guān)數(shù)據(jù)庫(kù)

媒體庫(kù)操作的數(shù)據(jù)是在/data/app/el2/100/database/com.ohos.medialibrary.medialibrarydata/media_library.db目錄下。這是SQLite3數(shù)據(jù)庫(kù)的文件,可以使用SqliteManager軟件打開(kāi),主要看數(shù)據(jù)庫(kù)的兩部分:

第一部分是Files表數(shù)據(jù)。

8a2c2680-34f7-11ed-ba43-dac502259ad0.png

Files表格字段:

8a4f6a6e-34f7-11ed-ba43-dac502259ad0.jpg

第二部分是VIEWS中的幾個(gè)表,比如相冊(cè)查詢、圖片查詢、視頻查詢。

8a79b36e-34f7-11ed-ba43-dac502259ad0.png

6. 代碼流程

截屏流程

8aa788f2-34f7-11ed-ba43-dac502259ad0.png

截屏App通過(guò)調(diào)用saveImage方法來(lái)進(jìn)行截屏圖片的保存,這個(gè)方法通過(guò)@ohos.multimedia.mediaLibrary的getMediaLibrary接口獲取到MediaLibrary,調(diào)用它的接口會(huì)調(diào)用到MediaLibraryNapi提供的接口,這個(gè)對(duì)象是連接JS和Native的橋梁。

首先通過(guò)getPublicDirectory獲取到相對(duì)路徑,然后通過(guò)createAsset創(chuàng)建資源返回fileAsset,再通過(guò)fileAsset對(duì)文件進(jìn)行操作(將jpegData數(shù)據(jù)寫(xiě)入文件),最后關(guān)閉文件,完成截屏圖片的保存。

啟動(dòng)圖庫(kù)流程

8ad9dfaa-34f7-11ed-ba43-dac502259ad0.png

圖庫(kù)通過(guò)MediaLibraryNapi的getFileAssets接口獲取文件資源,最終返回pixelMap給應(yīng)用使用。

媒體文件掃描流程

8af7e50e-34f7-11ed-ba43-dac502259ad0.png

MediaLibraryDataManager的InitMediaLibraryMgr接口中最終會(huì)調(diào)用ScanDir來(lái)進(jìn)行媒體文件掃描,這接口調(diào)用到frameworks/services/media_scanner目錄下對(duì)應(yīng)的實(shí)現(xiàn)。

7. 總結(jié)

本文主要介紹了OpenHarmony 3.2 Beta多媒體子系統(tǒng)的媒體庫(kù)模塊,本模塊的接口暫不提供外部三方應(yīng)用使用,僅提供OpenHarmony系統(tǒng)內(nèi)部使用。相比于OpenHarmony3.1 Release版本,OpenHarmony 3.2 Beta版本的目錄結(jié)構(gòu)進(jìn)行了比較大的調(diào)整,相關(guān)功能期待廣大開(kāi)發(fā)者持續(xù)加入并完善。

審核編輯:湯梓紅

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

    關(guān)注

    33

    文章

    8575

    瀏覽量

    151014
  • 多媒體
    +關(guān)注

    關(guān)注

    0

    文章

    496

    瀏覽量

    36975
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3713

    瀏覽量

    16254

原文標(biāo)題:OpenHarmony 3.2 Beta源碼分析之MediaLibrary

文章出處:【微信號(hào):gh_15d2f062a168,微信公眾號(hào):深開(kāi)鴻】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    直播預(yù)告丨OpenHarmony標(biāo)準(zhǔn)系統(tǒng)多媒體子系統(tǒng)之音頻解讀

    社群直播間帶來(lái)干貨分享《OpenHarmony標(biāo)準(zhǔn)系統(tǒng)多媒體子系統(tǒng)之音頻解讀》,他將詳細(xì)介紹OpenHarmony音頻框架,和大家一起熟悉音
    發(fā)表于 05-12 11:31

    直播預(yù)告丨OpenHarmony標(biāo)準(zhǔn)系統(tǒng)多媒體子系統(tǒng)之視頻解讀

    OpenHarmony官方社群直播間帶來(lái)干貨分享《OpenHarmony標(biāo)準(zhǔn)系統(tǒng)多媒體子系統(tǒng)之視頻解讀》,他將為大家介紹
    發(fā)表于 05-18 10:16

    如何通過(guò)OpenHarmony系統(tǒng)中集成的ffmpeg庫(kù)和NAPI機(jī)制,實(shí)現(xiàn)更多的多媒體功能?

    。OpenHarmony中集成了ffmpeg的第三方庫(kù),多媒體的很多功能實(shí)現(xiàn)需要ffmpeg庫(kù)。另外,媒體文件的處理包含了對(duì)音視頻裁剪、音視
    發(fā)表于 07-07 10:08

    如何通過(guò)OpenHarmony系統(tǒng)中集成的ffmpeg庫(kù)和NAPI機(jī)制,實(shí)現(xiàn)更多的多媒體功能?

    。OpenHarmony中集成了ffmpeg的第三方庫(kù),多媒體的很多功能實(shí)現(xiàn)需要ffmpeg庫(kù)。另外,媒體文件的處理包含了對(duì)音視頻裁剪、音視
    發(fā)表于 07-12 17:13

    如何通過(guò)OpenHarmony系統(tǒng)中集成的ffmpeg庫(kù)和NAPI機(jī)制,實(shí)現(xiàn)更多的多媒體功能?

    OpenHarmony中集成了ffmpeg的第三方庫(kù)多媒體的很多功能實(shí)現(xiàn)需要ffmpeg庫(kù)。另外,媒體文件的處理包含了對(duì)音視頻裁剪、音視
    發(fā)表于 07-25 16:57

    OpenHarmony 3.2 Beta源碼分析之MediaLibrary

    文件掃描,這接口調(diào)用到frameworks/services/media_scanner目錄下對(duì)應(yīng)的實(shí)現(xiàn)。7. 總結(jié)本文主要介紹了OpenHarmony 3.2 Beta多媒體
    發(fā)表于 09-19 10:47

    OpenHarmony 3.2 Beta多媒體系列——視頻錄制

    OpenHarmony”)系統(tǒng)中,多媒體子系統(tǒng)通過(guò)N-API接口提供給上層JS調(diào)用,N-API相當(dāng)于是JS和Native之間的橋梁,在OpenHa
    發(fā)表于 02-09 15:47

    IP多媒體子系統(tǒng)-媒體網(wǎng)關(guān)功能有哪些?

    IP多媒體子系統(tǒng)-媒體網(wǎng)關(guān)功能有哪些? IP多媒體子系統(tǒng)-媒體網(wǎng)關(guān)功能(IMS-MGF)
    發(fā)表于 04-07 16:24 ?824次閱讀

    直播預(yù)告OpenHarmony標(biāo)準(zhǔn)系統(tǒng)多媒體子系統(tǒng)之相機(jī)解讀

    岳峰老師,將在 OpenHarmony 官方社群直播間帶來(lái)干貨分享《OpenHarmony 標(biāo)準(zhǔn)系統(tǒng)多媒體子系統(tǒng)之相機(jī)解讀》,他將為大家介紹
    的頭像 發(fā)表于 05-25 11:43 ?1121次閱讀
    直播預(yù)告<b class='flag-5'>OpenHarmony</b>標(biāo)準(zhǔn)<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>多媒體</b><b class='flag-5'>子系統(tǒng)</b>之相機(jī)解讀

    基于OpenHarmony 3.2 Beta1版本的媒體能力

    如圖所示,OpenHarmony 多媒體子系統(tǒng)拉起了一個(gè)叫 mediaserver 的服務(wù)來(lái)處理媒體事務(wù),并且封裝了接口層包括JS接口、native 接口提供給 APP 調(diào)用,medi
    的頭像 發(fā)表于 07-01 10:58 ?1394次閱讀

    OpenHarmony 3.2 Beta多媒體系列——音視頻播放gstreamer

    到gstreamer的過(guò)程。 此前,我在《OpenHarmony 3.2 Beta多媒體系列-音視頻播放框架 》一文中,主要分析了多媒體播放
    的頭像 發(fā)表于 11-23 21:10 ?1193次閱讀

    OpenHarmony 3.2 Beta多媒體系列:音視頻播放gstreamer

    到gstreamer的過(guò)程。 此前,我在《OpenHarmony 3.2 Beta多媒體系列-音視頻播放框架》 一文中,主要分析了多媒體播放
    的頭像 發(fā)表于 11-25 09:10 ?898次閱讀

    OpenHarmony 3.2 Beta多媒體系列:視頻錄制

    一、簡(jiǎn)介 媒體子系統(tǒng)為開(kāi)發(fā)者提供了媒體相關(guān)的很多功能,本文針對(duì)其中的視頻錄制功能做個(gè)詳細(xì)的介紹。首先,我將通過(guò)媒體子系統(tǒng)提供的視頻錄制Tes
    的頭像 發(fā)表于 02-15 15:55 ?514次閱讀

    鴻蒙實(shí)戰(zhàn)開(kāi)發(fā):【相機(jī)和媒體庫(kù)

    在ArkTS中調(diào)用相機(jī)拍照和錄像,以及如何使用媒體庫(kù)接口進(jìn)行媒體文件的增、刪、改、查操作。本示例用到了
    的頭像 發(fā)表于 03-20 16:36 ?775次閱讀
    鴻蒙實(shí)戰(zhàn)開(kāi)發(fā):【相機(jī)和<b class='flag-5'>媒體庫(kù)</b>】

    鴻蒙開(kāi)發(fā)接口媒體:【@ohos.multimedia.medialibrary (媒體庫(kù)管理)】

    獲取媒體庫(kù)的實(shí)例,用于訪問(wèn)和修改用戶等個(gè)人媒體數(shù)據(jù)信息(如音頻、視頻、圖片、文檔等)。
    的頭像 發(fā)表于 06-03 11:52 ?1141次閱讀
    鴻蒙開(kāi)發(fā)接口<b class='flag-5'>媒體</b>:【@ohos.multimedia.medialibrary (<b class='flag-5'>媒體庫(kù)</b>管理)】
    RM新时代网站-首页