Основным источником телевизионных каналов в цифровом качестве на сегодняшний день является прием со спутников по технологии DVB-S. Данный способ выделяется относительной простотой запуска и разнообразием мультимедийного контента на спутниках [1]. В данной статье рассмотрена настройка приема спутниковых каналов при помощи NetUP DVB-IP стримера на базе ОС Linux.
Сканирование диапазона и поиск доступных каналов
Для сканирования диапазона и получения всех доступных каналов необходимо использовать утлиту dvbscan из пакета dvb-apps [2]. Входной формат файла:
S 12320000 V 27500000 3/4
где во второй колонке указана частота несущей транспондера. Третья колонка указывает на поляризацию: V-вертикальная, H-горизонтальная. Четвертая колонка указывает символьную скорость.
Для того что бы просканировать весь диапазон необходимо подготовить файл, в котором будут указаны все частоты с шагом в 1 МГц. Для этого создадим файл gen_scan.pl (perl-скрипт) следующего содержания:
for ($x = 12100; $x < 12490; $x++){
$freq = $x."000";
printf("S $freq V 27500000 3/4\n");
};
В этом скрипте значения 12100 и 12490 обозначают границы диапазона в мегагерцах. Запуск скрипта осуществляется командой:
perl gen_scan.pl > scan.in
В результате будет создан файл scan.ini следующего содержания:
...
S 12448000 V 27500000 3/4
S 12449000 V 27500000 3/4
S 12450000 V 27500000 3/4
S 12451000 V 27500000 3/4
S 12452000 V 27500000 3/4
S 12453000 V 27500000 3/4
...
Этот файл будет использован как входной для утилиты dvbscan. Эту утилиту необходимо запустить командой:
dvbscan scan.in > scan.out
в результате работы этой утилиты будет создан файл scan.out с указанием найденных каналов. Пример содержимого файла:
...
MTV Russia:12240:v:0:27500:322:404:10303
Relax FM:12241:v:0:27500:0:427:10327
MTV Russia:12242:v:0:27500:322:404:10303
Relax FM:12242:v:0:27500:0:427:10327
...
как видно каналы могут повторяться. Для очистки лишних записей воспользуемся скриптом parse_scan.pl:
open(IN, "-");
@data = ;
close(IN);
%chan = ();
%freq = ();
foreach (@data){
# UNOSAT:12100:v:0:27500:3200:3201:713
if($_ =~ m/(.+):(.+):(.+):(.+):(.+):(.+):(.+):(.+)/){
my $qnt = $chan{$1};
$qnt++;
$chan{$1} = $qnt;
my $tmp_name = $1."_".$qnt;
$freq{$tmp_name} = $_;
};
};
foreach (@data){
# UNOSAT:12100:v:0:27500:3200:3201:713
if($_ =~ m/(.+):(.+):(.+):(.+):(.+):(.+):(.+):(.+)/){
my $count = int($chan{$1}/2);
if($count < 1){
$count = 1;
};
my $tmp_name = $1."_".$count;
$ffreq{$1} = $freq{$tmp_name};
};
};
foreach $k (keys (%chan)){
print("$ffreq{$k}");
};
Запуск необходимо произвести командой:
cat scan.out | perl parse_scan.pl
В результате на экран будут выведены все найденные каналы с указанием частот и PID'ов. Полученные значения можно использовать для создания секции с каналами в конфигурационном файле NetUP DVB-IP cтримера.
Конфигурирование NetUP DVB-IP стримера
Конфигурационный файл /netup/streamer/etc/streamdec.conf содержит следующие основные параметры:
# номер DVB-S адаптера в системе. 0 - первый адаптер
adapter=0
# частота несущей транспондера, на которую будет производиться настройка тюнера
freq=12245
# символьная скорость
sr=27500
# поляризация. 0 - вертикальная (18V), 1 - горизонтальная (13V)
pol=1
# настройка параметров конвертера (LNB)
lnb_low_val=9750000
lnb_high_val=10600000
lnb_switch_val=11700000
# настройки каналов. Каждая строка обозначает один канал
# формат строки:
# apid:vpid:channel:multicast_ip:multicast_port:ca_ip:ca_port:ca_login:ca_password
# где:
# apid - PID аудио потока
# vpid - PID видео потока
# channel - идентификатор ТВ канала
# multicast_ip - широковещательный IP-адрес, на который будет осуществляться вещание
# multicast_port - UDP порт, на который будет осуществляться вещание
channel=412:326:10307:224.200.200.215:1234:none:0:none:none
channel=418:328:10308:224.200.200.216:1234:none:0:none:none
По умолчанию указаны настройки для универсального типа конвертера. В случае если у вас другие параметры конвертера необходимо произвести соответствующие изменения в конфигурационном файле. В случае если указаны несоответсвующие вашему типу значения возможен пропорциональный сдвиг частот. В этом случае необходимо вводить корректные значения либо произвести сканирование всего диапазона как описано выше для определения абсолютных значений частот.
Для примера возьмем универсальный конвертер IDLP-40TCIRCL (фото 1).
Фото 1. Универсальный конвертер IDLP-40TCIRCL
Спецификация на данный конвертер доступна по адресу:
http://www.doebis.de/sites/lnbs/lnbs_datenpdfs/inverto_idlp_40_tcircl.pdf [3].
В спецификации на данный конвертер указаны следующие параметры:
|
Input Frequency (GHz)
|
10.7-11.7 GHz, 11.7-12.75 GHz
|
|
LO Freq
|
9.75 GHz/10.6 GHz
|
Данные значения необходимо использовать при модифицировании парметров lnb_* конфигурационного файла NetUP DVB-IP стримера.
Проконтролировать наличие потоков можно, выполнив на стримере команду:
trafshow -ni eth0 port 1234
Вывод будет содержать таблицу текущих широковещательных потоков, с указанием битрейта и переданных байт:
From Address To Address Proto Bytes CPS
==================================================================================
10.1.11.10..32795 224.200.200.202..1234 udp 8537028 375494
10.1.11.10..32788 224.200.200.212..1234 udp 7952044 407992
10.1.11.10..32790 224.200.200.209..1234 udp 7094228 279341
10.1.11.10..32787 224.200.200.213..1234 udp 7043440 351231
10.1.11.10..32784 224.200.200.210..1234 udp 7008084 280157
10.1.11.10..32782 224.200.200.215..1234 udp 6508896 314706
10.1.11.10..32785 224.200.200.207..1234 udp 5925792 231584
10.1.11.10..32794 224.200.200.200..1234 udp 5906572 200676
10.1.11.10..32793 224.200.200.211..1234 udp 6047448 326328
10.1.11.10..32796 224.200.200.205..1234 udp 5881424 306071
10.1.11.10..32783 224.200.200.216..1234 udp 5758480 393428
10.1.11.10..32798 224.200.200.201..1234 udp 5570160 321016
10.1.11.10..32797 224.200.200.204..1234 udp 5365592 284411
10.1.11.10..32791 224.200.200.217..1234 udp 5195216 207687
10.1.11.10..32786 224.200.200.206..1234 udp 5297696 296824
10.1.11.10..32799 224.200.200.203..1234 udp 4779076 203542
10.1.11.10..32792 224.200.200.214..1234 udp 3279980 161183
10.1.11.10..32789 224.200.200.208..1234 udp 3144896 131500
10.1.11.10..32800 224.200.200.250..1234 udp 512616 22896
10.1.11.10..32801 224.200.200.251..1234 udp 364532 28590
(eth2) 100217 kb/total 4057 pkts/sec 5250733 bytes/sec Page 1/1
Как видно из этой распечатки, стример постоянно передает в сеть 20 потоков (18 телевизионных каналов и 2 радио станции).
Ссылки на внешние источники
- Каталог спутников http://www.lyngsat.com/
- Сайт проекта linuxtv в интернете http://www.linuxtv.org/
- Спецификация на универсальный конвертер IDLP-40TCIRCL http://www.doebis.de/sites/lnbs/lnbs_datenpdfs/inverto_idlp_40_tcircl.pdf
Обсудить эту статью на форуме
Все права защищены (c) 2001-2008 NetUP (www.netup.tv)
Перепечатка материалов разрешается только с предварительного разрешения
компании NetUP (info@netup.tv)