Skip to content

Захват спутникового видео

Для захвата видео со спутника используется так называемое IRD (Integrated Receiver-Decoder) оборудование и головные станции. Flussonic Media Server умеет принимать видео по IP протоколам с любых IRD устройств и систем. Также можно захватывать видео с плат DVB-S и др. сразу во Flussonic.

Рассмотрим принципы захвата видео со спутников и вопросы выбора оборудования для этой цели.

Содержание:

Долгота

Телевизионные спутники висят на геостационарной орбите Земли над экватором. Их положение над Землей постоянное, поэтому спутники идентифицируются долготой, над которой они висят. Так, например, спутник ABS 2 вращается вокруг Земли, постоянно находясь над 75° восточной долготы.

Геостационарное размещение делает очень простым монтаж спутниковых тарелок: достаточно направить на нужную точку и не нужно поворачивать тарелку.

Поскольку спутник находится над конкретной долготой, то, как правило. разные спутники используются для вещания определенного набора каналов. Например, спутник Appstar-7 76.5°E наполнен индийскими каналами, а спутник Galaxy-17 91.0°W больше используется для вещания каналов для США.

Важно отметить, что у некоторых спутников есть несколько лучей, т.е. зон максимального приёма. Каналы в лучах могут отличаться. Например, один и тот же спутник может на Россию вещать один набор каналов, а на Таиланд другой.

Настройка ресивера

С одного спутника в одном луче уходит множество мультиплексоров. Мультиплексор — это один цифровой канал, для приёма которого надо настроить карту захвата на определенную частоту и поляризацию.

Т.е. с одного спутника одновременно вещается множество частот в нескольких поляризациях.

Поляризация бывает правой/левой или горизонтальной/вертикальной. Бытовые спутниковые антенны (точнее головки этих антенн или конвертеры) умеют принимать сразу обе поляризации на один выходящий кабель, но делают это плохо. Профессиональные конвертеры принимают все поляризации, но на разные выходы.

Такое разделение обусловлено тем, что для переключения приёма поляризации плата захвата подает напряжение 13 или 18 вольт. Ниже таблица соответствия поляризации и напряжения:

Напряжение (В) 13-14   17-18 
Линейная поляризация вертикальная  горизонтальная
Круговая поляризация правая левая

В некоторых ресиверах указывается напряжение, в некоторых указывается поляризация. По сути всё сводится к подаче напряжения.

Если простым сплиттером соединить две платы захвата и на одной подать 18 вольт, а на другой 13, то вторая не получит сигнал.

Некоторые ресиверы умеют отключать напряжение. В этом случае они должны быть сплиттером соединены с другим ресивером/картой захвата, который всё-таки подает напряжение.

Диапазоны частот со спутника разделяются условно на верхний и нижний диапазон. Граница проходит примерно на 11700 МГц. При захвате частот ниже 11700 обычно выставляется частота гетеродина, она же LNB Frequency в 9750 МГц. При захвате частот выше 11700 настраивается частота гетеродина в 10600 МГц

После того, как правильно скоммутировали провода, не напутав с напряжением, настроили нужную частоту на приёмнике и частоту гетеродина и приёмник автоматически выбрал FEC (количество битов для контроля ошибки) и модуляцию (QPSK, 8PSK и т.п.), то ресивер начинает получать битовый поток, т.е. мультиплексор.

Мультиплексор представляет из себя MPEG-TS поток и позволяет в один поток упаковывать много разных телеканалов с разными языковыми дорожками и субтитрами. Бытовой спутниковый приёмник позволяет забрать только один канал из мультиплексора, но профессиональные приёмники и DVB PCI платы захвата позволяют снимать все каналы с мультиплексора.

Ниже будет подробнее описана структура MPEG-TS потока в мультиплексоре.

Дескремблинг

Большинство каналов на спутнике вещаются зашифрованными. Шифрование используется для управления доступа к каналам различных пользователей: кто оплатил следующий месяц, тот и смотрит каналы.

Процедура расшифрования спутникового канала называется дескремблингом, а сам шифрованный канал называют скремблированным.

Механизм управления доступом к спутниковым телеканалам называется Conditional Access (CA), в русской терминологии используется термин «условный доступ».

