Multicast и Unicast вещание с помощью VLC media player (vlc multicast and unicast stream)

Запуск вещания VoD (Video on Demand) — Видео по запросу

Для примера возьмем сервер с unicast IP-адресом 172.16.10.14, вещаем с порта 5554

Консоль сервера: =========== 1. vlc --ttl 12 --color -I telnet --telnet-password 123 --rtsp-host 172.16.10.14:5554

2. telnet localhost 4212

3. > new Test vod enabled > setup Test input /path/to/file.avi На клиенте: ======= запускаем vlc проигрыватель нажимаем «Файл» ->«Открыть URL» в строке MRL пишем: rtsp://172.16.10.14:5554/Test жмем «ОК» — смотрим фильм «по запросу»


Multicast вещание нескольких видео файлов на multicast IP-адреса 239.255.1.1 и 239.255.1.2

Вещаем по RTP, консоль сервера: =========== 1. vlc --ttl 12 --color -I telnet --telnet-password 123

2. telnet localhost 4212

3. > new channel1 broadcast enabled > setup channel1 input /path/to/file_1.avi > setup channel1 output #rtp{mux=ts,dst=239.255.1.1,sap,name="Channel1"} > new channel2 broadcast enabled > setup channel2 input /path/to/file_2.avi > setup channel2 output #rtp{mux=ts,dst=239.255.1.2,sap,name="Channel2"} > control channel1 play > control channel2 play

Вещаем по UDP, консоль сервера: ===========

1. vlc --ttl 12 --color -I telnet --telnet-password 123

2. telnet localhost 4212

3. > new channel1 broadcast enabled > setup channel1 input /path/to/file_1.avi > setup channel1 output #standard{access=udp{ttl=12},mux=ts{tsid=22,pid-video=23,pid-audio=24,pid-pmt=25,use-key-frames},dst=239.255.1.1,sap,name="Channel1"} > control channel1 playПо второму каналу точно так же, не буду повторяться.

Если мы хотим зациклить проигрывание файлов до бесконечности «по кругу» то добавим: > setup channel1 loop > setup channel2 loop

На клиенте: ======== запускаем vlc проигрыватель нажимаем «Инструменты» -> «Настройки», там, в нижнем левом углу жмем в «Показывать настройки» на «Все», затем раскрываем «Вывод потока», а там ищем «Модули вывода», в поле «Интерфейс вывода IPv4 multicast» пишем IP-адрес, который прописан на вашей сетевой карте ( смотрящей в сторону сервера вещающего поток), жмем «Сохранить»

Для просмотра потока по RTP:

После того как выполнили настройки: «Файл» ->«Открыть URL» в строке MRL пишем: udp://@239.255.1.1:5004 (что бы посмотреть видео из файла file_1.avi) или udp://@239.255.1.2:5004 (что бы посмотреть видео из файла file_2.avi соответственно)

Для просмотра потока по UDP: в строке MRL пишем: udp://@239.255.1.1 (что бы посмотреть видео из файла file_1.avi)

З.Ы.

Так же запустить вещание в один поток по UDP можно так:

vlc -vvv /path/to/file.avi —sout ‘#standard{access=udp{ttl=15},mux=ts{tsid=22,pid-video=23,pid-audio=24,pid-pmt=25,use-key-frames},dst=239.255.1.1}’ —random —loop —volume 100


VLC Unicast to HTTP

Вещаем поток в HTTP страницу, просмотр возможен как и на HTTP странице, так и отдельно с помощью плеера Windows Media Player.

Консоль сервера: =========== vlc -vvv /path/to/file.avi --sout '#transcode{vcodec=DIV3,vb=256,scale=1,acodec=mp3,ab=32,channels=2}:std{access=mmsh,mux=asfh,dst=:8080}'

На клиенте: ======== код страницы для отображения вещания + ссылка на запуск WMP:

TEST

10.10.16.71 — IP-адрес сервера, с которого вещается поток 8080 — порт куда вещается поток

Заливаем эту страницу на свой WWW сервер, заходим на нее http://адрес_WWW_сервера/mms_test.html и смотрим вышаемый поток.


