【问题标题】:How to enable camera and microphone in packaged application for Chrome OS or Chrome extension?如何在 Chrome OS 或 Chrome 扩展的打包应用程序中启用摄像头和麦克风?
【发布时间】:2015-01-22 22:39:14
【问题描述】:

我正在测试一个场景,我在单独的窗口中调用环聊网页,但应用程序无权访问麦克风和摄像头 - 按钮为红色并且消息显示“环聊无法使用选定的麦克风/摄像头”。

我已将"audioCapture""videoCapture" 包含在权限中。

必须做些什么才能让它发挥作用?

编辑:

在允许媒体应用访问摄像头和麦克风后 - 我可以看到在环聊设置中,但图片和语音不会通过环聊传输给其他参与者。我必须为流媒体设置什么吗?

我已经有了这段代码:

navigator.webkitGetUserMedia({ audio: true, video: true },
            function (stream) {
                mediaStream = stream;
            },
            function (error) {
                console.error("Error trying to get the stream:: " + error.message);
            });    

【问题讨论】:

  • 您将环聊嵌入到 <webview>,对吗?
  • 是的,就像你说的那样。
  • 可能你是为应用本身打开流,而内嵌页面因为是独占访问而无法获取?
  • 我不太明白(我是打包应用程序的新手)。我可以说它作为 Chrome 扩展程序可以工作,但作为 Chrome OS 媒体上的打包应用程序不会传输。
  • 我的意思是,这段代码不应该在你的应用程序中;环聊应该请求GetUserMedia 本身,您只需要处理该权限请求。如果此代码在您的应用中,则可能与环聊冲突。

标签: javascript google-chrome-app getusermedia google-chrome-os


【解决方案1】:

如果您需要为 <webview> 嵌入的页面提供音频/视频,则需要 "audioCapture"/"videoCapture" 权限是不够的。

要使用这些,页面请求浏览器的权限。在普通 Chrome 中,您会看到一个信息栏,允许用户允许/拒绝请求。

<webview> 不显示这些元素,而是显示raises an event,并由应用程序来允许/拒绝它:

permissionrequest

当访客页面需要向嵌入器请求特殊权限时触发。

以下示例代码将授予访客页面访问 webkitGetUserMedia API 的权限。请注意,使用此示例代码的应用本身必须指定 audioCapture 和/或 videoCapture 清单权限:

webview.addEventListener('permissionrequest', function(e) {
  if (e.permission === 'media') {
    e.request.allow();
  }
});

【讨论】:

  • 我正在开发一个需要访问麦克风和摄像头的 Chromebook 自助服务终端应用;这个 sn-p 加上 manifest.json 中的 audioCapturevideoCapture 权限完美运行。
  • 对于 chrome 扩展,貌似不能添加 videoCapture 权限。
猜你喜欢
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 1970-01-01
相关资源
最近更新 更多