Javascript Chrome扩展-如何每隔一段时间访问网络摄像头和音频?

Javascript Chrome扩展-如何每隔一段时间访问网络摄像头和音频?,javascript,google-chrome-extension,webcam,Javascript,Google Chrome Extension,Webcam,我有一个chrome扩展,我正在使用,我想与我的网络摄像头集成,做一些时髦的计算机视觉和音频ML的东西 通常我会这样做的 对于音频 <audio id="player" controls></audio> <script> const player = document.getElementById('player'); const handleSuccess = function(stream) { if (window

我有一个chrome扩展,我正在使用,我想与我的网络摄像头集成,做一些时髦的计算机视觉和音频ML的东西

通常我会这样做的

对于音频

<audio id="player" controls></audio>
<script>
  const player = document.getElementById('player');

  const handleSuccess = function(stream) {
    if (window.URL) {
      player.srcObject = stream;
    } else {
      player.src = stream;
    }
  };

  navigator.mediaDevices.getUserMedia({ audio: true, video: false })
      .then(handleSuccess);
</script>

常量player=document.getElementById('player');
const handleSuccess=函数(流){
if(window.URL){
player.srcObject=流;
}否则{
player.src=流;
}
};
navigator.mediaDevices.getUserMedia({audio:true,video:false})
.然后(顺利);
用于网络摄像头

<video autoplay></video>

<script>
const constraints = {
  video: true
};

const video = document.querySelector('video');

navigator.mediaDevices.getUserMedia(constraints).
  then((stream) => {video.srcObject = stream});
</script>

常量约束={
视频:真的
};
const video=document.querySelector('video');
navigator.mediaDevices.getUserMedia(约束)。
然后((流)=>{video.srcObject=stream});
使用chrome扩展名,最好的方法是使用background.js文件——我正在努力寻找关于如何使用它的文档或信息


提前谢谢

您可以创建一个选项页(位于扩展目录中的HTML文件),并在其中授予一次摄像头/音频权限。在此之后,您可以在中直接使用这些API


以下是这样做的原因。

后台脚本可能会拒绝授予访问权限,因为它不是可见页面。在这种情况下,我将使用一个内容脚本在选项卡中添加一个iframe,指向扩展名中的一个html文件,通过公开。在这个iframe中,你会有一个标准的扩展页面,你可以在其中使用任何
chrome
API。@wOxxOm那么本质上,使用chrome扩展的弹出窗口来提供html代码?页面中的弹出窗口作为DOM元素,是的。辉煌-授予一次,所以每次用户重新登录时,我假设仍然授予?谢谢对这是因为用户在chrome扩展页面上授予权限。此后,您可以在后台脚本中访问摄像头/音频API,而无需再次请求许可。@Mitya没错!这取决于工作流程。比方说,如果用户阻止麦克风,您会显示一些消息或重定向用户以允许在选项页中的某个位置使用权限,对吗?是的,如果他们阻止,我想您需要向他们显示一条消息并鼓励他们取消阻止-通过选项页,或通过浏览器自己的工具(跟踪您允许/阻止媒体的域)