HarmonyOS 鸿蒙Next如何获取沙箱内视频的第一帧图片

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

HarmonyOS 鸿蒙Next如何获取沙箱内视频的第一帧图片

把视频从远程下载到沙箱内,然后再把视频的第一帧展示到页面上的需求,感觉获取视频缩略图和使用photoAccessHelper都不太合适,想咨询下咱们这边有什么其他的方式吗?
 

2 回复

可以参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/avimagegenerator-V5

如果可以直接拿到视频资源就不需要申请权限

试试以下代码,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如何获取沙箱内视频的第一帧图片的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,获取沙箱内视频的第一帧图片可以通过以下步骤实现:

  1. 访问沙箱文件:首先,确保你的应用具有访问沙箱中视频文件的权限。这通常需要在应用的权限配置文件中声明相应的权限。

  2. 创建MediaMetadataRetriever实例:利用HarmonyOS提供的多媒体框架,创建一个MediaMetadataRetriever实例。这个实例将用于从视频文件中提取元数据,包括帧图像。

  3. 设置数据源:通过MediaMetadataRetrieversetDataSource方法,将视频文件路径设置为数据源。

  4. 获取第一帧图像:使用getFrameAtTime方法,并传入0或负值作为时间戳,以获取视频的第一帧图像。这个方法返回一个Bitmap对象,即视频的第一帧图片。

  5. 处理图像:获取到的Bitmap对象可以直接用于UI显示或进一步处理。

示例代码(伪代码,具体实现需参考HarmonyOS SDK文档):

MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(videoFilePath);
Bitmap firstFrame = retriever.getFrameAtTime(0, MediaMetadataRetriever.OPTION_CLOSEST_SYNC);
// 处理Bitmap对象

注意:上述示例代码为概念性描述,实际开发中需使用HarmonyOS特定的API和类。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部