如何从命令行将伪媒体流传递给firefox?

Joh*_*ter 12 firefox selenium google-chrome selenium-firefoxdriver

我正在开发一个基于java/selenium的应用程序,需要将媒体,即音频和/或视频文件传递给浏览器.

我已经能够使用以下代码段在Chrome中成功完成此操作:

DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
ChromeOptions options = new ChromeOptions();
options.addArguments("--allow-file-access-from-files",
            "--use-fake-ui-for-media-stream",
            "--allow-file-access",
            "--use-file-for-fake-audio-capture=D:\\PATH\\TO\\WAV\\xxx.wav",
            "--use-fake-device-for-media-stream");
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);
Run Code Online (Sandbox Code Playgroud)

Firefox 33.1中是否有类似的选项可以实现相同的功能?

如果没有,怎么办呢?

Ben*_*ing 7

假网络摄像头(Chrome 和 Firefox)

这是一种在 Linux 上从命令行设置假网络摄像头的方法。

依赖关系

  • Linux(我使用的是 Ubuntu)
  • FFMpeg(视频流工具)
  • v4l2loopback(启用假视频设备)

安装 v4l2loopback(假网络摄像头)

# 1. Install v4l2loopback kernel module from apt
sudo apt install v4l2loopback-dkms

# 2. Enable the "fake webcam", via v4l2loopback kernel module
sudo modprobe v4l2loopback devices=1 card_label="My Fake Webcam" exclusive_caps=1
Run Code Online (Sandbox Code Playgroud)

视频文件(循环)作为假网络摄像头

# Link video file (on loop) to the "fake webcam"
ffmpeg -stream_loop -1 -re -i ./MYFILE.mp4 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0
Run Code Online (Sandbox Code Playgroud)

桌面视频作为假网络摄像头

# Link desktop video stream to the "fake webcam"
ffmpeg -f x11grab -r 15 -s 1280x720 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0
Run Code Online (Sandbox Code Playgroud)

最重要的是它适用于 Firefox 和 Chrome!因为它在内核级别伪造了网络摄像头。

在此处测试您的假网络摄像头:https : //webcamtests.com/

Chrome 测试(桌面源) 在此处输入图片说明

Firefox 测试(桌面源) 在此处输入图片说明

禁用假网络摄像头

如果您需要禁用它...

# To disable the fake webcam, simply remove it from the kernel
sudo modprobe --remove v4l2loopback
Run Code Online (Sandbox Code Playgroud)

无论如何,希望有人觉得这很有用!


slc*_*yhn 5

Firefox 只有这些能力, browserName、browserVersion、platformName、acceptInsecureCerts、pageLoadStrategy、proxy、setWindowRect、timeouts、unhandledPromptBehavior

但作为一种选择,下面的代码中有一个,

options.addPreference("media.navigator.streams.fake", true);

希望它可以帮助您解决这种情况。