Fake a webcam using a video loopback device?
The gst-launch
manpages tells us that we need to decode the video first, and the easiest way to do so is like this:
gst-launch-0.10 filesrc location=[location] ! decodebin ! v4l2sink device=/dev/video0
gst-launch
does not need to be run as root, and [location]
can be relative too!
Just use v4l2loopback with mplayer.
- Download it,
- compile it (
make
andsu -c 'make install'
), - load the module with
su -c 'modprobe v4l2loopback'
, then change one line in the file
examples/yuv4mpeg_to_v4l2.c
of the v4l2loopback source folder fromv.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
to
v.fmt.pix.pixelformat = V4L2_PIX_FMT_YVU420;
and do
make
in this folder.Then run it from the
examples
directory like this:mkfifo /tmp/pipe # only needed once, as long as you do not delete the file /tmp/pipe ./yuv4mpeg_to_v4l2 < /tmp/pipe & mplayer movie.mp4 -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
where you replace
movie.mp4
with the name of your video file. And replace/dev/video0
with your loopback device.
MPlayer is able to play any webstreams, all kind of video files and so on. I just tested it with a file from http://www.tagesschau.de which is a german news site.
TS=$(wget 'http://www.tagesschau.de'$(wget http://www.tagesschau.de -q -O - | grep 'Letzte Sendung' | sed -e 's%.*href="%%' -e 's%".*%%') -q -O - | grep '\.webm\.webm' | sed -e 's%.*href="%%' -e 's%\.webm\.webm".*%.webm.webm%')
./yuv4mpeg_to_v4l2 < /tmp/pipe &
mplayer $TS -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe