MPEG 2 - Добавление пользовательских тегов через редактирование источника - PullRequest
0 голосов
/ 02 сентября 2011

Я ищу совет и возможно ли то, что я хочу сделать.

Меня попросили создать нечто похожее на mp3-теги ID3, которые можно использовать с видеофайлами MPEG 2 / MPEG-TS.Поскольку я грубый человек, я думал о том, чтобы просто поместить какую-то структуру XML в сам файл.Однако это вызывает проблемы с приложениями, пытающимися декодировать / воспроизводить видеофайл, так как приложение не ожидает данных XML / ASCII в файле.

Я не уверен, возможно ли иметь какой-либо тип ENDOF 'FILE' команда ', которая может быть изменена до конца файлов MPEG, и я могу вывести свой XML после этой части.

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

Есть идеи?Или то, что я предлагаю, невозможно?

Спасибо.

Ответы [ 2 ]

1 голос
/ 28 декабря 2011

Существует прямой способ сделать это MPEG 2 / MPEG-TS

По сути, вы можете добавить собственные дескрипторы и / или пользовательские таблицы (и даже пользовательские типы потоков), которые имеютего собственный PID в потоке.Они не будут WITHIN видео и не сломают работающее приложение, но их можно прочитать

Чтобы дать вам перспективу, телетекст, данные VBI, сигналы тонального сигнала, EPG,Команды DSC-CC (а некоторые даже говорят об использовании систем MPEG для передачи общих данных) являются примерами пользовательских данных по MPEG-Ts.

Подробно изучите MPEG2- ISO 13818-1 (есть раздел о пользовательских таблицах) и уточните свой вопрос.

1 голос
/ 02 сентября 2011

Любая программа, которая декодирует файл MPEG2-TS, будет снова и снова искать 188-байтовый пакет.Если вы посмотрите на гекс, то увидите байт 0x47, который является байтом синхронизации (также первым байтом) каждого пакета каждые 188 байтов.Вот почему добавление данных XML в файл может испортить любые декодеры.

Что вы можете сделать, это добавить свои собственные пакеты или перехватить пакеты с нулевым PID, как правило, в начале файла MPEG2-TS.К сожалению, чтобы сделать это правильно, вы, вероятно, захотите, чтобы эти данные были в таблице информации о сети, которая может еще не существовать.Это означает, что вам, возможно, придется добавить ссылку на NIT в PMT.Все это требует передовых знаний и возможности разбора / записи транспортного потока.

Возможно, вам удастся добавить пакеты в начале файла без необходимости настройки часов.Или просто перехватите существующие пакеты с нулевым PID (не требуется изменение эталонной синхронизации).Затем в ваших новых пакетах используйте идентификатор пакета, который, вероятно, не будет использоваться, как 8190. Выполнение этого без изменения PMT для ссылки на NIT не будет полностью действительным MPEG2-TS из-за PID без ссылки, но, вероятно, все еще будет работать вбольшинство коммерческих декодеров.

Во многом это не имеет смысла, я уверен, потому что вы просто пытаетесь добавить некоторую информацию о тегах и не знакомы с MPEG2-TS.Но стандарт, который определяет точный формат: ISO / IEC 13818-1 .Осторожно, это довольно тяжелое чтение.Если вы хотите стать легче (и дешевле), вам, возможно, удастся обойтись, просто wikipedia .

...