На сегодняшний день используются различные схемы шифрования, но в основном все современные схемы работают примерно следующим образом:

  • абонент получает карту доступа (похожа на большую, необрезанную SIM-карту с таким же чипом);
  • на карте доступа есть приватный ключ;
  • раз в месяц меняется ключ пакета;
  • через спутник рассылается для каждого абонента ключ пакета, шифрованный публичным ключом карты;
  • карта доступа запоминает ключ пакета;
  • раз в минуту на каждом канале меняется ключ потока, который шифрован ключом пакета;
  • если пользователю пришел ключ пакета и он смог его расшифровать, то он может получить доступ к каналу.

У этой схемы есть вариации и усложнения, но концептуально схема именно такая. Если не заплатить денег спутниковому оператору, то в конце месяца он не разошлет обновленный ключ и карта не сможет расшифровывать.

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

Когда обычный абонент покупает спутниковую тарелку для дома, он получает карту доступа и бытовой спутниковый приёмник, который имеет чип для дескремблирования одного канала по той схеме шифрования, которая выбрана у этого оператора. Условно говоря, приёмник для НТВ+ не подойдет к Континент-ТВ.

Оператор связи не может использовать 200 бытовых приёмников чисто технически, поэтому используются профессиональные приёмники, которые снимают не по одному каналу с мультиплексора, а все каналы. Однако официальный метод дескремблирования, который предлагают операторы связи, подразумевает использование специальных CA модулей. Это плата, похожая на PCMCIA модуль, в который втыкается карта доступа.

CA модуль самостоятельно дескремблирует каналы. Для этого он забирает каналы с головной станции, дескремблирует и отдает обратно.

Проблема в том, что даже для профессионального CA модуля дескремблирование 8 каналов — это предельная нагрузка. Учитывая, что на многих мультиплексорах сегодня бывает до 30 каналов, получается, что один и тот же мультиплексор надо захватывать через сплиттер несколько раз, используя дорогостоящие карты захвата или головные станции.

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

Выбор оборудования

Традиционный способ захвата спутникового эфира — использование так называемых головных станций.

Головная станция — это специализированный спутниковый приёмник, умеющий захватывать больше одного канала (до сотен каналов).

Более дорогие головные станции, такие как WISI Compact Headend, предлагают более плотную компоновку по сравнению с недорогими станциями:

Вместо 1-2 мультиплексоров в 1U корпусе можно захватывать вплоть до 24. Правда дескремблировать их все не получится, потому что в этом случае количество мультиплексоров сократится до 12 (нужно место под CI модули), а профессиональная головная станция не может дескремблировать больше 8-10 каналов с одного мультиплексора, потому что это по большому счёту дорогущий, но слабый компьютер.

Альтернативный вариант — использование компьютера для захвата со спутника.

Платы захвата

В обычный PC помещается до 7 подобных плат (главное подобрать материнскую плату). Разумнее всего брать либо с 4 выходами, либо с 2 но с CI модулем.

При покупке подобных плат очень важно свериться с поддержкой их в Linux на сайте проекта LinuxTV, кому в конце концов может понадобиться плата захвата, которая поддерживается только Windows?

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

При построении головной станции можно выбрать отдельное полностью аппаратное решение либо решение, построенное на х86 платформе.

Аппаратные решения отличаются большей ценой и несколько меньшей гибкостью. Для настройки таких решений, как правило, используется веб-интерфейс, что удобно, но может замедлить решение разных проблем. Взамен вендоры таких решений гарантируют стабильную емкость, длительную непрерывную работу и превосходную поддержку.

Программные решения, которые вы будете использовать с платами захвата под PC, в свою очередь обладают непревзойденной гибкостью в настройке и работе. Настройки можно задавать через конфигурационные файлы, а Linux предоставляет более широкие возможности для отладки проблем, чем закрытые аппаратные решения.

Захватывать видео с плат DVB, ATSC, ISDB можно и при помощи Flussonic Media Server.

Захват напрямую с плат DVB, ATSC, ISDB

Вы можете захватывать видео с плат DVB, ATSC, ISDB сразу во Flussonic. Для этого добавьте параметры платы в директиве dvb_card и задайте источник через схему mpts-dvb://.

