Воспроизведение фрагментов webm как отдельного видео

Я построил некоторый код, который получит API MediaRecorder для захвата аудио и видео, а затем с помощью функции ondataavailable отправит соответствующий блоб веб-файла на сервер через веб-сокеты. Затем сервер отправляет эти большие двоичные объекты клиенту через веб-сокеты, которые помещают видео в буфер, используя API-интерфейс Media Source Extension.

Это хорошо работает, за исключением того, что если я хочу запустить поток на полпути, я не могу просто отправить последний BLOB-объект, потому что сам по себе BLOB-объект не воспроизводится. Кроме того, если я отправляю двоичные объекты не в порядке, браузеры обычно жалуются, что кодировка звука не совпадает.

Я действительно не знаю столько о видео контейнерах, кодеках и т. Д., Сколько мне нужно, чтобы осуществить это, но мой вопрос, как я могу воспроизвести эти BLOB-объекты как отдельные видео? Могу ли я каким-то образом использовать код для добавления информации, которая находится в первом BLOB-объекте (воспроизводимом самостоятельно), в другие BLOB-объекты? Каков был бы хороший подход к возможности добиться того, чтобы поток играл частично? Я бы транскодировал, но, кажется, это занимает слишком много времени, так как я хочу настроить потоковую передачу в реальном времени (или близко к ней).

Спасибо!

1 ответ

Только первый большой двоичный объект, полученный от MediaRecorder API, содержит заголовок. Таким образом, вам нужно будет просто извлечь его и добавить его к другим вашим BLOB-объектам, чтобы иметь возможность воспроизводить их как отдельные видеоролики WebM. Я рекомендую вам проверить, работает ли он, используя такие инструменты, как шестнадцатеричный редактор. И вы можете автоматизировать этот процесс на вашем сервере.

С помощью MSE вы можете загрузить первый блок, содержащий сегмент WebM, с информацией о треках, а что нет, а затем начать загрузку кластера. Браузер поймет это.

Кластеры WebM начинаются с меток времени, которые позволяют этому работать.

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