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.

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