Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I pass a fake media stream to firefox from command line?

I am developing a java/selenium based application and need to pass media i.e. audio and/or video files to the browser.

I have been able to successfully do this in Chrome using the below code snippet:

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);

Are there similar options available in Firefox 33.1 to achieve the same capability?

If not, how can this be done?

like image 204
John Sylvester Avatar asked Aug 06 '15 15:08

John Sylvester


Video Answer


2 Answers

Fake Webcam (Chrome & Firefox)

Here's a way setup a fake webcam from the command-line on Linux.

Dependencies

  • Linux (I'm using Ubuntu)
  • FFMpeg (video streaming tool)
  • v4l2loopback (enables a fake video device)

Installing v4l2loopback (Fake Webcam)

# 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

Video File (Looped) as Fake Webcam

# 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

Desktop Video as Fake Webcam

# 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

The great part about this is that it works for both Firefox and Chrome! As it fakes the webcam at the kernel level.

Test your fake webcam here: https://webcamtests.com/

Chrome Test (Desktop Feed) enter image description here

Firefox Test (Desktop Feed) enter image description here

Disable Fake Webcam

If you need to disable it...

# To disable the fake webcam, simply remove it from the kernel
sudo modprobe --remove v4l2loopback

Anyway, hope someone finds this useful!

like image 150
Ben Winding Avatar answered Sep 21 '22 16:09

Ben Winding


Firefox has only these capabilities, browserName, browserVersion, platformName, acceptInsecureCerts, pageLoadStrategy, proxy, setWindowRect, timeouts, unhandledPromptBehavior

But as a option, there is one as in a below code,

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

Hope it will help you to solve this situation.

like image 22
slckayhn Avatar answered Sep 21 '22 16:09

slckayhn