Поскольку запись с MediaRecorder в формате TS (OutputFormat = 8) устарела, действительно, похоже, что она работает только для нескольких устройств, я хотел бы записать MP4/H.264 видео а затем преобразовать его в файл .ts по программному обеспечению. Я должен записать в качестве выходного файла файловый дескриптор, потому что мне нужно отправить живое видео на локальный сервер.
До сих пор я смог создать файл .ts, содержащий правильные таблицы SI (PAT, PMT) с подходящей частотой (как я читал где-то, каждые 100 мс для PAT и каждые 400 мс для PMT), а во время этих интервалов Я фактически заполняю файл .ts нулевыми пакетами. Теперь я должен заменить эти нулевые пакеты PES s (Packetized Elementary Streams). Вопрос в следующем:
- это байты вывода MediaRecorder уже, отформатированный как PES? То есть, могу ли я прямо разделить эти байты на 184-байтовые куски и использовать их в качестве полезной нагрузки пакетов TS? Если нет, какую «предварительную обработку» мне придется подвергнуть? Правильно ли использовать кодировку H264 и контейнер MP4?mp4 h264 как полезная нагрузка PES
ответ
No. PES Имеет заголовок, который должен быть написан первым. Вам также необходимо будет преобразовать формы MP4 NALU в приложение-b, написав стартовые коды и удалив NALLength (если медиа-рекордер уже делает это). Вы также должны убедиться, что SPS и PPS повторяются в потоке. И, наконец, вы должны убедиться, что AUD присутствуют, поскольку они являются необязательными в MP4, но требуются для ts.
О, и не забудьте написать ПЦР.
Можете ли вы объяснить мне что-то еще? Я не знаю, что такое SPS, PPS, AUD ... Вы сказали, что SPS и PPS должны быть повторены, но с какой скоростью? Есть ли руководство по этому поводу? –
Любое место, где вы хотите/нужен произвольный доступ. Прежде чем каждый iframe станет хорошим правилом, – szatmary
Привет Луиджи Ренда, я борюсь за то, чтобы пойти то же самое, получилось, если да, можете ли вы опубликовать решение здесь? Спасибо. – brunodles