Пример:

dvb_card a0 {
    system dvbs2;
    adapter 1;
    frontend 3;
    frequency 195028615;
    symbol_rate 29500;
    polarization v;
    modulation qam256;
    disabled;
    comment "13E high vertical";
}
stream channel5 {
  input mpts-dvb://a0?program=1713;
}

Здесь:

  • system (atsc|dvbs2|dvbt2|dvbt|isdbt) — тип адаптера. Процесс настройки аналогичен для различных стандартов. См. также пример с платой TBS ISDB-T Quad.
  • frontend — номер frontend на плате.
  • frequency — несущая частота для данной программы в Гц.
  • symbol_rate — символьная скорость мультиплексора.
  • polarization — поляризация для данного канала.
  • modulation — тип модуляции.
  • disabled — устройство не работает.
  • program — программа (телеканал).

Note

Типов адаптера поддерживается больше, но не все они еще протестированы и поэтому нет гарантии, что захват будет работать. Полный список возможных значений параметра system см. в схеме

Настройка захвата с DVB карты в UI

Все карты отображаются в списке в Media > DVB cards. Для каждой добавленной и включенной карты зеленый индикатор сверху показывает уровень сигнала. По ссылке Programs можно посмотреть структуру потока и выбрать программы для вещания в конкретных потоках.

DVB options

Чтобы добавить карту DVB, перейдите в Media > DVB cards и нажмите Add DVB card. Заполните поля:

  • Name — имя DVB карты. По умолчанию новой карте присваивается имя newDVBCardN, где N — порядковый номер (начиная с 1). Вы можете изменить имя карты.
  • Adapter — номер адаптера. Номера адаптеров видны в /dev/dvb/adapterN.
  • System — тип адаптера. Помимо DVB поддерживаются разные системы, их настройка похожа.
  • Frequency — несущая частота для данного канала в мегагерцах.
  • Polarization — поляризация для данного канала.
  • Symbol rate — символьная скорость мультиплексора.

Чтобы раскрыть расширенные опции, кликните по стрелке справа в строке с основными опциями.

  • Frontend — номер фронтенда на плате. У адаптера может быть 1-N фронтендов, но чаще всего он один и по умолчанию его номер 0.
  • Enabled — использовать эту DVB карту.

Остальные расширенные опции DVB карты:

  • Code rate HP — скорость кода потока с высоким приоритетом.
  • Code rate LP — скорость кода потока с низким приоритетом.
  • Guard interval — режим вставки защитного интервала, т.е. отступа между передачами данных, который не дает им смешиваться.
  • Rolloff — коэффициент избирательности, в %. Используется для оценки полосы пропускания, совместно с символьной скоростью.
  • Pilot — включение, отключение или автоматическое определение контрольных сигналов.
  • Modulation — способ модуляции DVB-C.
  • Hierarchy — констелляция для иерархической передачи.
  • Transmission mode — режим передачи DVB.
  • Bandwidth — полоса пропускания, в Гц.
  • Plp stream id — идентификатор канала PLP; если задан, то перед декодированием MPEG-TS осуществляется распаковка DVB-T2 MI.
  • Hw — тип устройства для карты адаптера.
  • Device — номер модулятора в адаптере.
  • Serial — серийный номер карты.
  • Int freq — опорная частота, в МГц.
  • Compensate time drift PPM — максимальное компенсирующее смещение внутреннего времени источника, округленное до 6 знаков после запятой.
  • Port — номер порта.
  • Attenuator — снижение уровня сигнала.
  • Interleave — использовать перемежение битов в битовом потоке, чтобы минимизировать искажения при передаче данных.
  • Gain — усиление выходного сигнала до указанного значения в дБ.
  • Input bitrate — битрейт на входе, в Мбит/с.
  • Video device — видео-устройство для захвата видео с карт Stream Labs SDI/ASI. Это путь к файлу устройства, созданному Video4Linux на диске.
  • High band — используется ли высокий диапазон частот.
  • Comment — любой текстовый комментарий.

Теперь нужно добавить поток с источником вида mpts-dvb://a0 program=<NUMBER>. Вы можете сделать это вручную, выбрав Media > Streams > Add, или автоматически на странице Programs (смотрите описание ниже).

