uni.chooseMedia({
count: 8, //默认9
mediaType:['video'],
sourceType: ['album', 'camera'],
success: async (chooseVideoRes) => {
console.log(chooseVideoRes);
},
fail:(error)=>{
console.log(error);
},
complete:()=>{
console.log(complete);
}
});
- 发布:2026-06-18 22:30
- 更新:2026-06-18 22:30
- 阅读:33
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号:
HBuilderX类型: 正式
HBuilderX版本号: 5.07
手机系统: Android
手机系统版本号: Android 16
手机厂商: 小米
手机机型: redmi
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
预期结果:
兼容webm格式视频选择
兼容webm格式视频选择
bug描述:
android app 使用uni.chooseMedia 选择webm格式的视频 无响应 success和fail都不会走
1 个回复
Ask小助手 - Ask社区AI助手
好的,我们来看一下这个 bug 反馈。
1. 反馈内容评审
这个反馈在核心问题的描述上比较清晰,直接点出了
uni.chooseMedia在 Android App 上选择 webm 格式视频时,success和fail回调都没有触发,导致应用无响应。这确实是一个影响功能的问题。不过,反馈在完整性上还有提升空间,主要有以下几点:
综合来看,这个反馈说明了核心现象,但缺少了帮助官方人员快速复现问题的关键步骤和细节,导致其有效性打了折扣。
2. Bug 是否成立分析
这个 bug 大概率是成立的。
根据我对知识库的检索,
uni.chooseMediaAPI 在 App 端调用的是系统相册选择器。它的行为在很大程度上依赖于具体 Android 系统版本和设备厂商的 ROM 对媒体格式的支持情况。webm 作为一种容器格式,其内部的视频和音频编码(如 VP8/VP9,Vorbis/Opus)非常多样,并不是所有 Android 系统相册都能很好地支持预览和选择。知识库中有一个类似的案例:【报Bug】uni.chooseVideo 选择.avi视频后报错,这表明在 App 端,使用这类 API 选择非通用格式(如 MP4)的视频时,确实可能出现异常。虽然那个案例是
chooseVideo且有错误回调,但原理是相通的:系统媒体选择器对不支持的格式处理不一致,可能导致无响应。另外,从优先知识库中可以看到,
uni.chooseMedia在 Android 上采用的是系统 Picker 的形式,这进一步印证了该API的行为受系统限制。因此,你遇到的 webm 视频无响应问题,很可能就是特定 Android 系统(如你测试的 Android 16 的小米设备)的相册选择器在处理 webm 文件时出现了内部异常,导致
uni.chooseMedia的回调机制被绕过,最终表现为无响应。3. 替代方案与建议
既然问题出在系统选择器对特定格式的兼容性上,除了等待官方适配或系统更新外,你可以考虑以下替代方案:
方案一:使用专门的插件
如果需要在 App 端选择各种格式的视频,可以尝试使用功能更强大的原生插件。例如,插件市场有一个官方出品的插件 uni-chooseSystemMedia,它旨在解决 Google Play 权限政策问题,同时可能对文件格式有更好的兼容性处理。你可以搜索一下看看是否满足你的需求。
方案二:引导用户或自行处理
在应用层面,你可以做一些优化:
uni.chooseMedia时,可以自行设置一个定时器。如果一段时间内(如 10 秒)没有任何回调,就主动提示用户操作失败,并引导其重试或选择其他格式的视频。这虽然不能解决根本问题,但能避免应用看起来“卡死”了。最后,为了能让官方更高效地处理此问题,建议你补充信息后,在官方 issues 系统 中提交一个完整的 bug 报告,并提供以下信息:
要回复问题请先登录或注册
公告
更多>相关问题