0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenHarmony 3.2 Beta多媒体子系统的媒体库模块

2KHh_gh_15d2f06 来源:深开鸿 作者:巴延兴 2022-09-16 09:50 次阅读

巴延兴

深圳开鸿数字产业发展有限公司

os框架开发工程师

1.MediaLibrary介绍

OpenAtom OpenHarmony(以下简称“OpenHarmony”)MediaLibrary媒体库提供了一系列易用的接口用于获取媒体文件元数据信息。MediaLibrary接口是OpenHarmony系统内部使用接口,不是外部三方应用使用的接口。

MediaLibrary的功能支持扫描设备中所有媒体文件的能力,为相册、音视频播放器、文件管理器等应用提供统一的媒体元数据信息操作接口,目前可实现的具体能力如下:

● 查询音频视频和图片文件元数据信息

● 查询图片和视频相册

● 媒体文件操作如创建、重命名、拷贝和删除

● 相册操作如创建、重命名和删除

MediaLibrary媒体库代码仓的位置:foundation/multimedia/media_library

2.代码结构

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

代码的框架主要分为Napi和Native两部分。

NAPI部分实现了媒体资源的查询、相册增删改查的实现及JS接口。

Native部分:

(1)media_library_helper:

主要提供了资源的设置和创建功能,比如相册的操作、缩略图操作等,主要涉及到资源文件或者文件夹的创建。

(2)media_library_manager:

主要对媒体库的相关数据库进行操作。

(3)media_scanner:

media_library/frameworks/innerkitsimpl/media_scanner中的代码没有添加到编译系统中,OpenHarmony 3.2 Beta版本的扫描代码主要放在media_library/frameworks/services/media_scanner目录中。

(4)medialibrary_data_extension:

该目录中涉及到一些C++源码和Hap包的应用代码,目前的扫描、截图等流程没有涉及到本目录的内容。

3.对外接口

getPublicDirectory 查看公共目录

根据参数传递的目录类型返回不同类型媒体库的相对目录。例如:"Cameras/"、"Videos/"、"Pictures/"、"Audios/"、"Documents/"和"Downloads/".

getFileAssets 获取文件资源

调用DataShareHelper的Query查询接口,获取文件资源,最终回调用JsDataShareExtAbility的Query接口实现。

getAlbums 获取相册

查询媒体中的相册目录信息。

createAsset 创建资源

调用DataShareHelper提供的Insert()接口插入数据库,传入的uri通过“create_asset”字符表示创建数据资源。

deleteAsset 删除资源

调用DataShareHelper提供的Insert()接口插入数据库,传入的uri通过“delete_asset”字符表示删除数据资源。

4. 媒体库相关服务

OpenHarmony 3.2 Beta版本的目录结构进行了比较大的调整,将Services目录放到了frameworks路径下,并且相比3.1 Release版本去掉了IPC调用机制。目前,Services目录下的media_library_data_share和media_thumbnail里面的文件内容为空,后续会完善。

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

5. 媒体库相关数据库

媒体库操作的数据是在/data/app/el2/100/database/com.ohos.medialibrary.medialibrarydata/media_library.db目录下。这是SQLite3数据库的文件,可以使用SqliteManager软件打开,主要看数据库的两部分:

第一部分是Files表数据。

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

Files表格字段:

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

第二部分是VIEWS中的几个表,比如相册查询、图片查询、视频查询。

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

6. 代码流程

截屏流程

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

截屏App通过调用saveImage方法来进行截屏图片的保存,这个方法通过@ohos.multimedia.mediaLibrary的getMediaLibrary接口获取到MediaLibrary,调用它的接口会调用到MediaLibraryNapi提供的接口,这个对象是连接JS和Native的桥梁。

首先通过getPublicDirectory获取到相对路径,然后通过createAsset创建资源返回fileAsset,再通过fileAsset对文件进行操作(将jpegData数据写入文件),最后关闭文件,完成截屏图片的保存。

启动图库流程

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

图库通过MediaLibraryNapi的getFileAssets接口获取文件资源,最终返回pixelMap给应用使用。

媒体文件扫描流程

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

MediaLibraryDataManager的InitMediaLibraryMgr接口中最终会调用ScanDir来进行媒体文件扫描,这接口调用到frameworks/services/media_scanner目录下对应的实现。

7. 总结

本文主要介绍了OpenHarmony 3.2 Beta多媒体子系统的媒体库模块,本模块的接口暂不提供外部三方应用使用,仅提供OpenHarmony系统内部使用。相比于OpenHarmony3.1 Release版本,OpenHarmony 3.2 Beta版本的目录结构进行了比较大的调整,相关功能期待广大开发者持续加入并完善。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    7635

    浏览量

    148459
  • 多媒体
    +关注

    关注

    0

    文章

    481

    浏览量

    36676
  • OpenHarmony
    +关注

    关注

    23

    文章

    3272

    浏览量

    15159

