如何使用webrtc insde谷歌Chrome扩展?

yar*_*rek 2 google-chrome-extension webrtc

我开发了一个谷歌浏览器扩展程序.

我现在正在尝试将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);
 });
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

step1
NavigatorUserMediaError {constraintName: "", message: "", name: "InvalidStateError"}
Run Code Online (Sandbox Code Playgroud)

任何的想法 ?

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

问候

这是我称之为"弹出窗口"(extension = popup + background)的屏幕截图 弹出窗口=铬扩展名

Rob*_*b W 7

要在Chrome扩展程序的后台页面中使用WebRTC或语音识别API,您需要在扩展程序,(弹出窗口)窗口或iframe(在标签内)中打开扩展程序页面(如果您使用iframe,别忘了列出页面web_accessible_resources).在此页面中,调用navigator.webkitGetUserMedia以触​​发权限提示.用户批准该权限后,您的分机(特别是后台页面)可以再次请求访问麦克风/摄像头,并且该请求将自动获得批准.

是否需要在一次性提示之后进行静默批准是有争议的,这也是不能在扩展中使用audioCapturevideoCapture权限的原因.但是audioCapture,videoCapture权限在以后可用,因此,如果您的扩展程序需要,我建议将这些权限放入您的清单文件中,即使当前版本的Chrome无法识别扩展程序的权限.

  • @yarek是,或插入请求访问网络摄像头/麦克风的框架.您只需要执行一次此操作,之后,弹出窗口或后台页面中的任何请求都将自动获得批准. (2认同)
  • @yarek不,在当前标签内.这个想法的关键部分是1)getUserMedia请求必须来自选项卡中的(子)框架(否则不会出现权限栏/气泡)和2)需要从您的chrome中触发权限请求`extension:// [extensionid]`URL(因为每个源存储的权限). (2认同)