Транскодинг мультикаста.

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
DJ Kill
мл. сержант
Сообщения: 83
Зарегистрирован: 2007-12-04 16:51:34

Транскодинг мультикаста.

Непрочитанное сообщение DJ Kill » 2010-11-23 19:14:06

Задача стоить в таком виде:
Принять мультикаст-поток (IP:port, один из многих), транскодировать его и отдать для просмотра через Public Internet

Мультикаст где-то 3 мегабита в 264-ом кодеке.
Отдать надо в любом виде 320 на 200 картинку.

Раньше для этого использовалась Linux машина и VLC на ней. Сейчас она умерла.

Есть FreeBSD 8.1 с поднятым на нём igmpproxy в качестве мультикаст роутера. Эта машина раздаёт мультикаст во все сети которые у нас есть.

Есть идея взять прямо на ней поток и с неё же и отдавать.

Поставил с боем VLC.
Пытаюсь её пускать как на линуксовой машине - безрезультатно:

Код: Выделить всё

vlc -I dummy -vvv --audio-track 1 udp://@230.1.4.7:1234 --sout #transcode{venc=x264,vcodec=h264,vb=256,width=320,height=240,acodec=mp4a,ab=32,deinterlace}:duplicate{dst=std{access=mmsh,mux=asfh,dst=192.168.100.25:3001}}
Запускается и ждёт. Ничего не происходит.

Вообще, какое решение для этого наиболее подходящее? Начитался и про mencoder и про ddmpeg server и про vlc?
Как заставить всё это работать на самом мультикаст-роутер?
Последний раз редактировалось f_andrey 2010-11-23 20:24:28, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения. приводите полную диагностику, больше логов больше вероятности ответа, а не флуда

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

DJ Kill
мл. сержант
Сообщения: 83
Зарегистрирован: 2007-12-04 16:51:34

Re: Транскодинг мультикаста.

Непрочитанное сообщение DJ Kill » 2010-11-24 11:02:22

До кучи попробовал mencoder:

Код: Выделить всё

mencoder -ovc copy -oac copy -endpos 00:10:00 -o /home/TV-dumps/first.avi 'udp://230.1.5.4:1234'
Поиск в интернете показал что на amd64 архитектуре это у многих.

До кучи (спасибо модератору за напоминалку):

FreeBSD 8.1-RELEASE amd64
Весь софт последний из портов:
VLC media player 1.1.5 The Luggage (revision exported)
MEncoder SVN-r31746-snapshot-4.2.1 (C) 2000-2010 MPlayer Team

Логи? Даже не знаю что показать... Простыню, которую выдаёт VLC? Она неинформативна совсем, как мне кажется...

tyler56
сержант
Сообщения: 198
Зарегистрирован: 2009-06-03 18:10:15

Re: Транскодинг мультикаста.

Непрочитанное сообщение tyler56 » 2010-11-24 11:53:01

DJ Kill
Я пробовал мультикаст (mpeg2-ps) транскодить и отдавать в flv формате, а потом цеплять его флеш плеером на сайте на том же компе.
В принципе получилось но картинка прерывалась и vlc выдавал ошибку переполненного буфера.
Возможно ли конвертировать на ходу и отдавать.

В Вашем случае мне кажется нужно добавить маршрут
route add -net 224.0.0.0 -interface $iface

DJ Kill
мл. сержант
Сообщения: 83
Зарегистрирован: 2007-12-04 16:51:34

Re: Транскодинг мультикаста.

Непрочитанное сообщение DJ Kill » 2010-11-24 12:42:41

tyler56 писал(а):DJ Kill
Я пробовал мультикаст (mpeg2-ps) транскодить и отдавать в flv формате, а потом цеплять его флеш плеером на сайте на том же компе.
В принципе получилось но картинка прерывалась и vlc выдавал ошибку переполненного буфера.
Возможно ли конвертировать на ходу и отдавать.
Самое удивительное, что это всё работало... Пока я не убрал линукс-машину из офисного VLAN. Мультикаст у нас при этом во многих VLAN.
В Вашем случае мне кажется нужно добавить маршрут
route add -net 224.0.0.0 -interface $iface
Добавил. Не помогает.

DJ Kill
мл. сержант
Сообщения: 83
Зарегистрирован: 2007-12-04 16:51:34

Re: Транскодинг мультикаста.

Непрочитанное сообщение DJ Kill » 2010-11-24 12:53:42

Посмотрел дампом что там происходит:

Код: Выделить всё

IP 81.222.112.19 > 230.1.5.4: igmp v2 report 230.1.5.4
IP 81.222.112.19 > 224.0.0.2: igmp leave 230.1.5.4
IP 192.168.100.19 > 230.1.5.4: igmp query v2 [max resp time 1] [gaddr 230.1.5.4]
IP 192.168.100.19 > 230.1.5.4: igmp query v2 [max resp time 1] [gaddr 230.1.5.4]
IP 81.222.112.19 > 230.1.5.4: igmp v2 report 230.1.5.4
IP 192.168.100.19 > 224.0.0.1: igmp query v2
IP 81.222.112.19 > 224.0.0.2: igmp leave 230.1.5.4
IP 192.168.100.19 > 230.1.5.4: igmp query v2 [max resp time 1] [gaddr 230.1.5.4]
IP 192.168.100.19 > 230.1.5.4: igmp query v2 [max resp time 1] [gaddr 230.1.5.4]
Очень смущает что он пытается с внешнего интерфейса слать какой-то IGMP...

