qt faststart и ffmpeg для генерации живого файла mp4
Я использую ffmpeg для создания файла mp4 на моем сервере. Я также пытаюсь использовать быстрый старт qt, чтобы переместить атом moov вперед, чтобы он работал. Я искал по всему интернету без удачи. Можно ли поместить мое видео / аудио в файл типа буфера mp4, а затем воспроизвести его, пока ffmpeg по-прежнему записывает видео и аудио данные в поток? Дело в том, что я пытаюсь транслировать с камеры, а Android ужасен... Я знаю, что ios и android поддерживают mp4, поэтому я пытался придумать, как мне сделать мой rtsp Mp4.
Суть истории: я хочу непрерывно кормить свой mp4-контейнер своей камерой и по-прежнему иметь возможность воспроизводить файл, который могут просматривать мои клиенты.
любая помощь оценена спасибо.
1 ответ
Вы можете опубликовать прямой эфир, а когда поток закончится, вы опубликуете прогрессивную загрузку.
В FFmpeg для прямой трансляции и сохранения дубликата этого потока в файл одновременно без двойного кодирования можно использовать псевдосмеситель Tee. Что-то вроде этого:
ffmpeg \
-i <input-stream> \
-f tee "[movflags=+faststart]output.mp4|http://<ffserver>/<feed_name>"
Обновление: вы можете попытаться напрямую транслировать фрагментированный mp4.
Обновление 2:
Создайте фрагментированный mp4:
ffmpeg -i input -frag_duration 1000 stream.mp4
Обычно, когда файл обрабатывается с помощью веб-сервера, он хочет знать размер файла, поэтому для обслуживания файла, не зная его размера, необходимо настроить веб-сервер на выполнение кодирования Chunked Transfer Encoding.