2013-08-18 1 views
2

В настоящее время я записываю видео с prorecorder blackmagic. Я перекодирую видео на лету в видеопамять mp4 с помощью ffmpeg. Продолжительность неизвестна, так как я перекодирую .ts, который prorecorder выводит на именованный канал.ffmpeg - генерировать moov atom

Моя цель - попытаться воспроизвести этот файл с браузером, в то время как поток по-прежнему записывается - воспроизведение великолепно, но проблема в том, что при открытии файла продолжительность определяется текущим временем записи.

Итак, вопрос - Я хотел бы сгенерировать «поддельный» атом moov для продолжительности fe. 8 часов с ffmpeg, а затем начните запись файла mp4, как я уже делаю. Как я могу это сделать?

документации, что я проверил, и я думаю, что это отношение - https://ffmpeg.org/ffmpeg-formats.html#MOV_002fMP4_002fISMV Я также видел это на стеке: Is it possible to fake a (mp4) moov atom?

+0

в вашем сценарии фрагментарного решение mp4 будет более «стандартным» или более легкий поток RTMP вы смотрите HTTP: //trac.ffmpeg .org/wiki/StreamingGuide – alexbuisson

+0

Есть ли в RTF потоке с ffmpeg возможность вернуться во время потока, что означает, что вы можете воспроизвести событие, которое произошло 2 часа назад, например? – mmx

+0

Нет, вы не можете сделать что-то подобное. Я думал, ты пытаешься жить, но все по-другому. – alexbuisson

ответ

4

У меня была аналогичная проблема, и только обнаружил это после кодирования почти 2000 видео. Вместо того, чтобы начать сначала, я использовал эту команду, чтобы вставить атом Moov:

/usr/bin/ffmpeg -i ./input.mp4 -c:v copy -movflags faststart -strict -2 ./output.mp4 
+1

Это перемещает атом moov в начало, но только на втором проходе, тем самым значительно увеличивая время преобразования и, в первую очередь, делает недействительным цель: вы не можете начать играть до завершения преобразования. -movflags empty_moov 'делает файл воспроизводимым, пока он все еще преобразован, но Duration не определен и поиск невозможен. Итак, вопрос: если файл с пустым moov воспроизводим, и мы знаем продолжительность, почему мы не можем просто поместить данные продолжительности в начале? – Liphtier