我想同时与多个应用程序共享网络摄像头(Logitech Quickcam Pro 9000)图片。
我在网上搜索了一下。以下是我发现的内容: - webcamstudio:最新的 java tar-gz 版本甚至不显示网络摄像头图片 - v4l2loopback:据我所知最有趣的方法。但是,我似乎需要 mjpegtools_yuv_to_v4l。由于我无法在 LUbuntu 12.10 上编译它,因此我在虚拟机中安装了 Intrepid 并在那里进行了编译。
ffmpeg -f video4linux2 -i /dev/video0 -s 1280x1024 -r 5 -pix_fmt yuv420p -sws_flags lanczos -s 160x120 -r 5 -f yuv4mpegpipe -an - | ./mjpegtools_yuv_to_v4l /dev/video1
导致
Input #0, video4linux2, from '/dev/video0': Duration: N/A, start: 303506.618990, bitrate: 147456 kb/s Stream #0.0: Video: rawvideo, yuyv422, 640x480, 147456 kb/s, 30 tbr, 1000k tbn, 30 tbc [buffer @ 0x1659200] w:640 h:480 pixfmt:yuyv422 [scale @ 0x1658860] w:640 h:480 fmt:yuyv422 -> w:160 h:120 fmt:yuv420p flags:0x200 Output #0, yuv4mpegpipe, to 'pipe:': Metadata: encoder : Lavf53.21.1 Stream #0.0: Video: rawvideo, yuv420p, 160x120, q=2-31, 200 kb/s, 90k tbn, 5 tbc Stream mapping: Stream #0.0 -> #0.0 Press ctrl-c to stop encoding mjpegtools_yuv_to_v4l: ioctl (VIDIOCGCAP): Inappropriate ioctl for device mjpegtools_yuv_to_v4l: Starting video stream. mjpegtools_yuv_to_v4l: Error writing to pipe, aborting.
有时,这些错误消息不会出现,但提示会立即返回,尽管我可以确认 ffmpeg 正在通过管道发送一些数据。
简而言之:我无法让它工作。我使用环回驱动程序的方式是否错误?我找不到任何有关如何使用驱动程序的有用信息,尤其是如何为其提供输入。
非常感谢 :)
答案1
好吧,我让它部分工作了。但是,我得到了蓝色色调。这可能是因为错误的像素格式 - 我说得对吗?如果有人对如何解决这个问题有建议,我将不胜感激 :)。
这是我所做的:
编译自https://github.com/umlaeute/v4l2loopback/tree/master/examples
sudo modprobe v4l2loopback
mkfifo pipe
./yuv4mpeg_to_v4l2-v1 /dev/video1 < pipe
mplayer tv:// -tv driver=v4l2:input=1:width=640:height=480:device=/dev/video0 -vo yuv4mpeg:file=pipe
测试通过
mplayer tv:// -tv device=/dev/video1
Skype 可以通过
LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so /usr/bin/skype