транспортный поток и формат файла mpeg - PullRequest
6 голосов
/ 10 ноября 2010

Я хотел бы преобразовать файл TS в файл MPEG.Есть ли документы, описывающие такой процесс?Я знаю архитектуру TS, но я не знаю файловую архитектуру mpeg.Любая информация на эту тему будет высоко оценена.

Спасибо.

Ответы [ 3 ]

15 голосов
/ 10 ноября 2010

Что вы, вероятно, хотите сделать, это конвертировать из MPEG-TS (Транспортный поток) в MPEG-PS (Программный поток). MPEG-PS - это формат стандартного файла .mpg, а также формат, используемый DVD-видео.

Вы, вероятно, должны овладеть стандартом ISO / IEC 13818-1. Этот стандарт содержит все подробности контейнера MPEG-TS и MPEG-PS (он не распространяется на кодированное видео, описанное в ISO / IEC 13818-2).

К счастью, это преобразование довольно простое, поскольку большая часть всей структуры MPEG-PS содержится в формате MPEG-TS. Транспортный поток содержит серию 188-байтовых пакетов, каждый из которых имеет заголовок. Пакеты PES (элементарный поток программы) содержатся в полезных нагрузках пакета. Пакеты PES содержат фактическую видео или аудио полезную нагрузку. Пакет PES может быть любой длины, и большую часть времени он охватывает несколько пакетов TS. Демультиплексирование пакетов PES из транспортного потока на самом деле просто включает удаление заголовков TS и правильную конкатенацию данных полезной нагрузки для формирования пакетов PES.

Как только у вас будет поток пакетов PES, вы будете мультиплексировать их в формат Программного потока, как указано в стандарте. В общем, вам не нужно анализировать пакеты PES или их содержимое, вы можете просто поднять их из одного формата и вставить в другой.

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

10 голосов
/ 25 ноября 2011

Я пытаюсь добавить несколько хороших ресурсов, которые могут помочь.

Вот некоторые документы, которые объясняют детали потоков транспорта и программ и связанных структур пакетирования.

  1. Это объясняет различия между транспортным потоком и программным потоком. http://www.vbrick.com/docs/VB_WhitePaper_TransportStreamVSProgramStream_rd2.pdf

  2. Это объясняет избыточное представление MPEG и включает в себя также пакетирование. http://www.img.lx.it.pt/~fp/cav/Additional_material/MPEG2_overview.pdf

  3. Это объясняет другие аспекты транспортных потоков о том, как программы выбираются с использованием таблиц и т. Д. http://www.bitrouter.com/pdf/tutorial-psip.pdf

По сути, вам необходимо распаковать транспортный поток и разложить на пакеты PES (вместе с метками времени), а затем применить процесс пакетирования потока программы.

Важнейшим моментом является то, как вы сохраняете относительный разрыв и синхронизацию пакетов в потоках PS, когда вы возвращаете его обратно. Следовательно, вы должны сохранить временные метки PTS / DTS в пакетах PES.

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

  1. tstools (http://tstools.berlios.de/)
  2. mplex (из mjpegtools)
  3. dvb-mplex (часть libdvb, http://www.metzlerbros.org/dvb/)
  4. DVB-replacex (также является частью libdvb, http://freshmeat.net/projects/dvb-replex/ или http://www.metzlerbros.org/dvb/)
  5. Avidemux. http://avidemux.sourceforge.net/

Еще один хороший способ начать обучение - использовать плагин Gstreamer , если вы хотите быстро понять более широкий поток.

2 голосов
/ 10 ноября 2010

FFMPEG может использоваться для преобразования из TS в MPEG. Подробнее здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...