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

时间:2015-03-20 23:02:20

标签: 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);
 });

我收到了一个错误:

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

有什么想法吗?

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

问候

以下是我称之为“弹出窗口”(extension = popup + background)的屏幕截图 Pop up window = chrome extension

1 个答案:

答案 0 :(得分:7)

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

是否需要在一次性提示后进行静默批准is debated,这也是audioCapture and videoCapture permissions cannot be used in extensions yet的原因。 audioCapturevideoCapture权限将来将来可用,因此,如果您的扩展需要,我建议将这些权限放入您的清单文件中,即使当前版本的Chrome无法识别扩展程序的权限。