HarmonyOS学习路之开发篇—多媒体开发(视频开发 三)

简介: 媒体描述信息开发

媒体描述信息开发

场景介绍

媒体描述信息主要工作是支持多媒体的相关描述信息的存取。

接口说明

媒体描述信息类AVDescription的主要接口

image.png媒体描述信息内部静态类AVDescription.Builder的主要接口

image.png

开发步骤

1. 调用AVDescription.Builder类的build方法创建AVDescription实例。代码示例如下:

String pathName = "/data/data/com.example.myapplication/files/test.png";
ImageSource.SourceOptions srcOpts = new ImageSource.SourceOptions();
srcOpts.formatHint = "image/png";
ImageSource imageSource = ImageSource.create(pathName, srcOpts);
ImageSource.DecodingOptions decodingOpts = new ImageSource.DecodingOptions();
decodingOpts.desiredSize = new Size(0, 0);
decodingOpts.desiredRegion = new Rect(0, 0, 0, 0);
PixelMap pixelMap = imageSource.createPixelmap(0, decodingOpts);
Uri iconUri = Uri.parse("http://test.icon");
Uri mediaUri = Uri.parse("http://test.mp4");
PacMap pacMap = new PacMap();
AVDescription avDescription = new AVDescription.Builder().setExtras(null)
            .setMediaId("1")
            .setDescription("Description")
            .setIconUri(iconUri)
            .setIMediaUri(mediaUri)
            .setExtras(pacMap)
            .setIcon(pixelMap)
            .setTitle("title")
            .setSubTitle("subTitle")
            .build();

2. (可选)根据已有的AVDescription对象,可以获取媒体的描述信息,如获取媒体Uri,代码示例如下:


Uri uri = avDescription.getMediaUri(); 

3. (可选)根据已有的AVDescription对象,可以将媒体的描述信息写入Parcel对象,代码示例如下:


Parcel parcel = Parcel.create();
boolean result = avDescription.marshalling(parcel);

4. (可选)根据已有的Parcel对象,可以读取到AVDescription对象,实现媒体描述信息的写入,代码示例如下:


boolean result = avDescription.unmarshalling(parcel);

媒体元数据开发

场景介绍

媒体元数据主要用于媒体数据的存放和读取,包含诸如媒体资源的描述、创建日期、作者、封面图片等等。


接口说明

媒体元数据存放类AVMetadata.Builder的主要接口

image.png媒体元数据类AVMetadata的主要接口

image.png

开发步骤

1. 调用AVMetadata.Builder类的build方法创建AVMetadata实例。代码示例如下:

String pathName = "/data/data/com.example.myapplication/files/test.png";
ImageSource.SourceOptions srcOpts = new ImageSource.SourceOptions();
srcOpts.formatHint = "image/png";
ImageSource imageSource = ImageSource.create(pathName, srcOpts);
ImageSource.DecodingOptions decodingOpts = new ImageSource.DecodingOptions();
decodingOpts.desiredSize = new Size(0, 0);
decodingOpts.desiredRegion = new Rect(0, 0, 0, 0);
PixelMap pixelMap = imageSource.createPixelmap(0, decodingOpts);
AVMetadata avMetadata = new AVMetadata.Builder().setString(AVMetadata.AVTextKey.META_ID, "illuminate.mp3")
                  .setString(AVMetadata.AVTextKey.TITLE, "title")
                  .setString(AVMetadata.AVTextKey.ARTIST, "artist")
                  .setString(AVMetadata.AVTextKey.ALBUM, "album")
                  .setString(AVMetadata.AVTextKey.TITLE, "display_subtitle")
                  .setPixelMap(AVMetadata.AVPixelMapKey.ICON, pixelmap)
                  .build();

2. (可选)根据已有的AVMetadata对象,可以获取媒体元数据信息,如获取媒体标题等,代码示例如下:


String title = avMetadata.getString(AVMetadata.AVTextKey.TITLE);

3. 将已有的媒体元数据AVMetadata对象下发给应用,示例如下:


