HarmonyOS media.createAVImageGenerator的参数fdSrc 只能获取resource中的资源

我的需求是从录制的视频中获取首帧缩略图。录制的视频存储在temp中的,无法通过resourceManager.getRawFd获得fdSrc。

const _url = '/data/storage/el2/base/temp/cips/user/test/assets/msi/temp/tmp_msi_camera_1716794850485.mp4'; 
// 这获得fdSrc失败 
const fdSrc = await msiContext.applicationContext.resourceManager.getRawFd(_url); 
const avImageGenerator = await media.createAVImageGenerator(); 
avImageGenerator.fdSrc = fdSrc; 
let timeUs = 0 
let queryOption = media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC 
let param: media.PixelMapParams = { 
    width : 300, 
    height : 300 
} 
await avImageGenerator.fetchFrameByTime(timeUs, queryOption, param); 
avImageGenerator.release();
HarmonyOS
2024-11-13 10:22:46
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

​推荐使用:fs.openSync,链接参考:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-fs-V5#ZH-CN_TOPIC_0000001847210116__fsopensync

const filePath = getContext().filesDir+"/VID_1716862918_000.mp4" 
const res = fs.accessSync(filePath) 
if (res) { 
  let fd = fs.openSync(filePath).fd 
  let size = fs.statSync(filePath).size 
  let fileSr: media.AVFileDescriptor = { 
    fd, 
    offset: 0, 
    length: size 
  } 
  let avIG = await media.createAVImageGenerator() 
  avIG.fdSrc = fileSr 
  let timeUs = 0 
  let queryOption = media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC 
  let param: media.PixelMapParams = { 
    width : 300, 
    height : 300 
  } 
  this.pixelMap = await avIG.fetchFrameByTime(timeUs, queryOption, param); 
  let imageFile = fs.openSync(getContext().tempDir+"/VID_1716862918_000.jpg", fs.OpenMode.READ_WRITE|fs.OpenMode.CREATE) 
  image.createImagePacker().packToFile(this.pixelMap, imageFile.fd, { 
    format: "image/jpg", 
    quality: 98 
  }).then(res => { 
    console.log('asdasdsd') 
  }).catch((err: BusinessError) => { 
    console.log("-----"+JSON.stringify(err)) 
  }) 
  fs.closeSync(imageFile); 
  avIG.release();
分享
微博
QQ
微信
回复
2024-11-13 15:41:34
相关问题
HarmonyOS 获取Resourcevalue问题
443浏览 • 1回复 待解决
如何动态访问media目录下资源
2094浏览 • 1回复 待解决
HarmonyOS Resource获取value问题
7浏览 • 1回复 待解决
HarmonyOS如何获取资源绝对路径
543浏览 • 1回复 待解决
关于 onArrange获取参数问题
4981浏览 • 1回复 待解决
resourcestring.json用法?
7156浏览 • 1回复 已解决
如何将Resource资源对象转成string类型
3112浏览 • 1回复 待解决
判断一个参数是不是Resource类型
423浏览 • 1回复 待解决