mp4 h264 в качестве полезной нагрузки PES

Поскольку запись с помощью MediaRecorder в формате TS (OutputFormat=8) устарела, действительно, кажется, что она работает только для нескольких устройств, я хотел бы записать видео MP4/H.264 и затем преобразовать его в файл .ts программным обеспечением. Я должен записать, используя в качестве выходного файла дескриптор файла, потому что мне нужно отправить живое видео на локальный сервер.
До сих пор я был в состоянии создать файл.ts, содержащий надлежащие таблицы SI (PAT, PMT) с подходящей частотой (как я где-то читал, каждые 100 мс для PAT и каждые 400 мс для PMT), в то время как в течение этих интервалов я фактически заполните файл.ts пустыми пакетами. Теперь я должен заменить эти нулевые пакеты на PES(пакетные элементарные потоки). Вопрос в том:
выходные байты MediaRecorder уже отформатированы как PES? То есть я мог бы сразу разделить эти байты на 184-байтовые куски и использовать их в качестве полезных данных пакетов TS? Если нет, то какой "предварительной обработке" я должен подвергнуть их? Правильно ли использовать кодировку H264 и контейнер MP4?

1 ответ

PES имеет заголовок, который должен быть написан первым. Вам также нужно будет преобразовать NALU формы MP4 в приложение-b, написав стартовые коды и удалив NALLength (если только это не сделано в медиа-рекордере). Вы также должны убедиться, что SPS и PPS повторяются в потоке. И, наконец, вы должны убедиться, что AUD присутствуют, так как они необязательны в MP4, но необходимы для ts.

О, и не забудьте написать ПЦР.

Другие вопросы по тегам