AVSession  mediaSession = new AVSession(this, "AVService");
mediaSession.setAVMetadata(avMetadata);

4. 应用获取媒体元数据一般结合AVControllerCallback相关类使用。

Image musicCover;
Text musicTitle;
public class Callback extends AVControllerCallback {
    @Override
    public void onAVMetadataChanged(AVMetadata metadata) {
        // 歌曲信息回调
        AVDescription description = metadata.getAVDescription();
        // 获取标题
        String title = description.getTitle().toString();
        CharSequence sequence = metadata.getText(AVMetadata.AVTextKey.TITLE);
        if (sequence != null) {
            title = sequence.toString();
        }
        // 设置媒体title
        musicTitle.setText(title);
        // 获取曲目专封面
        PixelMap iconPixelMap = description.getIcon();
        // 设置歌曲封面图
        musicCover.setPixelMap(iconPixelMap);
    }
}
相关文章
|
4天前
|
Android开发
鸿蒙开发:自定义一个简单的标题栏
本身就是一个很简单的标题栏组件,没有什么过多的技术含量,有一点需要注意,当使用沉浸式的时候,注意标题栏的位置,需要避让状态栏。
鸿蒙开发:自定义一个简单的标题栏
|
4天前
|
API
鸿蒙开发:切换至基于rcp的网络请求
本文的内容主要是把之前基于http封装的库,修改为当前的Remote Communication Kit(远场通信服务),无非就是通信的方式变了,其他都大差不差。
鸿蒙开发:切换至基于rcp的网络请求
|
9天前
|
UED
鸿蒙next版开发:相机开发-适配不同折叠状态的摄像头变更(ArkTS)
在HarmonyOS 5.0中,ArkTS提供了强大的相机开发能力,特别是针对折叠屏设备的摄像头适配。本文详细介绍了如何在ArkTS中检测和适配不同折叠状态下的摄像头变更,确保相机应用在不同设备状态下的稳定性和用户体验。通过代码示例展示了具体的实现步骤。
36 8
|
9天前
|
前端开发 开发者
鸿蒙next版开发:相机开发-元数据(ArkTS)
在HarmonyOS 5.0中,ArkTS新增了对相机元数据的访问能力,帮助开发者获取图像的详细信息。本文介绍了如何在ArkTS中获取和使用相机元数据,包括导入接口、创建元数据输出流、开启和停止元数据输出、监听元数据对象可用事件等步骤,并提供了详细的代码示例。
27 5
|
9天前
|
前端开发 API 开发者
鸿蒙next版开发:相机开发-录像(ArkTS)
在HarmonyOS 5.0中,ArkTS提供了一套完整的API来管理相机录像功能。本文详细介绍了如何在ArkTS中实现录像功能,包括导入接口、创建Surface、获取相机输出能力、创建会话并开始录像以及监听录像输出流状态,并提供了代码示例进行解读。希望本文能帮助开发者更好地利用ArkTS的相机录像功能。
27 5
|
移动开发 Ubuntu 网络协议
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(中)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令
170 1
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(中)
|
XML Web App开发 开发框架
鸿蒙开发入门 | 开发第一个鸿蒙应用+页面跳转
准备好鸿蒙开发环境后,接下来就需要创建鸿蒙项目,掌握项目的创建过程以及配置。项目创建好后,需要把项目运行在模拟器上,鸿蒙的模拟和安卓模拟器有些不同,鸿蒙提供远程模拟器和本地模拟器,通过登录华为账号登录在线模拟器,使用DevEco Studio可将项目部署到远程模拟器中。
1265 1
鸿蒙开发入门 | 开发第一个鸿蒙应用+页面跳转
|
存储 Ubuntu 前端开发
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(下)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令
335 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(下)
|
存储 编解码 Ubuntu
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(上)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令
227 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(上)
|
开发工具
HarmonyOS(鸿蒙)开发一文入门
HarmonyOS(鸿蒙)开发一文入门
170 0
HarmonyOS(鸿蒙)开发一文入门