Настройка DVBlast 

DVBlast - это программулина для работы с неким мультикастовым "Транспортным потоком" приходящим, например, со спутника, с транспондера, где в этом самом "Транспортном потоке" сидит куча телевизионных каналов. Нам нужно эту кучу, с помощью этой программы, разобрать на отдельные ТВ-каналы и каждому такому ТВ-каналу дать свой личный IP-адрес и порт. Нужно это все для того, чтобы потом передавать эти самые ТВ-каналы через мультикаст трафик дальше, клиентам, через некую компьютерную сеть. Возникает вопрос. А почему бы не передавать сразу весь "Транспортный поток"? Ведь у него тоже есть свой личный IP-адрес и порт, которые можно ввести в какой-либо плейер. Ответ очевиден. Чтобы экономить полосу пропускания нашей локальной сети (трафик). То есть, если у нас программа работает и все получилось с настройкой DVBlast, то по нашей локалке поползет мультикаст трафик только того канала, который в данный момент смотрит клиент, а не все каналы скопом. Собственно в этом и заключается весь смысл программы DVBlast. Она ничего не декодирует, не кодирует, она просто тупо разделяет "Транспортный поток" на его отдельные составляющие и присваивает этим составляющим, как я написал выше, свой личный индивидуальный IP-адрес и порт.

Собственно, данный мануал я накатал для себя лично. На тот случай, если что-то забуду. Ну, и на случай, может это еще кому-то пригодиться. А то у меня вышло так, что когда я впервые столкнулся с этим "дэвэбластом", то нужной инфы не смог для себя найти НИГДЕ! Вообще нигде! Вот потому и решил записать это дело. И для себя любимого и для кого-то еще.

Все примеры в интернете - "строки для запуска" dvblast, основаны на том, что в компе стоит уже некая железка, с которой мы будем брать "Транспортный поток" с телеканалами. И потому мы в этой самой "строке запуска" должны писать разные там частоты транспондеров и прочую лобуду. Мне это не было нужно. Мне наш Главный инженер кинул в компьютер линк (витую пару) со своей головной станции и сказал, что программой dvblast нужно из этого линка вытащить "Транспорный поток", разобрать его на отдельные составляющие и через вторую сетевую карту компьютера передать эти отельные составляющие дальше в сеть, клиентам.

Итак, что было проделано для того, чтобы вся эта муть заработала:

01. Берем любой комп. Можно не очень мощный, старенького двух-ядерника вполне должно хватить. Но в нашем случае это был барский полноценный проц i3, оперативки 4 гига. И две гигабитные сетевые карты. Одна родная на материнке, другая внешняя, установленная в уже устаревший системный слот PCI.

02. На комп ставим Alt Linux Simply DeskTop v6.0.1 (64bit), буквально по этой ссылке скачанный:
ftp://ftp.altlinux.ru/pub/distributions/ALTLinux/p6/iso/simply/altlinux-6.0.1-simply-x86_64-ru-install-dvd5.iso

03. Сразу обновляем нашу новенькую ОС. Она типа, сама это предложит, как только почует интернет на одной из наших сетевых карт.

04. В линуксе, из родного репозитория ALT-Linux, ставим пакет dvblast. Если в репозитории не нашлось dvblast-а, который там просто ОБЯЗАН быть, то это значит, что вы не подключены к инету, или у вас закомментированы ссылки на репозитории ALT-Linux. Как это поправить написано ниже, в "Примечании". Когда поставим пакет с dvblast, не нужно искать его в виде иконки на рабочем столе или в Меню. Там его не будет. Это консольная утилита. Проверить, поставилась они или нет, можно в Терминале, просто дав команду dvblast. Программа запустится и немного покажет, как с ней управляться.

05. В линуксе, из родного репозитория ALT-Linux, ставим пакет vlc. Это "VLC media player", которым мы, собственно, будем контролировать то, что у нас получилось. "VLC media player" - это полноценный графический плейер. Обязан появится в Меню. Ищите его там.

06. После установки "VLC media player" его нужно ОБЯЗАТЕЛЬНО проверить на работоспособность. Тупо запускаем его и открываем им любой видеофайл. Если файл не проигрывается, (как случилось у меня любимого), то лезем в личное меню "VLC media player" - "Инструменты", "Настройки", "Показывать настройки" - Все, "Видео", "Модули вывода", Выбираем "Вывод через X11 (XCB). Это в моем случае. В вашем случае будет что-то другое или вообще не потребуется ничего делать.

