HarmonyOS 鸿蒙Next 沙箱Files文件夹视频缩略图和时长等信息
HarmonyOS 鸿蒙Next 沙箱Files文件夹视频缩略图和时长等信息
如何获取沙箱Files文件夹视频缩略图和时长等信息
缩略图文档参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/avimagegenerator-V5 缩略图代码参考:
import media from '@ohos.multimedia.media';
import image from '@ohos.multimedia.image';
import { BusinessError } from '@ohos.base';
import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';
import photoAccessHelper from '@ohos.file.photoAccessHelper';
@Entry
@Component
struct Index {
// pixelMap对象声明,用于图片显示
@State pixelMap: image.PixelMap | string | undefined = undefined;
build() {
Column() {
Button() {
Text('select').fontSize(20).fontWeight(FontWeight.Bold)
}.margin({ top: 20 }).width(100).height(40).onClick(() => this.showPicker())
Image(this.pixelMap).width(300).height(300).margin({ top: 20 })
}.width('100%').height('100%')
}
showPicker() {
// 创建图库选择器对象实例
const photoViewPicker =
new photoAccessHelper.PhotoViewPicker();
// 图库选项配置,类型与数量
let selectOptions = new photoAccessHelper.PhotoSelectOptions();
selectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.VIDEO_TYPE;
selectOptions.maxSelectNumber = 1;
//调用select()接口拉起图库界面进行文件选择,文件选择成功后,返回PhotoSelectResult结果集
photoViewPicker.select(selectOptions)
.then((photoSelectResult: picker.PhotoSelectResult) => {
//用一个全局变量存储返回的uri
if (photoSelectResult.photoUris?.[0]) {
this.testFetchFrameByTime(photoSelectResult.photoUris[0])
}
}).catch((err: BusinessError) => {
console.error(`Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
})
}
// 获取缩略图
async testFetchFrameByTime(filePath: string) {
// 创建AVImageGenerator对象
let avImageGenerator: media.AVImageGenerator = await media.createAVImageGenerator()
let file = fs.openSync(filePath, fs.OpenMode.READ_ONLY);
let avFileDescriptor: media.AVFileDescriptor = { fd: file.fd };
avImageGenerator.fdSrc = avFileDescriptor;
// 初始化入参
let timeUs = 0
let queryOption = media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC
let param: media.PixelMapParams = {
width: 300,
height: 400,
}
// 获取缩略图(promise模式)
this.pixelMap = await avImageGenerator.fetchFrameByTime(timeUs, queryOption, param)
// 释放资源(promise模式)
avImageGenerator.release()
console.info(`release success.`)
fs.closeSync(file);
}
}
可以通过avMetadataExtractor.fetchMetadata获取音视频的元数据,参考文档:
更多关于HarmonyOS 鸿蒙Next 沙箱Files文件夹视频缩略图和时长等信息的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS 鸿蒙Next沙箱环境中,Files文件夹中的视频缩略图和时长等信息通常是由系统或应用通过特定的API接口进行提取和管理的。这些信息并不直接存储在文件系统中,而是由系统或应用动态生成和缓存。
要获取Files文件夹中视频的缩略图和时长信息,开发者可以使用HarmonyOS提供的多媒体API。这些API允许应用访问设备的媒体库,并从中检索视频的元数据,包括缩略图、时长、分辨率等。
具体来说,开发者可以通过以下步骤实现:
- 使用媒体库访问权限API,获取对Files文件夹中视频的访问权限。
- 调用多媒体元数据检索API,传入视频文件的路径或URI。
- 系统将返回该视频的元数据,包括缩略图(通常以Bitmap或Image形式提供)和时长(通常以毫秒为单位)。
请注意,这些API的具体使用方法和参数可能因HarmonyOS版本和API级别的不同而有所差异。因此,开发者在开发过程中应参考最新的HarmonyOS开发文档和API指南。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。