2013-04-21 2 views
2

Я пытаюсь записать потоковые (фрагментированные?) Файлы mp4 с помощью FFMpeg. Но по умолчанию для FFMpeg bahavior формата -f mp4 это не тот.Как создать потоковый аудиофайл с ffmpeg?

Возьмем для примера AAC-LC MP4 test file сохранить его как aac_lc_in.m4a и запустить ffmpeg команду.

ffmpeg -y -i aac_lc_in.m4a -strict -2 -codec copy -f mp4 aac_lc_out.m4a 

Результатом является не поточную файл (поместить его на сервер и попытайтесь загрузить его в вашем браузере It запускается только после полной загрузки). Это не происходит с исходным файлом, который можно запустить до завершения загрузки.

Я также попытался с помощью параметров в формате mp4:

-movflags frag_keyframe+empty_moov 
-movflags faststart+frag_keyframe 
-movflags faststart+frag_keyframe+empty_moov 
-movflags faststart+rtphint+frag_keyframe 
-movflags rtphint+frag_keyframe 
-movflags rtphint+frag_keyframe -rtpflags latm 

, но ничего не помогало. Даже если выходной файл выглядит очень похожим на исходный (поле Формат файла, примеры таблиц и т. Д.), Сгенерированный файл не является потоковым.

ответ

1

Я нашел решение. ТОЛЬКО используйте аргумент -movflags faststart для формата mp4. Полная команда будет:

ffmpeg -i aac_lc_in.m4a -strict -2 -codec copy -f mp4 -movflags faststart aac_lc_out.m4a 

Теперь файл aac_lc_out.m4a воспроизводится в браузере, как только вы выберите игру.

Смежные вопросы