uniapp webView内嵌网页调用代码
navigator.mediaDevices.getUserMedia({
video: true,
audio: false
}) 产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 11.7.8
HBuilderX类型: 正式
HBuilderX版本号: 5.24
手机系统: Android
手机系统版本号: Android 14
手机厂商: 小米
手机机型: Redmi Note 13
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
uniapp webView内嵌网页调用代码
navigator.mediaDevices.getUserMedia({
video: true,
audio: false
}) 正常返回
调用方法catch
问题描述:uni-app WebView 中调用 getUserMedia 录制视频失败
一、问题现象
在 uni-app 的 WebView 中嵌入 H5 页面,尝试调用 navigator.mediaDevices.getUserMedia 录制视频时,出现以下现象:
错误信息:NotReadableError: Could not start audio source
表现:摄像头和麦克风权限已由 App 授予,但 WebView 中的 H5 页面无法启动音视频流,最终回退到原生录制方案。
环境:
设备:小米手机(Android 14,Chrome WebView 140.0.7339.207)
框架:uni-app(App端),H5页面通过 web-view 组件加载
协议:HTTPS(已满足安全要求)
二、排查过程
权限检查:
App 层面已通过 plus.android.requestPermissions 成功获取 CAMERA 和 RECORD_AUDIO 权限。
H5 页面通过 navigator.permissions.query 查询,权限状态为 granted。
结论:权限问题已排除。
环境检查:
页面通过 HTTPS 加载,非 file:// 协议。
navigator.mediaDevices 及 getUserMedia 方法均存在。
结论:WebView 环境正常。
资源释放检查:
已实现完整的 releaseMediaResources 方法,在每次调用 getUserMedia 前释放所有媒体轨道和视频元素。
结论:资源占用问题已排除。
错误捕获:
标准 API navigator.mediaDevices.getUserMedia 持续返回 NotReadableError。
回退到 navigator.getUserMedia 同样失败。
多次重试(含强制释放摄像头)均无效。
1 个回复
Ask小助手 - Ask社区AI助手
针对您提交的 Bug 反馈,以下是基于 DCloud 官方视角的评审与分析:
1. Bug 反馈内容完整性分析
getUserMedia调用方法,缺少完整的 uni-app 端工程结构(如web-view组件的页面代码、manifest.json中的权限配置、App 端申请权限的代码逻辑)。官方人员无法直接运行复现,需要您补充一个可直接运行的最小化复现 demo。NotReadableError,可以判断这不是误报。2. Bug 是否成立及替代方案
结合知识库与社区历史对话,该 Bug 反馈的现象成立,但大概率属于 Android 系统对 WebView 权限要求导致的配置或环境问题,而非 uni-app 框架本身的缺陷。
根据 ask 社区知识库 中的官方回复与开发者实践,在 App 端 WebView 中调用
getUserMedia录音或录像报NotReadableError: Could not start audio source,通常有以下原因及替代方案:Android 权限配置不完整:
仅在代码中通过
plus.android.requestPermissions申请RECORD_AUDIO权限可能不够。官方人员指出,必须在manifest.json中配置该权限才能正常申请。此外,有开发者反馈,除了android.permission.RECORD_AUDIO,还需要在manifest.json中添加android.permission.MODIFY_AUDIO_SETTINGS权限才能解决此报错。标准基座与自定义基座差异:
社区反馈中提到,使用 HBuilderX 标准基座时往往不会报错,而使用自定义基座或云打包正式版时会报错。这通常与自定义基座打包时遗漏了权限模块或权限配置有关。建议检查自定义基座对应的权限配置是否完整。
替代方案建议:
如果在 WebView 中始终无法稳定调起音视频流,建议放弃在 H5 中使用
getUserMedia,改用 uni-app 原生能力或原生插件。例如:uni.getRecorderManager进行录音。live-pusher组件进行音视频推流。建议您先检查
manifest.json中的MODIFY_AUDIO_SETTINGS权限配置,若问题仍存在,可补充完整的最小化复现 demo 以便进一步排查。要回复问题请先登录或注册
公告
更多>相关问题