原文标题:OpenHarmony 3.2 Beta源码分析之MediaLibrary

文章出处:【微信号:gh_15d2f062a168,微信公众号:深开鸿】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    多媒体组合教学应用系统

    多媒体电教室的基本构成设备》由会员分享,可在线阅读,更多相关《多媒体电教室的基本构成设备(27页珍藏版)》请在人人文库网上搜索。1、多媒体组合教学应用系统
    发表于 09-08 08:13

    怎么实现在嵌入式环境下使用QT多媒体框架?

    要在嵌入式环境下使用QT多媒体框架,必须包含第3方多媒体库QT本身以插件的方式使用第3方多媒体库:1 插件是动态方式,可以动态更新2 静态插件的方式,只是静态编译QT时集成插件,不可
    发表于 10-27 09:34

    【直播回顾】OpenHarmony知识赋能五期第三课——多媒体整体介绍

    5月5日晚上19点,知识赋能第五期第三节课《OpenHarmony标准系统多媒体子系统整体介绍》,在OpenHarmony开发者成长计划社群
    发表于 05-06 10:09

    直播预告丨OpenHarmony标准系统多媒体子系统之音频解读

    社群直播间带来干货分享《OpenHarmony标准系统多媒体子系统之音频解读》,他将详细介绍OpenHarmony音频框架,和大家一起熟悉音
    发表于 05-12 11:31

    直播预告丨OpenHarmony标准系统多媒体子系统之视频解读

    OpenHarmony官方社群直播间带来干货分享《OpenHarmony标准系统多媒体子系统之视频解读》,他将为大家介绍
    发表于 05-18 10:16

    如何通过OpenHarmony系统中集成的ffmpeg和NAPI机制,实现更多的多媒体功能?

    OpenHarmony中集成了ffmpeg的第三方多媒体的很多功能实现需要ffmpeg。另外,媒体文件的处理包含了对音视频裁剪、音视
    发表于 07-07 10:08

    如何通过OpenHarmony系统中集成的ffmpeg和NAPI机制,实现更多的多媒体功能?

    OpenHarmony中集成了ffmpeg的第三方多媒体的很多功能实现需要ffmpeg。另外,媒体文件的处理包含了对音视频裁剪、音视
    发表于 07-12 17:13

    如何通过OpenHarmony系统中集成的ffmpeg和NAPI机制,实现更多的多媒体功能?

    OpenHarmony中集成了ffmpeg的第三方多媒体的很多功能实现需要ffmpeg。另外,媒体文件的处理包含了对音视频裁剪、音视
    发表于 07-25 16:57

    OpenHarmony 3.2 Beta源码分析之MediaLibrary

    文件扫描,这接口调用到frameworks/services/media_scanner目录下对应的实现。7. 总结本文主要介绍了OpenHarmony 3.2 Beta多媒体
    发表于 09-19 10:47

    OpenHarmony 3.2 Beta多媒体系列——视频录制

    OpenHarmony”)系统中,多媒体子系统通过N-API接口提供给上层JS调用,N-API相当于是JS和Native之间的桥梁,在OpenHa
    发表于 02-09 15:47

    IP多媒体子系统-媒体网关功能有哪些?

    IP多媒体子系统-媒体网关功能有哪些? IP多媒体子系统-媒体网关功能(IMS-MGF)
    发表于 04-07 16:24 736次阅读

    直播预告OpenHarmony标准系统多媒体子系统之相机解读

    郭岳峰老师,将在 OpenHarmony 官方社群直播间带来干货分享《OpenHarmony 标准系统多媒体子系统之相机解读》,他将为大家介
    的头像 发表于 05-25 11:43 916次阅读
    直播预告<b class='flag-5'>OpenHarmony</b>标准<b class='flag-5'>系统</b><b class='flag-5'>多媒体</b><b class='flag-5'>子系统</b>之相机解读

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

    如图所示,OpenHarmony 多媒体子系统拉起了一个叫 mediaserver 的服务来处理媒体事务,并且封装了接口层包括JS接口、native 接口提供给 APP 调用,medi
    的头像 发表于 07-01 10:58 1034次阅读

    OpenHarmony 3.2 Beta多媒体系列——音视频播放gstreamer

    到gstreamer的过程。 此前,我在《OpenHarmony 3.2 Beta多媒体系列-音视频播放框架 》一文中,主要分析了多媒体播放
    的头像 发表于 11-23 21:10 867次阅读

    OpenHarmony 3.2 Beta多媒体系列:音视频播放gstreamer

    到gstreamer的过程。 此前,我在《OpenHarmony 3.2 Beta多媒体系列-音视频播放框架》 一文中,主要分析了多媒体播放
    的头像 发表于 11-25 09:10 626次阅读