鸿蒙选取相册视频,获取封面图并上传阿里云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

相关推荐
ZStack开发者社区2 小时前
替代升级VMware | 云轴科技ZStack构建山西证券一云多芯云平台
云计算
weixin_307779133 小时前
实现AWS Step Function安全地请求企业内部API返回数据
开发语言·python·云计算·aws
周周的奇妙编程3 小时前
解决方案评测|告别复杂配置!基于阿里云云原生应用开发平台CAP快速部署Bolt.diy
阿里云·云原生·云计算
yuzhangfeng4 小时前
【日志体系】ELK Stack与云原生日志服务
elk·云原生·云计算
家庭云计算专家6 小时前
ONLYOFFICE深度解锁系列.2-Excel 跨文件数据整合实战指南-可道云的另一个严重bug
云计算·编辑器·bug·excel
程思扬6 小时前
颠覆传统!毫秒级响应的跨平台文件同步革命,远程访问如本地操作般丝滑
运维·服务器·前端·人工智能·经验分享·阿里云·社交电子
weisian1517 小时前
云原生--基础篇-2--云计算概述(云计算是云原生的基础,IaaS、PaaS和SaaS服务模型)
云原生·云计算·paas
AWS官方合作商9 小时前
万物互联时代,AWS IoT Core如何构建企业级物联网中枢平台?
物联网·云计算·aws
gzgenius10 小时前
警惕阿里云中的yum update操作不当导致:/sbin/init被清空导致Linux无法正常启动
linux·服务器·阿里云
XINVRY-FPGA10 小时前
XC7K410T‑2FFG900I 赛灵思XilinxFPGA Kintex‑7
嵌入式硬件·安全·阿里云·ai·fpga开发·云计算·fpga