【问题标题】:Create a fake webcam stream for Firefox为 Firefox 创建一个虚假的网络摄像头流
【发布时间】:2019-04-21 09:49:48
【问题描述】:

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

我该怎么做?

【问题讨论】:

  • 为什么要伪造网络摄像头?您的具体用例是什么?
  • 你能分享你的代码吗?
  • 好吧,目前我只能在 chrome 中做到这一点。因此我没有分享我的代码,但为了清楚起见,我在我的量角器配置中添加了以下 chrome...capabilities: { 'browserName': 'chrome', 'chromeOptions': {'args': ['--use-fake-ui-for-media-stream', '--use-fake-device-for-media-stream', '--use-file-for-fake-video-capture=sample.y4m']} },@RatmirAsanov

标签: selenium firefox protractor katalon-studio


【解决方案1】:

对于 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

希望对你有帮助!

【讨论】:

  • 感谢拉特米尔!但是我该如何指定播放特定的媒体文件呢?
  • 你有什么建议? :)
【解决方案2】:

另一种方法是在 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

【讨论】:

  • 嗨@Darkensses 我不确定我知道 --user-agent 在这种情况下做了什么。你能解释一下吗?谢谢!
  • 嗨@Isabella --user-agent 是一个允许“模拟”另一个浏览器的chrome标志,所以该行表示我们要模拟firefox浏览器。如果您在 devtools (F12) 中启用(手动)此选项,然后单击自定义和控制 DevTools(关闭 devtools 按钮左侧的按钮),然后单击更多工具>网络条件,则可以看到此功能。从用户代理部分取消选中“自动选择”,然后选择您的浏览器进行模拟。您可以在此处获取其他用户代理字符串:developers.whatismybrowser.com/useragents/explore
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2017-12-27
    • 2012-01-23
    • 1970-01-01
    相关资源
    最近更新 更多