Я пытаюсь транслировать контент H.264 в режиме реального времени на HTML5 с помощью API расширений источника мультимедиа.
Следующий метод работает довольно хорошо:
ffmpeg -i rtsp://10.50.1.29/media/video1 -vcodec copy -f mp4 -reset_timestamps 1 -movflags frag_keyframe+empty_moov -loglevel quiet out.mp4
а потом: mp4box -dash 1000 -frag 1000 -frag-rap out.mp4
Я могу взять вывод MP4Box (out_dashinit.mp4
) и отправить его через веб-сокеты, фрагмент за фрагментом, клиенту JavaScript, который передает его в API источника мультимедиа.
Однако это не лучший метод для живого контента.
Что я пытаюсь сделать сейчас, так это создать единый конвейер, чтобы делать это в реальном времени и с минимально возможной задержкой. С FFmpeg можно перенаправить вывод на stdout
вместо out.mp4
и получить содержимое. Я не мог понять, можно ли объединить MP4Box в конвейер.
- Может ли MP4Box брать входные данные из источника, который не является файлом?
- Может ли MP4Box захватывать такой контент постепенно (из файла или другого источника), пока он поступает в режиме реального времени? т.е. подождите немного, если поток остановится на 1 секунду и возобновится автоматически.
- Тот же вопрос, но для вывода: может ли он выводиться во что-то, что не является файлом (например,
stdout
), и может ли он делать это постепенно, чтобы всякий раз, когда выходные данные будут готовы, я мог взять их и передать в веб-клиент. , по сути, создавая бесконечный пунктирный MP4.