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”的问题,这通常指示着在尝试访问或操作视频文件的元数据时遇到了障碍。可能的原因包括但不限于:
- 文件损坏:视频文件本身可能已损坏,导致无法正确读取其描述符。
- 权限问题:应用程序可能没有足够的权限去访问指定的视频文件。
- API使用不当:在调用鸿蒙系统提供的视频转码API时,参数设置错误或API使用方式不正确。
- 资源冲突:系统或其他应用可能正在使用该视频文件,导致当前应用无法获取其描述符。
- 系统Bug:鸿蒙系统的某个版本可能存在未修复的Bug,影响视频文件的处理。
解决此问题,可以尝试以下步骤(注意,这里不给出具体建议,但提示检查方向):
- 确认视频文件的完整性和格式兼容性。
- 检查应用是否拥有访问该文件的必要权限。
- 仔细审查API调用代码,确保参数正确无误。
- 确保没有其他应用或服务正在使用该视频文件。
- 查阅鸿蒙系统的更新日志,看是否有相关的Bug修复。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html