Здравствуйте!
Файл /dev/video0 традиционно создается WEB-камерой. Из него берут видеопоток такие программы как kopete или skype.Теперь представим задачу: мы хотим показать видеоролик собеседнику через skype.
WEB-камеры у нас нет, файл /dev/video0 не сущетсвует (но мы его можем создать).
Вопрос. Какие команды можно дать, чтобы Mplayer/VLC начали писать в /dev/video0?
Я пытался сделать так:
# Создаем символьный файл /dev/video0
# Вроде у пользователей WEB-камер создается именно
# символьный файл а не блочный
=> mknod /dev/video0 c 81 0# Поставим ему максимальные права, чтоб не заморачиваться с правами
=> chmod 777 /dev/video0# Попробуем что-нибудь записать в /dev/video0
# (По-идее, данный файл должен скушивать все, как /dev/null?)
=> cat "Это видеопоток"> /dev/video0
bash: /dev/video0: Нет такого устройства или адреса# Хм, странно. А ну посмотрим:
=> ls -l /dev | grep video
crw-rw---T+ 1 root video 252, 1 Дек 12 23:43 fw1
crw-rw----+ 1 root video 195, 0 Дек 12 22:39 nvidia0
crw-rw----+ 1 root video 195, 255 Дек 12 22:39 nvidiactl
crwxrwxrwx 1 root root 81, 0 Дек 13 00:53 video0Файл /dev/video0 на месте, но при попытке записать в него, система сообщает что файл не существует.
Наверное, я что-то принципиально не так делаю. А как правильно?
В общем, немного разобрался. Нужно запустить модуль ядра v4l2loopback (ранее он назывался vloopback).После этого можно заставить mplayer гнать видео в файл /dev/video0:
mplayer movie.mp4 -vf scale=320:240 -vo yuv4mpeg:file=/dev/video0Проблема в том, что не могу подобрать формат. Изображение, получаемое через смотрелку веб-камеры, зеленое в вертикальную полоску, с каким-то полупрозрачным наложением увеличенной в два раза копии основного изображения.
Как бы мне узнать, в каком формате обычные WEB-камеры передают данные на /dev/video0?
> В общем, немного разобрался. Нужно запустить модуль ядра v4l2loopback (ранее он назывался
> vloopback).
> После этого можно заставить mplayer гнать видео в файл /dev/video0:
>mplayer movie.mp4 -vf scale=320:240 -vo yuv4mpeg:file=/dev/video0
> Проблема в том, что не могу подобрать формат. Изображение, получаемое через смотрелку
> веб-камеры, зеленое в вертикальную полоску, с каким-то полупрозрачным наложением увеличенной
> в два раза копии основного изображения.
> Как бы мне узнать, в каком формате обычные WEB-камеры передают данные на
> /dev/video0?незнаю
> В общем, немного разобрался. Нужно запустить модуль ядра v4l2loopback (ранее он назывался
> vloopback).
> После этого можно заставить mplayer гнать видео в файл /dev/video0:
>mplayer movie.mp4 -vf scale=320:240 -vo yuv4mpeg:file=/dev/video0
> Проблема в том, что не могу подобрать формат. Изображение, получаемое через смотрелку
> веб-камеры, зеленое в вертикальную полоску, с каким-то полупрозрачным наложением увеличенной
> в два раза копии основного изображения.
> Как бы мне узнать, в каком формате обычные WEB-камеры передают данные на
> /dev/video0?
У gstreamer есть элемент v4l2sink.
Если еще v4l2loopback - тоже может быть полезен для Вашей задачи.
> Если еще v4l2loopback - тоже может быть полезен для Вашей задачи.s/Если/Есть/
>> Если еще v4l2loopback - тоже может быть полезен для Вашей задачи.Таки вы случайно не знаете, в каком формате обычные WEB-камеры передают данные на /dev/video0?
Если у вас есть вебкамера, можете открыть /dev/video0 в VLC или в Mplayer, и посмотреть информацию о потоке?
>>> Если еще v4l2loopback - тоже может быть полезен для Вашей задачи.
> Таки вы случайно не знаете, в каком формате обычные WEB-камеры передают данные
> на /dev/video0?
> Если у вас есть вебкамера, можете открыть /dev/video0 в VLC или в
> Mplayer, и посмотреть информацию о потоке?вообще V4L2 поддерживает разные форматы
mplayer говорит - "RAW Uncompressed Video"
для gstreamer фильтр подобный такому
"video/x-raw-yuv,width=640,height=360,framerate=30/1,format=(fourcc)I420"наиболее эффективный формат V4L2 например, для детектирования движения
V4L2_PIX_FMT_YUV420
>[оверквотинг удален]
>> Таки вы случайно не знаете, в каком формате обычные WEB-камеры передают данные
>> на /dev/video0?
>> Если у вас есть вебкамера, можете открыть /dev/video0 в VLC или в
>> Mplayer, и посмотреть информацию о потоке?
> вообще V4L2 поддерживает разные форматы
> mplayer говорит - "RAW Uncompressed Video"
> для gstreamer фильтр подобный такому
> "video/x-raw-yuv,width=640,height=360,framerate=30/1,format=(fourcc)I420"
> наиболее эффективный формат V4L2 например, для детектирования движения
> V4L2_PIX_FMT_YUV420Я все это спрашивал для того, чтобы подключить DV-камеру в виде WEB-камеры, чтобы по Skype можно было говорить.
По результатам написал статью:
Как в Linux превратить DV-камеру в WEB-камеру
http://webhamster.ru/site/page/index/articles/comp/252
>[оверквотинг удален]
> Дек 12 23:43 fw1
> crw-rw----+ 1 root video 195, 0
> Дек 12 22:39 nvidia0
> crw-rw----+ 1 root video 195, 255 Дек 12
> 22:39 nvidiactl
> crwxrwxrwx 1 root root 81,
> 0 Дек 13 00:53 video0