Что такое EPG? Содержание таблицы EIT

Добавлено 24 октября 2016 в 20:50

EPG – это сервис в телевидении, радио и других мультимедийных приложениях, отображающий информацию о транслируемом в настоящее время контенте. Пользователь может просматривать информацию о текущем или последующем контенте программы. Часто EPG базируется на выделенном для него промежуточном программном обеспечении ТВ приставок. EPG может различаться по технологии целевой доставки, реализованными возможностями, промежуточным программным обеспечением и требуемой пропускной способностью.

EPG электронный телегид на экране телевизора
Рисунок 1 – Электронный телегид (EPG) на экране телевизора

Простейшая реализация EPG без необходимости специального промежуточного программного обеспечения определяется стандартом DVB – EN 300 468. Стандарт определяет, какие данные EPG должны передаваться через таблицы информации о событиях EIT (Event Information Table). Эти таблицы мультиплексируются в транспортный поток MPEG-2 вместе с другими таблицами и сервисными данными. Механизмом доставки может быть спутниковая, кабельная или наземная сеть.

EIT генерируется независимо для каждого сервиса. Таблица для каждого сервиса подразделяется на подтаблицы, сегменты и секции. EIT всех сервисов совместно используют в транспортном потоке MPEG-2 одну и ту же полосу и идентификатор пакета (PID).

В стандарте EN 300 468 для EIT предусмотрен фиксированный PID 0x0012. Это единственная стандартизованная таблица, которая может передаваться скремблированной (зашифрованной).

По сути, существует две группы таблиц:

текущее/следующее событие (present/following)
Несет информацию о текущих событиях в эфире (present) и событиях, следующих по расписанию (following). Эти таблицы должны обновляться очень часто, чтобы зрители, переключаясь с какой-либо другой программы, могли довольно быстро получить доступ к информации о событиях на новой программе. Обычно периодичность повторения для этих таблиц составляет 2 секунды. Поэтому таблицы с информацией о текущих и следующих событиях для всех программ должны быть вставлены в транспортный поток, по меньшей мере, один раз в каждые 2 секунды.
расписание (schedule)
Несет информацию о контенте от текущего момента до 64 дней в будущем. Частота обновления этих таблиц может быть переменной. Некоторые руководства рекомендуют повторять таблицу расписания, по крайней мере, каждые 30 секунд. Хотя можно и чаще. Так как зрители в основном интересуются тем, что будет в следующие 24 часа, предлагается повторять таблицы расписаний для следующих 24 часов каждые 10 секунд.

EIT может относиться к событиям сервисов из текущего потока или из других потоков той же сети.

Всего получается четыре возможных разновидности, которые передаются с разными идентификаторами таблиц:

  • 0x4E - текущий поток, текущее и следующее события;
  • 0x4F - другой поток, текущее и следующее события;
  • 0x50-0x5F - текущий поток, расписание;
  • 0x60-0x6F - другой поток, расписание.

EIT является частью таблиц информации о конкретной программе (PSI) и сервисной информации (SI), определенных стандартами MPEG-2 и DVB. Другие важные таблицы из упомянутых стандартов – это PAT, PMT, NIT, SDT, CAT, TDT, TOT. За исключением таблицы даты и времени (TOT), эти таблицы более или менее статичны и не очень сложны в построении. Поэтому доступные на рынке DVB мультиплексоры обладают встроенными возможностями для создания и воспроизведения этих таблиц.

EIT, наоборот, основывается на динамических данных и должна обновляться очень часто. Для этой задачи используются отдельные устройства, называемые построители EPG (EPG Builder), генераторы EPG (EPG Generator), модули вставки EPG (EPG Inserter). Общая реализация системы построения транспортного потока DVB MPEG-2 показана на рисунке 2.

Мультиплексирование транспортного потока DVB-MPEG-2
Рисунок 2 – Мультиплексирование транспортного потока DVB-MPEG-2

Как правило, видео/аудио кодер и SPTS мультиплексор объединены в одном устройстве, называемом просто кодер или кодер сервиса. Часто эти кодеры не только кодируют ТВ программу, состоящую из видео и одного или нескольких аудиопотоков, но также добавляют и базовые таблицы PSI. Тем не менее, для объединения нескольких ТВ или радио сервисов требуется мультиплексор транспортного потока. При мультиплексировании нескольких SPTS или даже MPTS и вставке новых перестроенных таблиц создается новый транспортный поток. Опять же для генерирования информации EPG требуется внешний построитель EIT.

