android - Android webview 中的 HTML 相机 API
问题描述
我正在使用以下 html 代码。我可以在我的桌面上获得视频流,但我在 android webView 应用程序中获得了一个灰色的播放按钮。我通过 https 连接提供服务。请指导我,因为我是这两个代码片段的新手。
HTML
<div id="video-container">
<video id="camera-stream" width="500" autoplay></video>
</div>
脚本.js
window.onload = function() {
navigator.getUserMedia = (navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia);
if (navigator.getUserMedia) {
navigator.getUserMedia({ video: true },
function(localMediaStream) {
var vid = document.getElementById('camera-stream');
vid.srcObject = localMediaStream;
},
function(err) {
console.log('The following error occurred when trying to use getUserMedia: ' + err);
}
);
} else { alert('Sorry, your browser does not support getUserMedia'); }
}
此屏幕截图取自我的桌面 chrome 浏览器。
这是从我的手机 webView 中获取的。
解决方案
我知道这是一个旧线程,但我最近遇到了同样的问题,经过多次尝试,我终于找到了解决方案。
如果您看到此播放按钮,则应正确设置所有权限。似乎 webview 正在等待用户交互以启动流,但点击图标不会启动视频(idk 用户应该如何“批准”流)
解决方案是更改 webapp 中 webview 的设置:
webView.settings.mediaPlaybackRequiresUserGesture = false;
通过这种方式,流无需任何用户交互即可正确启动
推荐阅读
- node.js - aws Lambda 上的哨兵面包屑
- macos - 如何检测 macOS 是否配置为睡眠
- json - golang yaml 对 jsonlines 的支持
- laravel - 如何将更新的数据传递给已经渲染的子 vue 组件
- excel - 为什么复制后无法删除工作表?
- java - 下载前从 Blob URL 路径读取数据并将数据附加到文件
- c - 出现错误 - 在初始化之前引用的局部变量
- sql - T-SQL case 语句中的 datediff 在运行时引发溢出错误
- mysql - 将mysql表列与另一个表上的单元格进行比较
- ios - 应用扩展程序和主应用程序之间的共享文件