Запуск вещания 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
Консоль сервера: =========== 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 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:
<html>
<title>TEST</title>
<body>
<div id='content'>
<table align='left' style='border:none'>
<tr><td style = 'width:320px;border:none'>
<div style = 'width:320px;'>
<OBJECT ID="mediaPlayer" width="320" height="309"
CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"
CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715"
STANDBY="Loading Microsoft Windows Media Player components..."
TYPE="application/x-oleobject">
<PARAM NAME="url" VALUE="mms://10.10.16.71:8080">
<PARAM NAME="autoStart" VALUE="1">
<PARAM NAME="bgColor" VALUE="#000000">
<PARAM NAME="showControls" VALUE="true">
<PARAM NAME="TransparentatStart" VALUE="false">
<PARAM NAME="AnimationatStart" VALUE="true">
<PARAM NAME="StretchToFit" VALUE="true">
<EMBED src="mms://10.10.16.71:8080"
type="application/x-mplayer2"
name="MediaPlayer"
autostart="1" showcontrols="1" showstatusbar="1" autorewind="1"
width="320" height="309"></EMBED>
</OBJECT>
</div>
</td><td valign=top style='padding-left:30px;border:none;text-align:left'>
<a class='text' href='mms://10.10.16.71:8080'>Открыть в МедиаПлеер</a>
</td></tr>
</table>
</div>
</div>
</body>
</html>
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.
Теперь 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
Ссылки :