Не удалось получить всю служебную информацию из таблицы SDT mpegts (поток DVB)

Я новичок в этом и извините, если я использую какие-либо неправильные сокращения. Я пытаюсь разобрать таблицу SDT из файла mpegts с помощью C ++. Поток содержит 9 программ (канал). Вот шаги, которые я делаю:

  1. Получить 188-байтовый буфер из файла
  2. Проверьте заголовок и определите таблицу SDT по PID = 0x0011.
  3. Разбор SI заголовка и содержимого таблицы
  4. Перебирайте дескрипторы и получайте информацию об услугах (FreeCa, Provider
    Имя, Сервисное имя, …)

Но при использовании этих шагов, когда я достигаю конца пакета (последний байт 188-байтового пакета), в него включается не вся служебная информация, а только 7-канальная информация. Кажется, это расколото.

После первого определения таблицы SDT за ним следует второй другой 188-байтовый пакет SDT с заголовком PID = 0x0011 и payload-flag = 0. Поскольку payload-flag равен 0, я не могу проанализировать содержимое, но в отладчике он показывает, что там остальная служебная информация доступна в буфере (я узнал ее по остальным служебным именам), но не знаю, как ее проанализировать, и не знаю, в каком формате байтов она упакована. После этого все повторения таблицы SDT в файле TS одинаковы.

я использую этот код для разбора транспортного потока.

Главный вопрос: как собрать всю информацию об услуге, если она не помещается в один 188-байтовый пакет?

Я отсканировал этот файл TS в программном обеспечении «DemuxToy» (Analyzer), и он показывает всю служебную информацию.

Хорошая документация о потоке данных mpegts SI будет принята с благодарностью. Извините за мой плохой английский.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]