07. Бежим к Главному инженеру и берем у него данные по его "Транспортному потоку". А именно, IP-адрес и порт. Если он вам их не скажет, то посылаем его в лес, просим выпить йаду и убиться ап стену, если таковая найдется в лесу. В любом случае, без этих данных, ничего у нас не получится. Он их вам должен сказать. По сути, IP-адрес и порт "Транспортному потока" - это и есть наш "источник", который мы потом, в дальнейшем, будем разбирать на составляющие.

08. Залезаем в файл /etc/net/sysctl.conf и правим строку:
net.ipv4.conf.default.rp_filter=0
То есть на конце ставим ноль. Сохраняемся. Перегружаемся.
Аналог этой строки можно сделать временной (работающей до перезагрузки) командой:
sysctl -w net.ipv4.conf.eth0.rp_filter=0
или
sysctl -w net.ipv4.conf.eth1.rp_filter=0
или
sysctl -w net.ipv4.conf.default.rp_filter=0
По мануалам с интернета эта фишка поясняется так:
а) Это фильтр обратного пути (когда пакет приходит с одного интерфейса, а уходит на другой). По умолчанию он включен, то есть никуда ничего не поползет.
б) Если это маршрутизатор, то нужно разрешать форвардинг пакетов.
в) Включаем защиту от IP спуфинга (подмена адресов), и проверку маршрута от источника.
г) Включаем маршрутизацию.

09. С правами админа залезаем в каталог /etc/rc.d и создаем там новый файл "rc.local" командой:
echo > rc.local
или
vi rc.local
или
> rc.local
или
в просто коммандере "mc", запущенном с правами админа, жмем Shift+F4

Делаем этот файл "исполняемым" командой:
chmod +x rc.local
Пишем в файл эту строку:
sudo ip route add 224.224.200.0/24 dev eth0
Типа добавляем маршрут для нашего "Транспортного потока". Или если по чайниковски, то говорим, с какой сетевой карты и из какой подсети наш dvblast должен слушать "Транспортный поток". В этом же файле, следующей строкой, добавляем команду:
sudo ip route add 224.244.244.0/24 dev eth1
Тем самым мы говорим на какую сетевую карту и в какую подсеть мы начнем передавать наш будущий мальтикаст, полученный с помощью программы dvblast. Если короче, то принимаем поток одной сетевой картой и из одной подсети (224.224.200.0), а передаем в другую сетевую карту и в другую подсеть (224.244.244.0). Или наоборот. Типа, принимаем "Транспортный поток" сетевушкой Eth0, а передаем в Eth1.

(Команда: sudo ip route del 224.244.244.0/24 dev eth1 это для удаления маршрута)

10. Перегружаемся. (Чет не верю я в программные перезагрузки сетевых интерфейсов. Много раз это просто тупо не срабатывало.)

ВНИМАНИЕ!!! После ввода второй команды:
sudo ip route add 224.244.244.0/24 dev eth1
сетевой интерфейс "eth1", куда мы будем передавать уже сформированные разделенные телеканалы, НУЖНО ОБЯЗАТЕЛЬНО куда-то воткнуть. Можно даже просто в любой коммутатор. То есть, порт сетевой карты eth1 не должен остаться висеть на воздухе. Его нужно ОБЯЗАТЕЛЬНО поднять физически в состояние UP, иначе ни фига у нас работать не будет даже на самом компе, где будет работать dvblast.

11. Втыкаем линк (витую пару), который нам дал Главный инженер, в сетевую карту Eth0. То есть в ту, которой наш dvblast будет слушать "Транспортный поток".

12. Запускаем "VLC media player", тыкаемся в Медиа/Открыть URLи пишем буквально следующую строку:
udp://@224.224.200.4:1234
Это адрес и порт "Транспортного потока". Вам их скажет ваш Главный инженер. Естественно, адрес и порт в вашем случае будут другие.

13. Линуксовый "VLC media player" должен будет начать показывать какой-то произвольный телевизионный канал.

14. Тыкаем в меню "Воспроизведение/Программа" и в распахнувшемся списке мы должны будем увидеть все программы находящиеся в нашем "Транспортом потоке". И сможем все их просматривать. Если все они работают, то с "Транспортным потоком" никаких проблем нет и можно смело двигаться дальше.

15. Закрываем "VLC media player".

16. Запускаем в терминале dvblast такой командной строкой:
dvblast -i1 -D 224.224.200.4:1234/udp