VLC Multicast to Unicast

Принимаем поток по multicast, а отдаем по unicast

Консоль сервера: ===========

vlc --ttl 12 udp://@224.0.42.49:5000 --sout '#std{access=udp,mux=ts,dst=192.168.1.15:1234}'

224.0.42.49:5000 - адрес потока откуда берем multicast 192.168.1.15 - адрес клиента куда отправляем unicast

Будьте внимательны с указанием портов для потоков.

Если на сервере несколько сетевых карт и соответственно IP-адресов, то указать через какую карту брать поток можно прописав маршрут (роутинг) через IP-адрес сервера на нужной вам сет. карте, например на сервере одна из сет. карт это em0 с IP-адресом 192.168.1.1:

route add 224.0.42.49/32 192.168.1.1

Добавив маршрут сервер будет пытаться получить multicast поток через em0, что можно видеть с помощью tcpdump:

tcpdump -ni em0

09:24:34.475683 IP XX.XX.100.182.32857 > 224.0.42.49.5000: UDP, length 1316 09:24:34.478554 IP XX.XX.100.182.32857 > 224.0.42.49.5000: UDP, length 1316 09:24:34.481677 IP XX.XX.100.182.32857 > 224.0.42.49.5000: UDP, length 1316

Отправка unicast потока клиенту (192.168.1.15) будет выглядеть примерно так:

09:26:11.374433 IP 192.168.1.1.61320 > 192.168.1.15.1234: UDP, length 1316 09:26:11.376441 IP 192.168.1.1.61320 > 192.168.1.15.1234: UDP, length 1316 09:26:11.378381 IP 192.168.1.1.61320 > 192.168.1.15.1234: UDP, length 1316

На клиенте: ======= запускаем vlc проигрыватель нажимаем «Файл» ->«Открыть URL» в строке MRL пишем: udp://@192.168.1.15 жмем «ОК» — смотрим unicast поток отправляемый сервером

Сжимаем выходной поток:

vlc --ttl 12 -vvv udp://@224.0.42.49:5000 --sout '#transcode{vcodec=mp4v,acodec=mpga,vb=200,ab=128,deinterlace}:rtp{mux=ts,dst=192.168.1.15}'

«vb=» — Эта опция позволяет установить bitrate видио потока в kbit/s «ab» — TЭта опция позволяет установить bitrate аудио потока в kbit/s


VLC и несколько сетевых интерфейсов Вопрос:

У меня в компьютере несколько сетевых интерфейсов, как указать VLC чтобы multicast шел через нужный мне, например 192.168.1.15 ?

Ответ: Это можно сделать указав IP-адрес нужного вам сетевого интерфейса в настройках VLC.

vlc_ifaces

vlc_ifaces

Теперь IGMP запросы будут уходить с сетевого интерфейса с IP-адресом 192.168.1.15

Если вещание производится из консоли сервера (например сервер с OS FreeBSD) и в нем несколько сетевых интерфейсов, то указать через какой интерфейс пускать поток multicast (udp) можно прописав статический маршрут, например:

224.0.42.49 - адрес потока который собираемся вещать 192.168.1.15 - IP-адрес на одной из сетевых карт сервера

route add 224.0.42.49/32 192.168.1.15

Теперь поток multicast (udp) будет уходить с сетевого интрфейса с IP-адресом 192.168.1.15

You should also read:

Монтирование удаленной папки с помощью sshfs

Недавно возникла необходимость использовать удаленный сервер, чтобы удаленно работать там с проектами из svn. Доступ к серверу, только через ssh. Конечно работать с svn можно прям на удаленной машине, но вот с файлами мне проще работать на своей машине. Поэтому я и решил подключить себе нужную папку с удаленного сервера, как примонтированный диск, чтобы проводимые мною изменения сразу писались удаленно на сервер, без лишних, в дальнейшем, телодвижений.

Так как у меня, есть только подключение через ssh, поэтому для монтирования удаленной папки я использовал файловую системуSSHFS (Secure SHell FileSystem).