相关疑难解决方法(0)

如何正确向Chrome提供模拟网络摄像头视频?

我正在尝试针对需要网络摄像头订阅源才能运行的产品在Chrome中运行端到端测试。据我了解,这意味着使用--use-file-for-fake-video-capture="/path/to/video.y4m"命令行参数将虚假的网络摄像头视频提供给Chrome 。然后它将用作网络摄像头视频。

但是,无论我提供了什么y4m文件,在这些条件下运行的Chrome都会出现以下错误:

DOMException: Could not start video source
{
  code: 0,
  message: "Could not start video source",
  name: "NotReadableError"
}
Run Code Online (Sandbox Code Playgroud)

值得注意的是我可以提供一个音频文件就好了使用--use-file-for-fake-audio-capture和Chrome将与它工作得很好。视频一直是我的重点。

以下直接的mediaDevices请求产生了此错误:

navigator.mediaDevices.getUserMedia({ video: true, audio: true })
  .then(data => {
    // do stuff
  })
  .catch(err => {
    // oh no!
  });
Run Code Online (Sandbox Code Playgroud)

(提供视频文件时,它总是打“ oh no!”分支。)

到目前为止我尝试过的

我一直在使用以下命令行参数运行Chrome(添加了换行符以提高可读性),并且我使用的是Mac,因此使用了以下open命令:

open -a "Google Chrome" --args
  --disable-gpu
  --use-fake-device-for-media-stream
  --use-file-for-fake-video-capture="~/Documents/mock/webcam.y4m"
  --use-file-for-fake-audio-capture="~/Documents/mock/microphone.wav"
Run Code Online (Sandbox Code Playgroud)

webcam.y4mmicrophone.wav从我录制的视频文件生成。

我首先使用浏览器的MediaRecorder录制了二十秒的mp4视频,下载了结果,并使用以下命令行命令进行了转换:

ffmpeg -y -i original.mp4 -f wav -vn microphone.wav
ffmpeg -y …
Run Code Online (Sandbox Code Playgroud)

video webcam google-chrome ffmpeg mocking

4
推荐指数
4
解决办法
4284
查看次数

使用Puppeteer for Node.js自动允许网络摄像头访问

我正在设置一个涉及启动网络摄像头视频会话的测试.

到目前为止,所有工作正常,除了授予对网络摄像头的访问权限外,不需要任何用户交互.

当我正在使用的第三方库发出呼叫时:navigator.mediaDevices.getUserMedia({audio: true, video: true}) 浏览器会打开一个提示,要求用户允许访问.

我正在寻找的是一种在没有用户交互的情况下授予访问权限的方法.

我已经尝试了木偶操作者,page.on('dialog'...但是没有调用网络摄像头访问提示.

如果您有任何想法,请告诉我?

permissions webcam node.js puppeteer

3
推荐指数
1
解决办法
1317
查看次数