如何使用 webrtc insde google chrome 扩展?

How to use webrtc insde google chrome extension?

我开发了一个 google chrome 扩展。

我正在尝试在内部集成 webRTC 功能:

navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
console.log("step1");
navigator.getUserMedia({audio: true, video: true}, function(stream){
    console.log("step2");
    $('#myVideo').prop('src', URL.createObjectURL(stream));
    window.localStream = stream;
    console.log("step3");

  }, function(error){ 
    console.log(error);
 });

我收到一个错误:

step1
NavigatorUserMediaError {constraintName: "", message: "", name: "InvalidStateError"}

有什么想法吗?

我需要任何特殊许可才能在我的扩展中使用 webrtc 吗?是否可以在扩展程序中访问 webrtc?

问候

这是我所谓的 "popup" 的屏幕截图(扩展名 = 弹出窗口 + 背景)

为了在 Chrome 扩展程序的后台页面中使用 WebRTC 或语音识别 API,您需要在选项卡中从您的扩展程序打开一个页面,(弹出窗口)window 或 iframe(选项卡内)(如果您使用 iframe,请不要忘记在 web_accessible_resources 中列出页面)。在该页面中,调用navigator.webkitGetUserMedia触发权限提示。用户批准权限后,您的扩展程序(尤其是后台页面)可以再次请求访问麦克风/摄像头,请求将自动获得批准。

一次性提示后的默许是否可取is debated, and this is also the reason that audioCapture and videoCapture permissions cannot be used in extensions yetaudioCapturevideoCapture 权限 在未来变得可用,因此我建议如果您的扩展程序需要这些权限,即使在Chrome 的当前版本无法识别扩展权限。