Мультиплексирование видео в реальном времени

Моя проблема в основном связана с тем, что у меня есть 2 разных потока для воспроизведения видео, и мне приходится мультиплексировать их в памяти в реальном времени. Один для видео, другой для аудио.

Моя цель — создать прокси, который может мультиплексировать 2 разных веб-потока из их URL-адресов, поддерживая запросы диапазона (требуется знание размера закодированного файла). Возможно ли это?

Вот как я мультиплексирую аудио- и видеопотоки вручную с помощью ffmpeg:

ffmpeg -i video.webm -i audio.webm -c copy output.webm

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

Заранее спасибо!


person Kavin Sundar    schedule 23.11.2020    source источник


Ответы (2)


Если вы ищете, чтобы это работало, вы можете изучить

github.com/at-wat/ebml-go/webm

Это обеспечивает BlockWriter интерфейс для записи в webm файл с использованием буферов; Вы можете посмотреть тестовый файл, чтобы проверить, как его использовать.

https://github.com/at-wat/ebml-go

person Shubham Srivastava    schedule 23.11.2020

Проверьте каналы ffmpeg.

Кроме того, поскольку вы пометили go — я предполагаю, что вы будете использовать os/exec — в этом случае также проверьте Cmd.ExtraFiles. Это позволяет использовать дополнительные каналы (файлы) помимо стандартных 0, 1 и 2.

Допустим, у вас есть поток для видео и один для аудио, направляемых на 3 и 4 соответственно. Бит ffmpeg вашей команды становится:

ffmpeg -i pipe:3 -i pipe:4 -c копировать output.webm

person Kelsnare    schedule 23.11.2020
comment
Понятно, в идеале я хотел использовать какие-то привязки ffmpeg, но я посмотрю, смогу ли я заставить это работать. Кроме того, как будет работать обработка запросов диапазона? Это то, что я не могу понять, как сделать с документацией. - person Kavin Sundar; 23.11.2020