android app 使用uni-app uni.chooseMedia 选择webm格式的视频 无响应 success和fail都不会走

android app 使用uni-app uni.chooseMedia 选择webm格式的视频 无响应 success和fail都不会走

  • 产品分类:uniapp/App
  • PC开发环境操作系统:Mac
  • PC开发环境操作系统版本号:(空)
  • HBuilderX类型:正式
  • HBuilderX版本号:5.07
  • 手机系统:Android
  • 手机系统版本号:Android 16
  • 手机厂商:小米
  • 手机机型:redmi
  • 页面类型:vue
  • vue版本:vue3
  • 打包方式:云端
  • 项目创建方式:HBuilderX

示例代码:

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);
  }
});

更多关于android app 使用uni-app uni.chooseMedia 选择webm格式的视频 无响应 success和fail都不会走的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于android app 使用uni-app uni.chooseMedia 选择webm格式的视频 无响应 success和fail都不会走的实战教程也可以访问 https://www.itying.com/category-93-b0.html


欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

好的,我们来看一下这个 bug 反馈。

  1. 反馈内容评审
    这个反馈在核心问题的描述上比较清晰,直接点出了 uni.chooseMedia 在 Android App 上选择 webm 格式视频时,success 和 fail 回调都没有触发,导致应用无响应。这确实是一个影响功能的问题。
    不过,反馈在完整性上还有提升空间,主要有以下几点:

BUG 描述不够深入:描述只说了“无响应,success和fail都不会走”,但缺少一些关键细节。比如,是不是只要视频列表中存在 webm 格式的视频,整个选择器就卡死了?还是说点击某个 webm 视频后没反应?或者是其他情况?这个细节对于技术人员排查问题至关重要。
缺少复现步骤:这是一个关键缺失。反馈中没有明确说明如何复现此问题。例如,测试用的 webm 视频文件是如何获取的(自己录制的、下载的、还是其他来源)?视频的具体参数(编码、分辨率、时长、大小)是怎样的?这些信息会直接影响官方人员能否成功复现该问题。
预期结果需要更明确:“兼容webm格式视频选择”这个预期很好,但可以更具体一些。比如,是期望能够正常选中并返回文件信息,还是期望在系统选择器层面就过滤掉不支持的格式,或者至少给出一个明确的错误回调。
分类信息基本完整:反馈提供了 HBuilderX 版本、Vue 版本、设备型号和系统版本,这点做得不错,有助于快速定位问题范围。

综合来看,这个反馈说明了核心现象,但缺少了帮助官方人员快速复现问题的关键步骤和细节,导致其有效性打了折扣。
2. Bug 是否成立分析
这个 bug 大概率是成立的。
根据我对知识库的检索,uni.chooseMedia API 在 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 权限政策问题,同时可能对文件格式有更好的兼容性处理。你可以搜索一下看看是否满足你的需求。

方案二:引导用户或自行处理 在应用层面,你可以做一些优化:

提示用户:在调用选择器前,可以提示用户“若选择 webm 格式视频可能无响应,建议选择 MP4 等通用格式”。
增加超时处理:在调用 uni.chooseMedia 时,可以自行设置一个定时器。如果一段时间内(如 10 秒)没有任何回调,就主动提示用户操作失败,并引导其重试或选择其他格式的视频。这虽然不能解决根本问题,但能避免应用看起来“卡死”了。

最后,为了能让官方更高效地处理此问题,建议你补充信息后,在官方 issues 系统 中提交一个完整的 bug 报告,并提供以下信息:

详细的复现步骤:描述你是如何操作触发这个问题的。
问题视频文件:提供一个可以复现此问题的 webm 视频样本,这对于开发者来说是最宝贵的资源。
更具体的现象:描述是点击视频后无响应,还是整个选择器界面卡死。

回到顶部