Как уже упоминалось выше, EPG содержит информацию о событиях. События (когда речь идет об EPG) – это базовые элементы программ, которые имеют определенные время начала и окончания, например, фильмы, ТВ сериалы, ток-шоу, игровые шоу и так далее. Для генерирования EPG информация об этих событиях должна быть собрана и загружена в какое-то локальное хранилище (базу данных) для дальнейшей обработки. Весь процесс построения EIT показан на рисунке 3.

Построение EIT из собранной информации
Рисунок 3 – Построение EIT из собранной информации

Каждое событие описывается несколькими обязательными элементами:

event_id
Уникальный идентификационный номер события.
start_time
Время начала события по всемирному координированному времени (UTC).
duration
Продолжительность события в секундах.
running_status
Текущий статус события, то есть идет, не идет, на паузе и т.д.
free_CA_mode
Показывает, скремблированы ли какие-либо компоненты сервиса, и управляются ли они системой условного доступа.

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

Наиболее часто используемые дескрипторы:

short_event_descriptor
Основной дескриптор событий. Он содержит название или заголовок события и короткое описание или подзаголовок. Каждое из этих полей может быть длиной до 255 символов.
extended_event_descriptor
Здесь мы можем найти подробные текстовые описания события. Вещателями часто называется синопсисом (краткий обзор). Это поле может быть длиной до 3984 символов.
parental_rating_descriptor
Информация, чтобы помочь родителям контролировать, контент с каким возрастным уровнем они позволяют смотреть своим детям. Это делается с помощью отображения индекса в соответствии с рейтинговой системой телевизионного контента. Так как рейтинг может различаться в разных странах, то индекс всегда должен ссылаться на страну, в которой он применяется. Для этого используется код страны ISO 3166. Страна определяется по трем символам в верхнем регистре, например, FRA (Франция), SVN (Словения), ITA (Италия) и так далее.
component_descriptor
Этот дескриптор дает информацию сервиса события, например, соотношение сторон изображения, системы сжатия, используемые для видео и аудио, доступные языки аудио, формат субтитров и т.д.
content_descriptor
Цель данного дескриптора – обеспечить информацию о жанровой классификации события. Стандарт определяет список используемых жанров. К одному событию может быть применено несколько жанров.

Дескрипторы с текстовыми полями (short_event_descriptor и extended_event_descriptor) должны ссылаться на язык, используемый в тексте. Это выполняется с помощью трех символов в нижнем регистре кода ISO 639-2, например, ger (немецкий), eng (английский), rus (русский) и т.д.

Разнообразие языков подразумевает необходимость обрабатывать различные кодировки, используемые для представления специальных символов в каждом языке. Широко используемая система Unicode UTF-8 кажется наиболее подходящей, но до сих пор существуют ТВ приставки и телевизоры, которые будут неправильно отображать символы в кодировке UTF-8. Поэтому, если возможно, должны использоваться альтернативные кодировки, например, ISO/IEC 8859-9 (западноевропейская), ISO/IEC 8859-2 (восточноевропейская), ISO/IEC 8859-5 (латиница/кириллица) и т.д.

Если кодировка не указана, то будет использоваться ISO/IEC 6937.

Объявление кодировки, используемой в текстовом поле, выполняется перед текстом кодом из от 1 до 3 символов, например, \x05 (ISO/IEC 8859-9), \0x10 \x00 \x02 (ISO/IEC 8859-2), \x15 (UTF-8) и так далее. Это должно быть сделано для каждого отдельного текстового поля.

Примеры таблиц EIT

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

------------------------------------------------------------
SECT-Packet: 00000001   PID: 18 (0x0012), Length: 87 (0x0057)
------------------------------------------------------------

