鸿蒙选取相册视频,获取封面图并上传阿里云OSS

继上一次完成了鸿蒙选取图片上传阿里云OSS后, 这次记录下选择相册视频,并生成PixelMap 缩略图显示在UI中,并在上传的时候生成沙箱地址用于上传。

1、通过picker 选择本地视频返回的视频地址生成缩略图

复制代码
const getVideoThumb = async (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模式)
  let pixelMap = await avImageGenerator.fetchFrameByTime(timeUs, queryOption, param)
  // 释放资源(promise模式)
  avImageGenerator.release()
  console.info(`release success.`)
  fs.closeSync(file)

  return pixelMap
}

2、通过pixelMap 生成封面图的沙箱地址用于OSS上传

复制代码
let packOpts: image.PackingOption = { format: "image/jpeg", quality: 98 }
const imagePackerApi = image.createImagePacker();
imagePackerApi.packing(pixelMap, packOpts).then(async (buffer: ArrayBuffer) => {
  //文件操作
  let filePath = context.cacheDir + name
  let file = fs.openSync(filePath,fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE)
  fs.writeSync(file.fd,buffer)
  //获取uri,使用uri来通过image展示,因为image组件目前不支持直接用路径
  let urlStr = fileUri.getUriFromPath(filePath)
  console.log("保存成功:" + filePath)
})

3、阿里云OSS上传,这一步不会的可以看下我上一篇文章

鸿蒙APP 上传文件到阿里云OSS

相关推荐
陈皮糖..10 小时前
27 届运维实习笔记|第三、四周:从流程熟练到故障排查,企业运维实战深化
运维·笔记·sql·nginx·ci/cd·云计算·jenkins
ZStack开发者社区11 小时前
DeepSeek-V4首发即支持,ZStack AIOS 私有化部署即刻可用
人工智能·开源·云计算
圆山猫15 小时前
[Linux] Ubuntu 26.04 换阿里云镜像源(最新方法)
linux·ubuntu·阿里云
阿乔外贸日记16 小时前
土耳其包装市场需求缺口分析
大数据·人工智能·物联网·搜索引擎·云计算
阿里-于怀18 小时前
【无标题】阿里云 AI 网关支持 DeepSeek V4
人工智能·阿里云·云计算·deepseek
easy_coder20 小时前
一次部署阻塞的根因分析:自动提交与手动提交链路混用的代价
运维·云计算
新知图书20 小时前
通过阿里云百炼平台调用DeepSeek大模型
人工智能·阿里云·云计算·langchian
TokenByte-AI导航小贴士20 小时前
Claude 4.5 Sonnet / Opus / Haiku:新手选型指南
人工智能·ai·云计算·aigc·claude·aws
China_Yanhy21 小时前
[Infra/SRE 知识库] AWS CloudFront API 边缘缓存配置与排障复盘
缓存·云计算·aws
小夏子_riotous21 小时前
Docker学习路径——7、Docker搭建MySQL 主从复制
linux·运维·mysql·docker·容器·centos·云计算