17. В Терминале мы должны будем увидеть что-то похожее на:
debug: * number=1 pid=200
debug: * number=2 pid=620
debug: * number=3 pid=610
debug: * number=4 pid=800
debug: * number=5 pid=500
debug: * number=6 pid=310
debug: * number=7 pid=410
debug: * number=8 pid=912
debug: * number=9 pid=908
debug: * number=10 pid=909
debug: * number=11 pid=261
debug: * number=12 pid=1029
debug: * number=13 pid=517
debug: * number=14 pid=773

Предпоследние цифры в этой таблице - это "number". Уникальные номера каналов в пределах текущего "Транспортного потока". Они могут быть какими угодно. Даже четырехзначными. Главное, что они, повторюсь, уникальны в пределах одного "Транспортного потока". Именно они нам и нужны. Останавливаем dvblast нажав клавиши Ctrl+C. Терминал не закрываем. Мы будем смотреть в его окне, то что он нам выдал в следующем шаге.

18. Ломимся в каталог /home/slaviksg и создаем там текстовый файл dvblast.cfg командой:
echo > dvblast.cfg
или
vi dvblast.cfg
или
> dvblast.cfg
или
в просто в коммандере "mc" жмем Shift+F4 и записываем в этот файл строки такого вида:
#Programma-01
224.244.244.101:12345/udp 1 1
#Programma-02
224.244.244.102:12345/udp 1 2
#Programma-03
224.244.244.103:12345/udp 1 3
#Programma-04
224.244.244.104:12345/udp 1 4
#Programma-05
224.244.244.105:12345/udp 1 5
#Programma-06
224.244.244.106:12345/udp 1 6
#Programma-07
224.244.244.107:12345/udp 1 7
#Programma-08
224.244.244.108:12345/udp 1 8
#Programma-09
224.244.244.109:12345/udp 1 9
#Programma-10
224.244.244.110:12345/udp 1 10
#Programma-11
224.244.244.111:12345/udp 1 11
#Programma-12
224.244.244.112:12345/udp 1 12
#Programma-13
224.244.244.113:12345/udp 1 13
#Programma-14
224.244.244.114:12345/udp 1 14

Собственно, это и есть ключевой момент управления программой dvblast. Теперь она разложит наш "Транспортный поток" на четырнадцать разных потоков, каждый из которых будет содержать в себе только один ТВ-канал и иметь свой уникальный, назначенный нами лично, IP-адрес и порт. Цифры на конце строк - это и есть номера/идентификаторы каналов, которые мы подсмотрим в нашем, незакрытом, Терминале. Повторюсь, цифры этим могут быть совершенно различные. Даже четырехзначные. Повторяющаяся цифра один - это, типа, разрешаем транслировать данный канал или нет. "/udp" - это значит, что передавать будет в UDP, а не в RTP. Хочу обратить внимание, что входной/выходной мультикаст-потоки НУЖНО засунуть в разные подсети. То есть, если Главный инженер дал вам источник "Транспортного потока" из подсети 224.224.200.0, то передавать, разделенный на телеканалы "Транспортный поток", следует уже в другую подсеть. Например, как мы написали выше, в подсеть - 224.244.244.0. На этих двух разных подсетях и основан данный мануал. Ваши подсети. конечно, будет совершенно другие. Только не забываем, что IP-адреса должны "Мультикастовыми", то есть они должны юзаться из диапазона адресов с 224.0.0.0 до 239.255.255.255. ИНАЧЕ НИЧЕГО У ВАС РАБОТАТЬ НЕ БУДЕТ!!!

18. Запускаем в терминале dvblast такой командной строкой:
dvblast -i1 -D 224.224.200.4:1234/udp -c dvblast.cfg

19. В терминале появится куча инфы. Где проскочат строчки со словом "new". Ровно 14 таких слов. Типа, это значит, что dvblast заработал... Если кучи инфы в Терминале вы не увидите, то это значит, что что-то не так. Ищите, где закралась ошибка.

20. Запускаем "VLC media player". Тыкаем в Медиа/Открыть URLи пишем буквально следующие строки:
udp://@224.244.244.101:12345
udp://@224.244.244.102:12345
...
или
...
udp://@224.244.244.113:12345
udp://@224.244.244.114:12345
В общем, перебираем по порядку все IP-адреса. Все 14 телепрограмм должны в плейере работать.

