В связи с реорганизацией парка серверов пришлось переносить DVB-S карты и весь софт на другую машину.
Железо перекинуть не проблема (только не забывайте выключать оборудование перед отключением антенного фидера), а вот вспомнить что и как настроить в софте, оказалось проблематично.
Решил теперь все такие настройки организовывать в мануалы и оставлять на блоге - и себе и другим :)
Приступим.
Многое взято из статьи http://omsk.lug.ru/SatTVLinux
Однако в моей ситуации все сразу не получилось.
1. Ищем информацию по нашему спутнику.
Мне помог http://www.lyngsat.com
Спутник HotBird.
2. Составляем список каналов и записываем в /etc/channels.conf
У меня пока только:
Vesti:11034:v:0:27500:1020:1030:1710
3. Проверяем наличие сигнала:
#szap -c /etc/channels.conf -x -n 1 -a 2
-a определяет номер адаптера, у меня в машине их 3, выбираю третий.
4. Транслируем каналы мультикастом:
Много экспериментировал с трансляцией всего транспондера, но так и не получилось.
#/usr/local/bin/dvbstream -c 2 -i 224.1.2.10 -r 1234 -f 11034 -p V -s 27500 -ps -v 1020 -a 1030
Вот тут я погряз надолго. Стример запускался, но тут же завершал свою работу.
Чего я только не делал и ядро скачал самое новое, и потом откатывался обратно, но все так и не получалось...
Решение пришло неожиданно.
Оказалось что у машины нет DNS-записи типа А! - вот из-за чего падал dvbstream!!!
[Дополнение]
Необходимость в DNS-записи типа А была вызвана только тем, что в /etc/hosts небыло записи с настоящим именем машины. После добавления/изменения записи в данном файле необходимость в DNS вообще отпадает.
Так что, господа, незабываем сделать запись или лезем в исходники и фиксим...
На этот момент трансляция настроена и наша машина выплевывает в сеть видео-поток.
Если не предпринять дополнительных мер, то трафик будет распространятся по всей локальной сети постоянно и нагружать все компьютеры сети.
В нашей сети используются интелектуальные коммутаторы hp 2824 и hp 2510-24.
Эти коммутаторы имеют возможности контроллирования распространения multicast-трафика - IGMP .
Описание этого процесса достойно отдельной статьи, либо прочтения руководства по настройке коммутатора ;)
22 комментария:
Я делал всю ретрансляцию видео и аудио в сеть при помощи vlc. Весьма неплохо получилось.
Олег, так ты бы рассказал как это сделал, ато так не интересно.. ;)
Постараюсь рассказзать чуть позже. Правда никогда не описывал своих действий поэтому может стремновато получиться
Бред, а не статья!
С помощью vlc вещаю 40 каналов тв и
30 каналов радио. Вот строка запуска радио каналов:
vlc -d -vvv --color --ttl 12 --ts-es-id-pid --programs=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,53,54,59,60,61,63 dvb: \
--dvb-frequency=11515000 --dvb-srate=7300000 --dvb-voltage=13 \
--sout-standard-access=http --sout-standard-mux=raw --sout \
'#duplicate{dst=std{dst=10.0.1.4:9000/City_fm},select="program=1" \
,dst=std{dst=10.0.1.4:9002},select="program=2" \
,dst=std{dst=10.0.1.4:9003},select="program=3" \
,dst=std{dst=10.0.1.4:9000/Kino_Fm},select="program=4" \
,dst=std{dst=10.0.1.4:9000/Shanson},select="program=5" \
,dst=std{dst=10.0.1.4:9000/10708},select="program=6" \
,dst=std{dst=10.0.1.4:9000/BusinessFM},select="program=7" \
,dst=std{dst=10.0.1.4:9000/Energia},select="program=8" \
,dst=std{dst=10.0.1.4:9000/Mayak},select="program=9" \
,dst=std{dst=10.0.1.4:9000/Radio_Alla},select="program=10" \
,dst=std{dst=10.0.1.4:9011},select="program=11" \
,dst=std{dst=10.0.1.4:9000/AvtoRadio},select="program=12" \
,dst=std{dst=10.0.1.4:9000/DOROGNOE},select="program=13" \
,dst=std{dst=10.0.1.4:9000/Radio_Vanya},select="program=14" \
,dst=std{dst=10.0.1.4:9000/Record},select="program=15" \
,dst=std{dst=10.0.1.4:9000/Piter_RS},select="program=16" \
,dst=std{dst=10.0.1.4:9000/Shanson},select="program=17" \
,dst=std{dst=10.0.1.4:9018},select="program=18" \
,dst=std{dst=10.0.1.4:9019},select="program=19" \
,dst=std{dst=10.0.1.4:9000/Relax_FM},select="program=20" \
,dst=std{dst=10.0.1.4:9000/Mayak-24},select="program=53" \
,dst=std{dst=10.0.1.4:9054},select="program=54" \
,dst=std{dst=10.0.1.4:9059},select="program=59" \
,dst=std{dst=10.0.1.4:9060},select="program=60" \
,dst=std{dst=10.0.1.4:9061},select="program=61" \
,dst=std{dst=10.0.1.4:9063},select="program=63" \
}'
:)
Милый, Аноним, скажи пожалуйста, чем отличается мультикастинг от юникастинга?
А то что ты изобразил рбочий пример использования vlc, Большое Тебе спасибо!
Олег, как настроить vlc для передачи видео по сети под Windows. ProgDVB у меня передает только по юникасту и все, дальше ступор. заранее благодарен
НИкогда не настраивал под виндой но там вроде все проще. Файл->открыть повидимому выбираешь источник видео и аудио. Потом внизу есть "расширенные параметры" вещать/сохранить. И там есть кнопочка настройки. Выбираешь что как надо куда направлять, как сжимать и т.д. Насчет ProgDVB там по моему есть проблема с невозможностью указания произвольного мультикаст адреса. Хотя может я и ошибаюсь.
На самом деле всё проще особенно с виндой кому интересно стукните в аську чем смогу помагу так как писать особо лень .Могу выложить для простоты действий мануалы в видио формате на тотже лититбит либо депозит .Вещаю без проблем весь транспондер без проблем .Особенно мультикастом.
Что касается уникаста то вещать получиться только вот нагрузка на машину будет неимоверно возрастать при подключении пользователей.Так как мультикаст пинает поток в сеть всем и подключение к машине вещающего не производиться что делат нагрузку ток на сеть и маршрутизацию а уникаст если по русски обьяснить пинает поток определённому пользователю (в нашем случае тому кто подключился )
ася--483765357 Wetal
В случае unicast нагрузка не только на машину, но еще и на сеть - вмето одного потока всем, будет идти один и тот же поток, но например 10ти пользователям - мультикаст то не зря придумали!
А нагрузка в случае multicast будет как раз таки наименьшей - нормальные коммутаторы сами разрулят куда пиннать поток, а куда нет, на основе мультикаст-запроса пользователей...
Очень хотелось бы понять, откуда в списке программ они вообще берутся. Перерыл всё на свете, нет комментариев. Вот это: ,dst=std{dst=10.0.1.4:9002},select="program=2" \
,dst=std{dst=10.0.1.4:9003},select="program=3" \ ,
откуда взялось? Каждый канал на своём PID'е. Откуда VLC их вытаскивает? Или, как вы ему их скармливаете?
да это пид канала. и находятся они с помощью утилиты scan из комплекта linux-dvb-apps
Это понятно, как он находится. Как его подпихнуть vlc в строке?
select="program=2"
как то вот так. Подставив его в качестве параметра program
Ну, вы даёте...
Я уже сам разобрался, а то тут по разным зонам Интернета стоит вой: большинство не понимает, как настраиваться на конкретный канал. И у разработчиков об этом ни гу-гу.
Вот эти вот цифири после "programs":
--programs=1,2,3,4 ,-
есть ничто иное, как SID канала (см. lyngsat.com).
Не могу удержаться, чтобы не расставить все точки над i.
Угрохал кучу времени на vlc, чтобы в конце-концов понять, что продукт до невозможности сырой в серверной части. Начинаешь отлаживать, и сыпятся ошибки на уровне qt4... Для чего, спрашивается, серверу все эти графические навороты? (Они, видишь ли, vls более не поддерживают...)
А вот связка dvbstream в качестве сервера и vlc в качестве клиента даёт прекрасный результат.
И нет никаких проблем с броадкастингом, именно это получается лучше всего. Нужно всего-навсего после скорости потока поставить число 8192. И vlc будет вытаскивать все каналы из принятого потока. Разумеется, карта должна быть бюджетной.
И я не понял, при чём тут "...у машины нет DNS-записи типа А"? Используется физическая адресация, какой-такой DNS?
У меня всё на Ubuntu 8.10.
Я писал:
"
Решение пришло неожиданно.
Оказалось что у машины нет DNS-записи типа А! - вот из-за чего падал dvbstream!!!
[Дополнение]
Необходимость в DNS-записи типа А была вызвана только тем, что в /etc/hosts небыло записи с настоящим именем машины. После добавления/изменения записи в данном файле необходимость в DNS вообще отпадает."
Именно так и было. Я ставил на Слаке 12.
Если интересно попробуй проверь у себя на убунте ;)
Мне лично dvbstream нравится за юникс-way подход - нет не нужных рюшечек :)
Вопрос немного не в тему.
Запуск dvbstream как осуществляете? Непосредственно по загрузке? Или из web-интерфейса?
Я запускал из скрипта при старте системы. Нашим требованиям это удовлетворяло.
Скрипт конечно можно и из веб-страниц запускать :)
Вот из веб-то как раз имеются трудности... :-(
Что-то блокирует запуск dvbstream из-под браузера.
И вообще dvbstream настолько странно написана, что даже вывод нельзя переадресовать в файл.
Yourij B, вывод в файл точно переадресовывается - я сам когда начинал dvbstream настраивать сначала поток в файл выводил.
А если вас интересует вывод ошибки в файл, так это другой пайп, почитайте доку по шелу.
Не знаю как вы запуск из браузера делаете, но могу предположить что скрипту запускающему dvbstream просто прав не хватает...
Все так говорят, "не хватает прав...". Но проблема сложнее. Можно разрешить dvbstream запускать кому угодно, можно www-data назначить права root - всё равно не запускается.
У меня предположение, что dvbstream запускает в свою очередь какое-то приложение. И вот тут-то прав и не хватает...
... остается открыть исходники и посмотреть.
Отправить комментарий