我正在尝试针对需要网络摄像头订阅源才能运行的产品在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.y4m而microphone.wav从我录制的视频文件生成。
我首先使用浏览器的MediaRecorder录制了二十秒的mp4视频,下载了结果,并使用以下命令行命令进行了转换:
ffmpeg -y -i original.mp4 -f wav -vn microphone.wav
ffmpeg -y …Run Code Online (Sandbox Code Playgroud) 我正在设置一个涉及启动网络摄像头视频会话的测试.
到目前为止,所有工作正常,除了授予对网络摄像头的访问权限外,不需要任何用户交互.
当我正在使用的第三方库发出呼叫时:navigator.mediaDevices.getUserMedia({audio: true, video: true})
浏览器会打开一个提示,要求用户允许访问.
我正在寻找的是一种在没有用户交互的情况下授予访问权限的方法.
我已经尝试了木偶操作者,page.on('dialog'...但是没有调用网络摄像头访问提示.
如果您有任何想法,请告诉我?