HarmonyOS 鸿蒙Next如何获得应用沙盒内视频的缩略图

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next如何获得应用沙盒内视频的缩略图

参考了这篇文档【获取视频缩略图】https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/avimagegenerator-V5。但是resourceManager.getRawFd似乎只能获取rawfile文件下RawFileDescriptor,并不能对应用沙盒内的文件使用。该如何获取应用沙盒中视频的缩略图?

2 回复
试试以下代码,test1.mp4 在沙箱中
public static writeVideo(ctx: Context) {
let mgr = ctx.resourceManager
let buf = mgr.getRawFileContentSync("test1.mp4");
let file = fileIo.openSync(ctx.cacheDir + "/test1.mp4", fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
fileIo.writeSync(file.fd, buf.buffer);
}

public static async getVideoPicture(path: string): Promise<PixelMap> { let avImageG = await media.createAVImageGenerator(); let file = fileIo.openSync(path, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE); avImageG.fdSrc = file; let pix = avImageG.fetchFrameByTime(0, media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC, {width: 300, height: 300}); return pix; }

在HarmonyOS鸿蒙Next系统中,获取应用沙盒内视频的缩略图,可以通过以下步骤实现:

  1. 访问视频资源:首先,确保你的应用有权限访问沙盒内的视频资源。这通常涉及到文件系统权限的申请和获取。
  2. 使用API获取缩略图:HarmonyOS提供了相应的API来获取视频的缩略图。你可以使用Asset.getThumbnail接口来获取视频对象的缩略图(PixelMap)。此外,还可以通过MediaStore.Video.Thumbnails.getThumbnail()方法,传入视频的URI和所需的缩略图大小(如MICRO_KIND或MINI_KIND)来获取。
  3. 显示缩略图:获取到缩略图后,你可以通过UI组件(如Image组件)将其显示出来。

如果上述方法无法获取到缩略图,可能是由于权限设置不正确、视频文件损坏或API使用不当等原因。请检查你的代码和权限设置,确保一切配置正确。

HarmonyOS Next 纯血鸿蒙教程B站免费学习地址https://www.bilibili.com/video/BV1fw2ZYSEk2

配套课件及涉及源码网盘下载地址http://bbs.itying.com/topic/6568836e6a4621002b88a6f6

回到顶部