鸿蒙OS 媒体元数据获取开发指导
场景介绍
媒体元数据是描述多媒体数据的数据,例如媒体标题、媒体时长、媒体的帧数据等。
接口说明
接口名 | 描述 |
---|---|
setSource(String path) | 读取指定路径的媒体文件,将其设置为媒体源。 |
setSource(FileDescriptor fd) | 读取指定的媒体文件描述符,设置媒体源。 |
setSource(FileDescriptor fd, long offset, long length) | 读取指定的媒体文件描述符,读取数据的起始位置的偏移量以及读取的数据长度,设置媒体源。 |
setSource(String uri, Map<String, String> headers) | 读取指定的媒体文件 Uri,设置媒体源。 |
setSource(Context context, Uri uri) | 读取指定的媒体的 Uri 和上下文,设置媒体源。 |
resolveMetadata(int keyCode) | 获取媒体元数据中指定 keyCode 对应的值。 |
fetchVideoScaledPixelMapByTime(long timeUs, int option, int dstWidth, int dstHeight) | 根据视频源中时间戳、获取选项以及图像帧缩放大小,获取帧数据。 |
fetchVideoPixelMapByTime(long timeUs, int option) | 根据视频源中时间戳和获取选项,获取帧数据。 |
fetchVideoPixelMapByTime(long timeUs) | 根据视频源中时间戳,获取最靠近时间戳的帧的数据。 |
fetchVideoPixelMapByTime() | 随机获取数据源中某一帧的数据。 |
resolveImage() | 获取音频源中包含的图像数据,比如专辑封面,如果有多个图像,返回任意一个图像的数据。 |
fetchVideoPixelMapByIndex(int frameIndex, PixelMapConfigs configs) | 根据指定的图像像素格式选项,获取视频源中指定一帧的数据。 |
fetchVideoPixelMapByIndex(int frameIndex) | 获取视频源中指定一帧的数据。 |
fetchVideoPixelMapByIndex(int frameIndex, int numFrames, PixelMapConfigs configs) | 根据指定的图像像素格式选项,获取视频源中指定的连续多帧的数据。 |
fetchVideoPixelMapByIndex(int frameIndex, int numFrames) | 获取视频源中指定的连续多帧的数据。 |
fetchImagePixelMapByIndex(int imageIndex, PixelMapConfigs configs) | 根据指定的图像像素格式选项,获取源图像中指定的图像。 |
fetchImagePixelMapByIndex(int imageIndex) | 获取源图像中指定的图像。 |
fetchImagePrimaryPixelMap(PixelMapConfigs configs) | 据指定的图像像素格式选项,获取源图像中默认图像。 |
fetchImagePrimaryPixelMap() | 获取源图像中默认图像。 |
release() | 释放读取的媒体资源。 |
获取帧数据的开发步骤
- 创建媒体数据管理 AVMetadataHelper 对象,可以通过 setSource 设置要读取的媒体文件,如果不设置或设置不正确,则无法进行后续操作。
AVMetadataHelper avMetadataHelper = new AVMetadataHelper ();
avMetadataHelper.setSource("/path/short_video.mp4");
- 指定获取帧数据的选项,以及获取帧的时间,获取媒体源的帧数据。
PixelMap pixelMap = avMetadataHelper.fetchVideoPixelMapByTime(1000L, 0x00);
- 获取到 PixelMap 对象后,调用 release()函数释放读取的媒体资源。
avMetadataHelper.release();
获取媒体元数据的开发步骤
- 创建媒体数据管理 AVMetadataHelper 对象,可以通过 setSource 设置要读取的媒体文件,如果不设置或设置不正确,则无法进行后续操作。
AVMetadataHelper avMetadataHelper= new AVMetadataHelper();
avMetadataHelper.setSource("/path/short_video.mp4");
- 指定要获取的媒体元数据的 key,获取媒体元数据。如下代码获取媒体的时长信息:
String result = avMetadataHelper.resolveMetadata(AVMetadataHelper.AV_KEY_DURATION);
- 获取到媒体元数据后,调用 release()函数释放读取的媒体资源。
avMetadataHelper.release();
获取音频的图像数据的开发步骤
- 创建媒体数据管理 AVMetadataHelper 对象,可以通过 setSource 设置要读取的音频媒体文件,如果不设置或设置不正确,则无法进行后续操作。
AVMetadataHelper avMetadataHelper= new AVMetadataHelper();avMetadataHelper.setSource("/path/short_video.mp4");
- 获取音频的图像数据。
byte[] data = avMetadataHelper.resolveImage();
- 获取到图像数据后,调用 release()函数释放读取的媒体资源。
avMetadataHelper.release();