Вещание видео с веб-камеры по локальной сети при помощи VLC (консольный скрытый режим)


Для того чтобы быстренько сделать вещание с USB-камеры по локальной сети нам понадобится только VLC и обычно VLC - стандарт медиа-проигрывателя де-факто в большинстве Linux-дистрибутивов и ничего дополнительно устанавливать уже не требуется.

Обратите внимание, что пользователь от имени которого мы хотим запустить стрим с камеры должен входить в группы video и audio иначе у вас будут некоторые проблемы, а от имени суперпользователя root проигрыватель запустить не получится.

Следующее, что мы должны определить, это имена аудио и видео устройств с которых мы будем получать данные и первым делом получаем список доступных устройств alsa:

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 1: LX3000 [Microsoft LifeChat LX-3000], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

Затем, получаем список доступных видео устройств:

$ v4l2-ctl --list-devices
USB 2.0 camera: USB 2.0 camera (usb-0000:00:1a.0-1.1):
        /dev/video0

Можно настроить вещание одновременно с нескольких web-камер и ограничение только по вычислительной мощности рабочей станции с которой мы будем передавать видео. Для стрима видео и аудио с нескольких устройств просто запускайте несколько экземпляров VLC.

Для сетевой трансляции вам надо запустить vlc (в безголовом режиме) со следующими параметрами:

$ cvlc v4l2:///dev/video0 --input-slave '#alsa://hw:1,0' --sout '#transcode{vcodec=h264,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{sdp=rtsp://:8554/video}'

Мы настроили отдачу трафика в формате RTSP и для его просмотра понадобится второй VLC-player строка подключения к видео-потоку будет выглядеть следующим образом:

rtsp://10.1.1.106:8554/video

Естественно, что 10.1.1.106 вы замените на адрес вашего сервера или компьютера откуда ведется вещание.