为 Firefox 创建一个假的网络摄像头流

Create a fake webcam stream for Firefox

我想为 Firefox 创建一个假的网络摄像头流。目前我拥有所需的功能 media.navigator.streams.fake 但我不确定如何播放特定的视频文件。

我该怎么做?

对于 Firefox,您可以在 Python 中使用以下代码:

from selenium import webdriver


options = webdriver.FirefoxOptions()
options.set_preference("media.navigator.streams.fake", True)
driver = webdriver.Firefox(firefox_options = options)

或者,如果您将所需的功能与其他选项一起使用,那么它会像:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities


options = webdriver.FirefoxOptions()
options.set_preference("media.navigator.streams.fake", True)
desired = DesiredCapabilities.FIREFOX
desired.update(options.to_capabilities())
driver = webdriver.Firefox(desired_capabilities=desired)

PS:您可以将其翻译成任何需要的编程语言。

根据您的问题:Firefox 不支持在假网络摄像头内播放特定视频文件 -- https://github.com/mozilla/geckodriver/issues/1429.

希望对您有所帮助!

另一种方法是在 chrome 中使用用户代理,然后注入视频文件:

ChromeOptions options = new ChromeOptions();
options.addArguments("--use-fake-ui-for-media-stream");
options.addArguments("--use-fake-device-for-media-stream");
options.addArguments("--use-file-for-fake-video-capture=path/to/video.y4m");
options.addArguments("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0");
webDriver = new ChromeDriver(options)

PS:我创建了 Ratmir Asanov 评论的问题 github.com/mozilla/geckodriver/issues/1429

如果你想用 firefox 播放特定文件,我认为你必须在你的实例上模拟一个网络摄像头(例如使用 v4l2loopback),然后使用 ffmpeg 之类的东西在虚拟网络摄像头上播放你的文件。 使用 selenium,您还必须更新您的 firefox 配置文件以允许访问您的假网络摄像头。