PID:  18 (0x0012)  [= assigned for: DVB Event Information Table (EIT)]
Guess table from table id...
EIT-decoding....
Table_ID: 78 (0x4e)  [= Event Information Table (EIT) - actual transport stream, present/following]
section_syntax_indicator: 1 (0x01)
Section_length: 84 (0x0054)
Service_ID: 2106 (0x083a)  [=  --> refers to PMT program_number]
Version_number: 27 (0x1b)
current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 0 (0x00)
Last_Section_number: 1 (0x01)
Transport_stream_ID: 2001 (0x07d1)
Original_network_ID: 8564 (0x2174)  [= Irish Digital Terrestrial Television | Irish Telecommunications Regulator]
Segment_last_Section_number: 1 (0x01)
Last_table_id: 78 (0x4e)  [= Event Information Table (EIT) - actual transport stream, present/following]

    Event_ID: 58664 (0xe528)
    Start_time: 0xd550073000 [= 2008-05-22 07:30:00 (UTC)]
    Duration: 0x0003000 [=  00:30:00 (UTC)]
    Running_status: 4 (0x04)  [= running]
    Free_CA_mode: 1 (0x01)  [= streams [partially] CA controlled]
    Descriptors_loop_length: 57 (0x39)

            DVB-DescriptorTag: 77 (0x4d)  [= short_event_descriptor]
            Descriptor_length: 55 (0x37)
              ISO639_2_language_code:  eng
            event_name_length: 8 (0x08)
            event_name: "BBC News"  -- Charset: Latin alphabet
            text_length: 42 (0x2a)
            text_char: "All the latest news from around the world."  -- Charset: Latin alphabet

CRC: 3123843648 (0xba321240)
==========================================================

Так как расписания довольно большие, таблицы могут содержать по несколько секций. Обратите внимание на поля Section_number и Last_Section_number.

Идентификатор сервиса, к которому относится расписание, указан в поле Service_ID. В данном примере он равен 2106. С 7:30 утра UTC 22 мая в течение 30 минут по ТВ программе идёт передача "BBC News". Эта передача и идёт в данный момент (Running_status=4).

Вторая секция этой таблицы для того же сервиса 2106:

------------------------------------------------------------
SECT-Packet: 00000001   PID: 18 (0x0012), Length: 87 (0x0057)
------------------------------------------------------------

PID:  18 (0x0012)  [= assigned for: DVB Event Information Table (EIT)]
Guess table from table id...
EIT-decoding....
Table_ID: 78 (0x4e)  [= Event Information Table (EIT) - actual transport stream, present/following]
section_syntax_indicator: 1 (0x01)
Section_length: 84 (0x0054)
Service_ID: 2106 (0x083a)  [=  --> refers to PMT program_number]
Version_number: 27 (0x1b)
current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 1 (0x01)
Last_Section_number: 1 (0x01)
Transport_stream_ID: 2001 (0x07d1)
Original_network_ID: 8564 (0x2174)  [= Irish Digital Terrestrial Television | Irish Telecommunications Regulator]
Segment_last_Section_number: 1 (0x01)
Last_table_id: 78 (0x4e)  [= Event Information Table (EIT) - actual transport stream, present/following]

    Event_ID: 58665 (0xe529)
    Start_time: 0xd550080000 [= 2008-05-22 08:00:00 (UTC)]
    Duration: 0x0010000 [=  01:00:00 (UTC)]
    Running_status: 1 (0x01)  [= not running]
    Free_CA_mode: 1 (0x01)  [= streams [partially] CA controlled]
    Descriptors_loop_length: 57 (0x39)

            DVB-DescriptorTag: 77 (0x4d)  [= short_event_descriptor]
            Descriptor_length: 55 (0x37)
              ISO639_2_language_code:  eng
            event_name_length: 8 (0x08)
            event_name: "BBC News"  -- Charset: Latin alphabet
            text_length: 42 (0x2a)
            text_char: "All the latest news from around the world."  -- Charset: Latin alphabet

CRC: 3438977240 (0xccfaa0d8)
==========================================================

С 8 утра UTC в течение часа будет идти другая передача. Хоть и с тем же названием "BBC News". В настоящий момент она не передаётся (Running_status=1).

Пример краткого расписания сервиса из другого потока (Transport_stream_ID=3001), Table_ID=0x4F:

------------------------------------------------------------
SECT-Packet: 00000001   PID: 18 (0x0012), Length: 228 (0x00e4)
------------------------------------------------------------