Просмотр структуры MPTS и добавление потоков

Теперь вы можете просмотреть структуру и служебную информацию захваченного с DVB карты MPTS и добавить поток для конкретной программы на вашем Flussonic.

Чтобы просмотреть структуру MPTS, перейдите в Media > DVB cards и нажмите ссылку Programs рядом с зеленым индикатором. Вы увидите таблицу, в которой перечислены все программы с информацией о PID (сколько видео-, аудио- и текстовых треков содержит та или иная программа).

DVB options

Просмотр информации о треках

Чтобы посмотреть подробную информацию о треках, содержащихся в программе, нажмите значок информации в столбце PIDs. Для каждого трека вы увидите его номер, PID, разрешение, кодек и битрейт.

DVB options

Добавление потока для программы

Чтобы создать поток для конкретной программы, нажмите кнопку Add для этой программы. Flussonic автоматически создаст соответствующий поток. Источник потока будет выглядеть следующим образом: mpts-dvb://a0 program=<NUMBER>.

Имя потока будет соответствовать сервисному имени программы, например, Euronews_Russian. Если для программы не указано сервисное имя, имя потока будет сгенерировано из имени DVB карты и идентификатора программы, например, a0_790.

Просмотр информации о сигнале

Для каждой программы можно посмотреть статистическую информацию о захваченном сигнале. Для этого нажмите значок информации рядом с зеленым индикатором.

DVB options

Вы можете посмотреть следующие параметры статистики:

  • ber — процент битов с ошибками от общего числа переданных битов (bit error rate).
  • has_carrier — в сигнале обнаружена несущая частота.
  • has_lock — DVB сигнал успешно зафиксирован.
  • has_signal — поверх обычного уровня шума обнаружен сигнал.
  • has_sync — обнаружены байты синхронизации.
  • has_viterbi — DVB сигнал зафиксирован на стадии декодера Viterbi.
  • snr — соотношение "сигнал-шум" в процентах.
  • snr_raw — соотношение "сигнал-шум" в исходном 16-битном формате.
  • strength — уровень сигнала в процентах.
  • strength_raw — уровень сигнала в исходном 16-битном формате.

Note

Значения параметров сигнала могут различаться в зависимости от производителя устройства и драйвера DVB-карты.

Передача потока с DVB-карты без обработки

Flussonic может принимать и передавать поток с DVB-карты «как есть», без перепаковки. Для этого применяется URL вида

tshttp://ADMIN:PASSWORD@FLUSSONIC_IP/flussonic/api/dvbts/[DEVICE_ID]

Пример:

dvb_card a0 {
    system dvbs2;
    adapter 1;
    frontend 3;
    frequency 195028615;
    symbol_rate 29500;
    polarization v;
    modulation qam256;
    disabled;
    comment "13E high vertical";
}
stream STREAM_NAME {
  input tshttp://ADMIN:PASSWORD@FLUSSONIC_IP/flussonic/api/dvbts/a0 program=123;
}

Фиксация номеров устройств для DVB карт

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

Чтобы избежать такой ситуации, зафиксируйте номера DVB карт, создав правило udev.

Для этого сначала запустите следующую команду, чтобы посмотреть параметры DVB карт:

udevadm info -a -n /dev/dvb/adapter0/frontend0

   looking at device '/class/dvb/dvb0.frontend0':
    KERNEL=="dvb0.frontend0"
    SUBSYSTEM=="dvb"
    DRIVER==""

   looking at parent device '/devices/pci0000:00/0000:00:1e.0/0000:02:00.0':
    KERNELS=="0000:02:00.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="b2c2_flexcop_pci"
    ATTRS{vendor}=="0x13d0"
    ATTRS{device}=="0x2103"
    ATTRS{subsystem_vendor}=="0x13d0"
    ATTRS{subsystem_device}=="0x2103"
    ATTRS{class}=="0x028000"
    ...

Затем создайте файл /etc/udev/rules.d/10-local.rules со следующим содержимым (фиксация по параметру KERNELS):