tyler56
сержант
Сообщения: 198
Зарегистрирован: 2009-06-03 18:10:15

Re: Транскодинг мультикаста.

Непрочитанное сообщение tyler56 » 2010-11-24 15:23:42

А что показывает netstat -rn и ifconfig

tyler56
сержант
Сообщения: 198
Зарегистрирован: 2009-06-03 18:10:15

Re: Транскодинг мультикаста.

Непрочитанное сообщение tyler56 » 2010-11-24 15:25:24

Сколько процессов vlc Вы запускали на линухе и какая загрузка процессора была.

DJ Kill
мл. сержант
Сообщения: 83
Зарегистрирован: 2007-12-04 16:51:34

Re: Транскодинг мультикаста.

Непрочитанное сообщение DJ Kill » 2010-11-24 16:16:33

tyler56 писал(а):А что показывает netstat -rn и ifconfig
Показывает что я идиот. :)
Но это я уже поправил. Огромное спасибо. :)

Итак, VLC отлично принимает поток.

Теперь осталось его транскодировать. Буду думать что и как.

При запуске строкой:

Код: Выделить всё

vlc -I dummy -vvv udp://@230.1.5.4:1234 --sout '#transcode{venc=x264,vcodec=h264,vb=256,width=320,height=240,acodec=mp4a,ab=32,deinterlace}:duplicate{dst=std{access=mmsh,mux=asfh,dst=192.168.100.19:3002}}'
Сказала что не может открыть mmsh поток.

При запуске через HTTP:

Код: Выделить всё

vlc -I dummy -vvv udp://@230.1.5.4:1234 --sout '#transcode{venc=x264,vcodec=h264,vb=256,width=320,height=240,acodec=mp4a,ab=32,deinterlace}:duplicate{dst=std{access=http,mux=asfh,dst=192.168.100.19:3002}}'
сказала что не может декодировать видео кодеком udef

Запускали 2 VLCхи. Два канала транскодировали. Нагрузка очень небольшая на машину была, при том что машина - пень 4 простенький.

tyler56
сержант
Сообщения: 198
Зарегистрирован: 2009-06-03 18:10:15

Re: Транскодинг мультикаста.

Непрочитанное сообщение tyler56 » 2010-11-24 16:33:54

А чем транскодировали на лине. Попробуйте ddmpeg-ом.

DJ Kill
мл. сержант
Сообщения: 83
Зарегистрирован: 2007-12-04 16:51:34

Re: Транскодинг мультикаста.

Непрочитанное сообщение DJ Kill » 2010-11-24 16:39:03

tyler56 писал(а):А чем транскодировали на лине. Попробуйте ddmpeg-ом.
Тем же VLC ровно с той же строкой запуска.
Под фряхой почему-то не ожило...

DJ Kill
мл. сержант
Сообщения: 83
Зарегистрирован: 2007-12-04 16:51:34

Re: Транскодинг мультикаста.

Непрочитанное сообщение DJ Kill » 2010-11-24 18:23:42

Попробовал сейчас все методы изложенные в HowTO:
http://www.videolan.org/doc/streaming-h ... l#id517332

В качестве input_stream использовал строку udp://@230.1.5.4:1234

Поток видно начинает приниматься.

Но подключиться к выходу этого потока не получается никаким методом.

tyler56
сержант
Сообщения: 198
Зарегистрирован: 2009-06-03 18:10:15

Re: Транскодинг мультикаста.

Непрочитанное сообщение tyler56 » 2010-11-24 18:48:55

А если без транскодинга?

DJ Kill
мл. сержант
Сообщения: 83
Зарегистрирован: 2007-12-04 16:51:34

Re: Транскодинг мультикаста.

Непрочитанное сообщение DJ Kill » 2010-11-24 23:15:57

tyler56 писал(а):А если без транскодинга?
Если без транскодинга, то какой-то поток вроде как есть. Но вместо нормальной картинки зелёное поле с дёргающимися квадратами.

DJ Kill
мл. сержант
Сообщения: 83
Зарегистрирован: 2007-12-04 16:51:34

Re: Транскодинг мультикаста.

Непрочитанное сообщение DJ Kill » 2010-11-25 14:04:20

Опытным путём установлено что если сначала поймать видео с положить его в файл mencoderом, а потом этот файл стримить VLC, то всё работает.

Вот теперь как бы сделать чтобы без файла обойтись и будет счастье. :)

То есть сначала:

Код: Выделить всё

mencoder udp://@230.1.5.4:1234 -vf scale -zoom -xy 512 -o title2.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4
Потом

Код: Выделить всё