PID:  18 (0x0012)  [= assigned for: DVB Event Information Table (EIT)]
Guess table from table id...
EIT-decoding....
Table_ID: 79 (0x4f)  [= Event Information Table (EIT) - other transport stream, present/following]
section_syntax_indicator: 1 (0x01)
Section_length: 225 (0x00e1)
Service_ID: 3102 (0x0c1e)  [=  --> refers to PMT program_number]
Version_number: 13 (0x0d)
current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 1 (0x01)
Last_Section_number: 1 (0x01)
Transport_stream_ID: 3001 (0x0bb9)
Original_network_ID: 8564 (0x2174)  [= Irish Digital Terrestrial Television | Irish Telecommunications Regulator]
Segment_last_Section_number: 1 (0x01)
Last_table_id: 79 (0x4f)  [= Event Information Table (EIT) - other transport stream, present/following]

    Event_ID: 40651 (0x9ecb)
    Start_time: 0xd550080000 [= 2008-05-22 08:00:00 (UTC)]
    Duration: 0x0003000 [=  00:30:00 (UTC)]
    Running_status: 1 (0x01)  [= not running]
    Free_CA_mode: 1 (0x01)  [= streams [partially] CA controlled]
    Descriptors_loop_length: 198 (0xc6)

            DVB-DescriptorTag: 77 (0x4d)  [= short_event_descriptor]
            Descriptor_length: 196 (0xc4)
              ISO639_2_language_code:  eng
            event_name_length: 19 (0x13)
            event_name: "Big Fight Countdown"  -- Charset: Latin alphabet
            text_length: 172 (0xac)
            text_char: "Preview of the big fight at the City of Manchester Stadium between Ricky Hatton and Juan Lazcano, as 'The Hitman' looks to bounce back from defeat against Floyd Mayweather."  -- Charset: Latin alphabet

CRC: 3542035171 (0xd31f2ae3)
==========================================================

Полное расписание от программы 2101 ("Channel 6") текущего потока, Table_ID=0x50. Полная таблица здесь не приводится, только одна секция (Section_number=120) из 249 (Last_Section_number=248, нумерация начинается с нуля):

------------------------------------------------------------
SECT-Packet: 00000001   PID: 18 (0x0012), Length: 406 (0x0196)
------------------------------------------------------------

PID:  18 (0x0012)  [= assigned for: DVB Event Information Table (EIT)]
Guess table from table id...
EIT-decoding....
Table_ID: 80 (0x50)  [= Event Information Table (EIT) - actual transport stream, schedule]
section_syntax_indicator: 1 (0x01)
Section_length: 403 (0x0193)
Service_ID: 2101 (0x0835)  [=  --> refers to PMT program_number]
Version_number: 30 (0x1e)
current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 120 (0x78)
Last_Section_number: 248 (0xf8)
Transport_stream_ID: 2001 (0x07d1)
Original_network_ID: 8564 (0x2174)  [= Irish Digital Terrestrial Television | Irish Telecommunications Regulator]
Segment_last_Section_number: 120 (0x78)
Last_table_id: 82 (0x52)  [= Event Information Table (EIT) - actual transport stream, schedule]

    Event_ID: 8923 (0x22db)
    Start_time: 0xd551210000 [= 2008-05-23 21:00:00 (UTC)]
    Duration: 0x0020500 [=  02:05:00 (UTC)]
    Running_status: 0 (0x00)  [= undefined]
    Free_CA_mode: 1 (0x01)  [= streams [partially] CA controlled]
    Descriptors_loop_length: 184 (0xb8)

            DVB-DescriptorTag: 77 (0x4d)  [= short_event_descriptor]
            Descriptor_length: 182 (0xb6)
              ISO639_2_language_code:  eng
            event_name_length: 12 (0x0c)
            event_name: "The Big Easy"  -- Charset: Latin alphabet
            text_length: 165 (0xa5)
            text_char: "Drama about a corrupt New Orleans cop who finds his department under investigation by an uncompromising female DA at the same time as a gang war erupts on his patch."  -- Charset: Latin alphabet


    Event_ID: 8925 (0x22dd)
    Start_time: 0xd551230500 [= 2008-05-23 23:05:00 (UTC)]
    Duration: 0x0005500 [=  00:55:00 (UTC)]
    Running_status: 0 (0x00)  [= undefined]
    Free_CA_mode: 1 (0x01)  [= streams [partially] CA controlled]
    Descriptors_loop_length: 180 (0xb4)

            DVB-DescriptorTag: 77 (0x4d)  [= short_event_descriptor]
            Descriptor_length: 178 (0xb2)
              ISO639_2_language_code:  eng
            event_name_length: 12 (0x0c)
            event_name: "Dead Like Me"  -- Charset: Latin alphabet
            text_length: 161 (0xa1)
            text_char: "Drama series about a dead teenager who becomes a reaper, helping souls as people die. George finds that shirking her duties has nasty consequences for the souls."  -- Charset: Latin alphabet

CRC: 2899891169 (0xacd8d3e1)
==========================================================

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.


Сообщить об ошибке