Multicast и Unicast вещание с помощью VLC media player

Опубликовано admin в Пт, 29/05/2009 - 18:15

Статья взята с subnets.ru (_http://subnets.ru/blog/?p=12).

Запуск вещания VoD (Video on Demand (_http://subnets.ru/blog/?tag=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 (_http://subnets.ru/blog/?tag=multicast) вещание нескольких видео файлов на multicast IP-адреса 239.255.1.1 и 239.255.1.2

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

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

Если мы хотим зациклить проигрывание файлов до бесконечности “по кругу”:

> setup channel1 loop
> setup channel2 loop

На клиенте:
========

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

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

или
udp://@239.255.1.2 (что бы посмотреть видео из файла file_2.avi соответственно)


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 (_http://subnets.ru/blog/wp-content/uploads/2008/07/vlc.jpg)

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

Если вещание производится из консоли сервера (например сервер с OS FreeBSD (_http://subnets.ru/blog/?tag=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

Ссылки:

  • VideoLAN Streaming Howto (_http://www.videolan.org/doc/streaming-howto/en/)
  • Архивы VLC (_http://www.via.ecp.fr/via/ml/vlc/2006-01/list.html)
  • Форум VLC (_http://forum.videolan.org/)

Похожие статьи:

  • Теория протокола OSPF (_http://subnets.ru/blog/?p=569)
  • Агрегированный линк между Juniper M7i и Cisco Catalyst 3560G (_http://subnets.ru/blog/?p=286)
  • Cisco и Policy-based routing ( PBR ) (_http://subnets.ru/blog/?p=479)
  • FreeBSD как router или как заставить FreeBSD маршрутизировать пакеты из одной сети в другую (_http://subnets.ru/blog/?p=280)
  • Поднимаем BGP используя quagga на FreeBSD (_http://subnets.ru/blog/?p=19)
( categories: )