Я новичок в этом и извините, если я использую какие-либо неправильные сокращения. Я пытаюсь разобрать таблицу SDT из файла mpegts с помощью C ++. Поток содержит 9 программ (канал). Вот шаги, которые я делаю:
Но при использовании этих шагов, когда я достигаю конца пакета (последний байт 188-байтового пакета), в него включается не вся служебная информация, а только 7-канальная информация. Кажется, это расколото.
После первого определения таблицы SDT за ним следует второй другой 188-байтовый пакет SDT с заголовком PID = 0x0011 и payload-flag = 0. Поскольку payload-flag равен 0, я не могу проанализировать содержимое, но в отладчике он показывает, что там остальная служебная информация доступна в буфере (я узнал ее по остальным служебным именам), но не знаю, как ее проанализировать, и не знаю, в каком формате байтов она упакована. После этого все повторения таблицы SDT в файле TS одинаковы.
я использую этот код для разбора транспортного потока.
Главный вопрос: как собрать всю информацию об услуге, если она не помещается в один 188-байтовый пакет?
Я отсканировал этот файл TS в программном обеспечении «DemuxToy» (Analyzer), и он показывает всю служебную информацию.
Хорошая документация о потоке данных mpegts SI будет принята с благодарностью. Извините за мой плохой английский.
Задача ещё не решена.
Других решений пока нет …