HarmonyOS 鸿蒙Next 视频转码无法获取Failed to get descriptor

HarmonyOS 鸿蒙Next 视频转码无法获取Failed to get descriptor

从相册中选择视频文件,由于文件编码为h265,pc端暂不支持播放,所以需要转换成h264编码。 从相册选择视频后,操作转码逻辑一直失败,无法获取 文件描述

let result = await photoPicker.select({
  isEditSupported: true,
  isOriginalSupported: true,
  maxSelectNumber: 9,
  MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_VIDEO_TYPE
})
result.photoUris
if (canIUse("SystemCapability.Multimedia.Media.AVTranscoder")) {
  if (this.avTranscoder != undefined) {
    await this.avTranscoder.release();
    this.avTranscoder = undefined;
  }
  // 1.创建转码实例
  this.avTranscoder = await media.createAVTranscoder();
  this.setAVTranscoderCallback(fd);
  // 2.获取转码源文件fd和目标文件fd赋予avTranscoder;参考FilePicker文档
  let context = getContext(this) as common.UIAbilityContext;
  // let fileDescriptor = await context.resourceManager.getRawFd(imageUrl);

  let fileDescriptor = await context.resourceManager.getRawFd('fd://' + imageUrl);
  this.avTranscoder.fdSrc = fileDescriptor;
  this.avTranscoder.fdDst = fd;
  // 3.配置转码参数完成准备工作
  await this.avTranscoder.prepare(this.avConfig);
  // 4.开始转码
  await this.avTranscoder.start();
}

更多关于HarmonyOS 鸿蒙Next 视频转码无法获取Failed to get descriptor的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
你这个demo有点问题,最好给个完整能跑起来的demo,这边定位看看

更多关于HarmonyOS 鸿蒙Next 视频转码无法获取Failed to get descriptor的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS 鸿蒙Next 视频转码无法获取“Failed to get descriptor”的问题,这通常指示着在尝试访问或操作视频文件的元数据时遇到了障碍。可能的原因包括但不限于:

  1. 文件损坏:视频文件本身可能已损坏,导致无法正确读取其描述符。
  2. 权限问题:应用程序可能没有足够的权限去访问指定的视频文件。
  3. API使用不当:在调用鸿蒙系统提供的视频转码API时,参数设置错误或API使用方式不正确。
  4. 资源冲突:系统或其他应用可能正在使用该视频文件,导致当前应用无法获取其描述符。
  5. 系统Bug:鸿蒙系统的某个版本可能存在未修复的Bug,影响视频文件的处理。

解决此问题,可以尝试以下步骤(注意,这里不给出具体建议,但提示检查方向):

  • 确认视频文件的完整性和格式兼容性。
  • 检查应用是否拥有访问该文件的必要权限。
  • 仔细审查API调用代码,确保参数正确无误。
  • 确保没有其他应用或服务正在使用该视频文件。
  • 查阅鸿蒙系统的更新日志,看是否有相关的Bug修复。

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

回到顶部