Я хочу поделиться изображением с веб-камеры (Logitech Quickcam Pro 9000) одновременно с несколькими приложениями.
Я посмотрел вокруг сети. Вот что я нашел: - webcamstudio: новейшая версия java tar-gz даже не показывает картинку с веб-камеры - v4l2loopback: AFAIK - наиболее интересный подход. Тем не менее, мне, кажется, нужно 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
приводит к
blockquote>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 отправляет некоторые данные через трубу.
Короче говоря: я не могу заставить его работать. Я использую драйвер loopback неправильно? Я не мог найти ничего полезного о том, как использовать драйвер, особенно. как кормить его с помощью ввода.
Большое спасибо:)
Ну, я заставил его частично работать. Однако у меня есть синий бросок. Это может быть из-за неправильных форматов пикселя - действительно ли я прав? Если у кого-то есть предложение о том, как зафиксировать это, я был бы благодарен :).
Вот то, что я сделал:
скомпилированный от 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