Размер видео (горизонтальный и вертикальный) из транспортного потока MPEG-2 - PullRequest
3 голосов
/ 20 июля 2011

Мне нужно знать, как получить высоту и ширину и любые другие описательные данные, которые я могу, из транспортного потока MPEG (TS).

Прежде чем появится этот ответ: я хорошо осведомлензаголовка видеопоследовательности (00 00 00 B3).Это часть спецификации для программного потока MPEG (т.е. файла MPEG), not транспортного потока MPEG.

Если я сохраню транспортный поток вФайл .ts Я могу получить эту информацию из ffmpeg, но мне нужно иметь возможность делать это независимо от ffmpeg в среде, где ffmpeg недоступен.Поэтому мне нужно выполнить синтаксический анализ этих данных в файле вручную, и я не могу найти НИЧЕГО в отношении каких-либо соответствующих метаданных, кроме меток времени (срезов начинается) из MPEG-TS.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 27 ноября 2011

Размер видео НЕ , свойство Транспортный поток .Это свойство самого элементарного видеопотока.Транспортный поток или пакет PES не содержит заголовка.

Чтобы извлечь разрешение (ширина x высота), вам нужно идентифицировать стартовый пакет PES (с PUSI) и затем начать синтаксический анализ заголовков es.Вам нужно извлечь Заголовок последовательности Часть ISO / IEC 13818-часть 2 (видео) даст вам ответ.Проверьте это вики для быстрого ознакомления.

2 голосов
/ 20 июля 2011

Боюсь, что вам придется проверить ISO 13818-1 (также известный как H.222) и прочитать немного о пакетах транспортного потока, фильтрации PID и PES.

Потокразделить на пакеты.Каждый пакет (обычно) имеет длину 188 байт.Заголовок пакета содержит PID (идентификатор пакета), который позволяет фильтровать только те пакеты, которые вам интересны.

Пакеты составляют пакеты PES, которые содержат данные MPEG-2 + метаданные (такие как данные синхронизации),Вам нужно будет собрать, а затем проанализировать пакеты PES, прежде чем вы сможете узнать ширину и высоту видео.

Как узнать, какие PID вас интересуют?Для этого вам нужно прочитать о PAT и PMT.PAT сообщает вам, как получить PMT, а PMT сообщает, какие PID содержат информацию MPEG-2.

Все это описано (подробно) в документах выше.Но есть много уроков и объяснений в Интернете.Например, здесь , но есть много других. Статья Википедии - хорошее место для начала.

1 голос
/ 12 августа 2011

Фактически заголовок видеопоследовательности (00 00 01 B3) является частью спецификации ISO / IEC 13818-2, которая описывает элементарный видеопоток битов.Таким образом, транспортный поток также будет содержать этот заголовок.

Проблема в том, чтобы извлечь содержимое этого заголовка.Вы не можете просто найти этот стартовый код и использовать следующие за ним байты.Это может быть довольно сложной задачей, потому что: 1. Содержимое заголовка может быть разделено на два пакета PES или транспортного потока. 2. Если транспортный поток содержит не только видеопоток, эта последовательность байтов может быть найдена в некоторых аудио или двоичных данных.

...