21. Последний штрих... Делаем автозапуск dvblast при старе Линукса. Снова залезаем в наш созданный ранее самодельный файл /etc/rc.d/rc.local и прописываем туда строку запуска dvblast таким образом:
dvblast -i1 -D 224.224.200.4:1234/udp -c /home/slaviksg/dvblast.cfg
Обратите внимание, что путь к конфигурационному файлу dvblast.cfg НУЖНО указывать полный. Это здесь нужно сделать ОБЯЗАТЕЛЬНО!!!

!!!ВАЖНО!!!
Если используется AltLinux Server, то наши dvblast - ы нужно запускать в фоновом режиме. Запуск программы нужно делать с ключом "&". Иначе:
1. Мы не сможем запустить больше одной проги одновременно.
2. Если прога запустится из автостарта (при загрузке компа) с помощью файла rc.local, то мы не сможем остановить dvblast. Никак!
3. Остановить процесс работы программы возможно будет сделать только подключившись к компьютеру удаленно через SSH.
Короче, наш итоговый файл rc.local должен выглядеть следующим образом:
sudo ip route add 224.224.200.0/24 dev eth0
sudo ip route add 224.244.244.0/24 dev eth1
dvblast -i1 -D 224.224.200.4:1234/udp -c /home/slaviksg/dvblast4.cfg &
dvblast -i1 -D 224.224.200.5:1234/udp -c /home/slaviksg/dvblast5.cfg &
dvblast -i1 -D 224.224.200.6:1234/udp -c /home/slaviksg/dvblast6.cfg &
dvblast -i1 -D 224.224.200.7:1234/udp -c /home/slaviksg/dvblast7.cfg &
dvblast -i1 -D 224.224.200.8:1234/udp -c /home/slaviksg/dvblast8.cfg &
-------------------------------------------

Примечание тем, кто ставит dvblast на серверный Alt Linux:

Возможно, по умолчанию, ссылки на репозитории будут в файле конфигурации закомментированы. Поэтому apt-get работать не будет. Лезем в файл:
/etc/apt/sources.list.d/alt.list
и убираем комментарии, как минимум с двух строк, заканчивающихся на:
x86_64 classic
и
noarch classic
Вводим в терминнале команду apt-get.
Перегружаемся.
Тем самым мы скажем нашему Линуксу, где находятся его родные репозитории.

Напоминаю, что для графического Алт-линукса в окне "Synaptic" жмем кнопку "Получить сведения", иначе нужные пакеты не появятся.

И еще. В серверном Линуксе, в файле rc.local не нужно писать sudo. Строка должна выглядеть так:
ip route add 224.224.200.0/24 dev eth0

-------------------------------------------

Итак, подытожим!

Команда для ручного запуска dvblast будет такой:
dvblast -i1 -D 224.224.200.4:1234/udp -c dvblast.cfg

Команды, которые должны быть прописаны в файлы rc.local должны выглядеть так. (Где полный путь к файлу dvblast4.cfg ОБЯЗАТЕЛЕН)
sudo ip route add 224.224.200.0/24 dev eth0
sudo ip route add 224.244.244.0/24 dev eth1
dvblast -i1 -D 224.224.200.4:1234/udp -c /home/slaviksg/dvblast4.cfg &
dvblast -i1 -D 224.224.200.5:1234/udp -c /home/slaviksg/dvblast5.cfg &
dvblast -i1 -D 224.224.200.6:1234/udp -c /home/slaviksg/dvblast6.cfg &
dvblast -i1 -D 224.224.200.7:1234/udp -c /home/slaviksg/dvblast7.cfg &
dvblast -i1 -D 224.224.200.8:1234/udp -c /home/slaviksg/dvblast8.cfg

Конфиги файлов программы dvblast должны быть, примерно, такими:
225.224.224.101:12345/udp 1 1
225.224.224.102:12345/udp 1 2
225.224.224.103:12345/udp 1 3
225.224.224.104:12345/udp 1 4
225.224.224.105:12345/udp 1 5
225.224.224.106:12345/udp 1 6
225.224.224.107:12345/udp 1 7
225.224.224.108:12345/udp 1 8
225.224.224.109:12345/udp 1 9
225.224.224.110:12345/udp 1 10
225.224.224.111:12345/udp 1 11
225.224.224.112:12345/udp 1 12
225.224.224.113:12345/udp 1 13
225.224.224.114:12345/udp 1 14

Собственно, больше, вроде, никаких изменений в Линуксе делать не нужно.

Удачи!

Отзыв об этой статье можете оставить в моей Гостевой книге. :)

Или можно обсудить на форуме тут

Последнее обновление странички:

Дата:     05 февраля 2014 г.
Время:  17:09