9

I want to send video to webcam device on Ubuntu which is loaded on /dev/video0

I've already seen this command that send desktop to it but is there any way to send video to it?

ffmpeg -f x11grab -r 15 -s 1280x720 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0

I should mention that i specifically want to use ffmpeg command.

  • It's my understanding that a webcam is an video input device so I would say no. What webcam do you have that supports receiving video? – Elder Geek Feb 8 '17 at 19:12
  • @ElderGeek there is no webcam.it is virtual one which need to have video on it. – dsddd Feb 8 '17 at 19:15
  • HAve you tried using a pipe? – Elder Geek Feb 8 '17 at 19:25
  • Information is available here – Elder Geek Feb 8 '17 at 19:29
  • 1
    Possible duplicate of Fake a webcam using a video loopback device? (although not necessarily using ffmpeg). – llogan Feb 8 '17 at 19:39
15

You can do this with v4l2loopback. First you need to install it:

Install v4l2loopback

Method 1: Install v4l2loopback from the repository

sudo apt install v4l2loopback-dkms
sudo modprobe v4l2loopback

This is easy but older versions of v4l2loopback have some known bugs, so consider compiling it instead if you encounter any issues.

Method 2: Compile v4l2loopback

If it's not in the repository for your Ubuntu version, or you want the latest version, you can compile it:

sudo apt-get install build-essential checkinstall
wget https://github.com/umlaeute/v4l2loopback/archive/master.zip
unzip master.zip
cd v4l2loopback-master
make
sudo checkinstall --pkgname=v4l2loopback --pkgversion="$(date +%Y%m%d%H%M)-git" --default
sudo modprobe v4l2loopback

Uninstalling

If you want to remove the package you compiled:

sudo apt-get remove v4l2loopback

Usage examples

Now run ffmpeg. Example for desktop using x11grab:

ffmpeg -f x11grab -framerate 15 -video_size 1280x720 -i :0.0 -f v4l2 /dev/video0

Example for a video input:

ffmpeg -re -i input.mp4 -map 0:v -f v4l2 /dev/video0

You can view it with ffplay:

ffplay /dev/video0

Note that the actual video number may vary depending if an existing device is already using /dev/video0.

| improve this answer | |
  • where can i specify my video ? – dsddd Feb 8 '17 at 21:08
  • @dsddd Example updated. – llogan Feb 8 '17 at 21:13
  • 2
    I installed the package, but I'm stuck with an error on both examples, either the x11grab or the the mp4 video give me the same [v4l2 @ 0x55ebc0cfdc40] ioctl(VIDIOC_G_FMT): Invalid argument Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument Error initializing output stream 0:0 -- Conversion failed! Is there something else I should do? some dependencies I missed? – Sabbin Jan 29 '19 at 16:43
  • 1
    @llogan following your example above, I have this command ffmpeg -re -i 1.mp4 -map 0:v -f v4l2 /dev/video0 pastebin.com/9eDK0NTN, if I try the command to run for desktop ffmpeg -f x11grab -framerate 15 -video_size 1280x720 -i :1 -f v4l2 /dev/video0 I get this error pastebin.com/xN6uZJR6, also the folder /dev/video0 has rights for write – Sabbin Feb 4 '19 at 7:37
  • 1
    @sabbin try with /dev/video1 – Chicken Soup Jul 3 '19 at 10:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.