vlc -I dummy -vvv title2.avi --sout '#transcode{venc=x264,vcodec=h264,vb=256,width=320,height=240,acodec=mp4a,ab=32,deinterlace}:duplicate{dst=std{access=mmsh,mux=asf,dst=192.168.100.19:3002}}'
И всё работает.

То есть отдельно приём потока, отдельно транскодинг и отдельно трансляция работает. А вот совместить не получается. :(

DJ Kill
мл. сержант
Сообщения: 83
Зарегистрирован: 2007-12-04 16:51:34

Re: Транскодинг мультикаста.

Непрочитанное сообщение DJ Kill » 2010-11-25 14:13:41

Добавлю: если самой VLC сохранить поток в файл то он тоже совершенно нечитабельный: зелёное поле с изредка двигающимися квадратами.

Код: Выделить всё

vlc -I dummy -vvv udp://@230.1.5.4:1234 --sout file/ps:stream.ts
То есть дело именно в том, как VLC понимает этот поток.

tyler56
сержант
Сообщения: 198
Зарегистрирован: 2009-06-03 18:10:15

Re: Транскодинг мультикаста.

Непрочитанное сообщение tyler56 » 2010-11-25 19:19:36

Насколько я понимаю vlc использует ddmpeg для кодирования и раскодирования потока. Возможно у тебя ddmpeg собран без каких-то опций. Попробуй пересобрать его.
Я сам не спец в vlc и тоже не отказался бы от консультации, но наверно таких не найти)

DJ Kill
мл. сержант
Сообщения: 83
Зарегистрирован: 2007-12-04 16:51:34

Re: Транскодинг мультикаста.

Непрочитанное сообщение DJ Kill » 2010-11-25 19:52:13

В общем, да. Как раз пересобрал VLC и уже минут 20 как смотрю на нормальную живую картинку.

Завтра причешу сервак вместе с вытаскиванимем из него всех опций которые нужны для работы мультикаст-роутинга (у нас он используется для рассовывания мультикаста из одного VLAN по куче других) и опций для VLC (у нас она нужна для того, чтобы клиенты worldwide контролировали качество контента) и готов буду оформить этот в статью. :)

tyler56
сержант
Сообщения: 198
Зарегистрирован: 2009-06-03 18:10:15

Re: Транскодинг мультикаста.

Непрочитанное сообщение tyler56 » 2010-11-26 19:17:14

Если не сложно не мог бы ты проверить на своем серваке конверирование в flv

Строка запуска примерно такая

Код: Выделить всё

vlc -vv udp://@230.1.5.4:1234 –-http-caching=10000 –-sout='#transcode{vcodec=FLV1,vb=1024}:std{access=http{mime=video/x-flv},dst=192.168.0.1:8080/stream.flv,mux=ffmpeg{mux=flv}}'
Интересно какая будет загрузка процессора и качество выходящего потока.

DJ Kill
мл. сержант
Сообщения: 83
Зарегистрирован: 2007-12-04 16:51:34

Re: Транскодинг мультикаста.

Непрочитанное сообщение DJ Kill » 2010-11-26 19:50:55

Не смог заставить его выплюнуть видео в FLV виде.
Надо разбираться что и как.
На данный момент всё работает, транскодинг работает. Два канала пережимаемые из MPEG2 TS (транспортный поток MPEG2 со спутника мультикастом через профессиональные кодеры) жмуться в 320 на 200 со звуком где-то на 10-15% загрузки проца на канал. С учётом того, что в железке процов 8-мь - хватит её на много.
Одновременно железка ещё мультикаст роутер и её постоянно опрашивают по SNMP. Больше на ней нет ничего. Всё работает. Очень ровно и стабильно.

DJ Kill
мл. сержант
Сообщения: 83
Зарегистрирован: 2007-12-04 16:51:34

Re: Транскодинг мультикаста.

Непрочитанное сообщение DJ Kill » 2010-11-26 19:57:43

Самое сложное в этом - поставить VLC так, чтобы оно втянуло все кодеки и при этом не втянуло на сервер X11.
Ключ WITHOUT_X11="YES" в make.conf и через setenv не помогает: многие видеобиблиотеки его всё равно тянут.
Но от них можно безболезнено отказаться.
Так же X11 почему-то тянет Pulse Audio Support. Но оно тоже не нужно.

Есть какая-то методика как из всех установленных портов получить опции, с которыми они собирались? Тогда смогу оформить статью. :)

tyler56
сержант
Сообщения: 198
Зарегистрирован: 2009-06-03 18:10:15

Re: Транскодинг мультикаста.

Непрочитанное сообщение tyler56 » 2010-11-26 21:02:15

Заходишь в каталог и делашь

Код: Выделить всё

make showconfig
или

Код: Выделить всё

make config

DJ Kill
мл. сержант
Сообщения: 83
Зарегистрирован: 2007-12-04 16:51:34

Re: Транскодинг мультикаста.

Непрочитанное сообщение DJ Kill » 2010-11-26 21:20:00

tyler56 писал(а):Заходишь в каталог и делашь

Код: Выделить всё

make showconfig
Оно. В понедельник тогда всё опишу. :)