SUBSYSTEM=="dvb", KERNELS=="0000:02:00.0", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter0/%%s $${K#*.}'", NAME="%c", GROUP="video"
SUBSYSTEM=="dvb", KERNELS=="0000:02:02.0", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter1/%%s $${K#*.}'", NAME="%c", GROUP="video"

Захват с плат TBS Quad ISDB-T

Для захвата с платы Quad ISDB-T в файл конфигурации добавьте следующие параметры платы в директиве dvb_card, заменив значения номера адаптера и частоты на свои.

Затем задайте источник через схему mpts-dvb://.

Пример:

dvb_card a0 {
  system isdbt;
  adapter 5;
  frequency 546000000;
}
stream channel5 {
  input mpts-dvb://a0?program=1713;
}

Здесь:

  • system — тип адаптера (isdbt)
  • frequency — несущая частота в Герцах
  • program — телеканал

Получение каналов

Как было выше сказано, мультиплексор — это MPEG-TS поток. Транспортный контейнер MPEG-TS позволяет в один поток байт упаковывать много одновременно идущих потоков, предоставляя стандартизованный способ для выбора нужного под-потока.

Один телеканал называется программой (program). MPEG-TS, в котором идет только одна программа, называется SPTS — single program transport stream. Со спутника идет MPEG-TS, в котором много программ, это называется MPTS — multiple program transport stream.

MPTS удобен для передачи в носителях типа спутника или кабеля, когда полоса фиксированная и для выравнивания трафика поток даже приходится добивать ненужными байтами. SPTS удобен при передаче по IP, когда весь огромный мультиплексор клиенту не нужен, а нужен только один канал.

Процесс смешивания нескольких SPTS в MPTS называется мультиплексированием и как правило производится перед подачей потока на спутник или кабель. Процесс расщепления MPTS на несколько SPTS называется демультиплексированием и происходит при приёме со спутника.

По IP MPTS передают очень редко, например для транзита со спутника в кабель.

Сам MPEG-TS представляет из себя последовательность пакетов по 188 байт. Первый байт всегда 0x47 и используется для статистически достоверной синхронизации в потоке.

В следующих трех байтах закодирован 13-битный номер потока внутри MPEG-TS. Этот номер называется Pid и поэтому в профессиональном жаргоне зачастую под-поток так же называют пидом по его номеру.

Есть несколько стандартных номеров Pid, которые зарезервированы под служебные нужды. Условно говоря, это все номера до 32.

В потоке с Pid 0 идет информация о существующих программах в этом MPEG-TS потоке. Эта информация упакована в PAT — program adaptation table. PAT — это один из вариантов PSI информации. PSI или PSI таблицы — это метаинформация, идущая в MPEG-TS потоке и необходимая либо для получения доступа к аудию/видео, либо для получения дополнительной информации, как например, расписание передач или информация о каналах на других мультиплексорах.

Важно понимать, что все PSI таблицы проектировались для случаев, когда ресивер не получает никаких данных, кроме данных со спутника. Поэтому большинство PSI таблиц для IPTV OTT сервиса бессмысленны: расписание там зачастую нерабочее, а информация о других мультиплексорах вообще бессмысленна.

В PAT записано, какие номера программ (pnr, program number, service id) идут на каких пидах. На этих пидах будут идти не аудио/видео потоки, а PMT — program mapping table. В PMT уже будет написано, на каком пиде идет видео поток и на каких пидах идут разные языки аудио.

При настройке демультиплексирования можно настраивать по пидам, а можно по pnr. Второе более предпочтительно, потому что пиды на спутнике могут перенастроиться без предупреждения, а номера программ как правило не меняются.

Итоги

Процесс захвата видео со спутника выглядит следующим образом:

  • администратор настраивает захват на головной станции или программе с нужного входа, на нужной частоте и с нужной поляризацией;
  • поток демультиплексируется из MPTS в несколько разных SPTS, согласно настройкам (скорее всего по pnr);
  • несколько отдельных SPTS вещаются в сеть по мультикасту.

В классическом IPTV на этом всё и заканчивается, клиенты получают свой мультикаст через каскад роутеров, общающихся по PIM протоколу, но в нашем случае всё только начинается, потому что дальше результирующее видео надо транскодировать