Как установить буфер для MP4 в FFmpeg?

Я конвертирую видео в MP4 для своего веб-плеера. Моя проблема: Мои видео не буферизуются. Мне нужно дождаться загрузки всего видео, после чего я могу воспроизвести видео.

Это моя команда exec():

ffmpeg -i uploaded_files/'.$le["file"].' -vcodec libx264 -pix_fmt yuv420p flash/'.$le["file"].'.mp4

Есть ли варианты буферизации? Мой размер и качество MP4 хорошие. Но без буферизации плохо.

Является ли это ошибкой команды exec(), которую я использую?


person janos    schedule 10.02.2013    source источник


Ответы (1)


Мои видео не буферизуются. Мне нужно дождаться загрузки всего видео, после чего я могу воспроизвести видео.

Используйте параметр -movflags faststart при кодировании, например.

ffmpeg -i input.mp4 […] -movflags faststart output.mp4

Либо запустите qt-faststart для файла.

Причина, по которой файлы не передаются сразу, заключается в том, что их атом MOOV в конце файла, и для его воспроизведения клиенту необходимо проанализировать эту информацию. qt-faststart просто переместит этот атом, и ваши файлы сразу же начнут воспроизводиться.

person slhck    schedule 10.02.2013
comment
Я пробовал thos: $cmd = 'ffmpeg -i uploaded_files/160971517551170c3698a5f-Kukori_es_Kotkoda_1.evad_08.resz_-_Kakasviadal.avi -vcodec libx264 -pix_fmt yuv420p -preset medium -movflags faststart test/'.date("H-i-s").'.mp4';, но он пишет: не удалось разобрать значение опции faststart Неверное значение 'movflags' для опции 'faststart' Вы знаете, что не так? (Неопределенная константа или отсутствует '(' в 'faststart') - person janos; 11.02.2013
comment
Я совершенно уверен, что это потому, что ваша версия FFmpeg слишком старая. Вы также используете устаревшее и неоднозначное -preset. Попробуйте загрузить статическую сборку с их домашней страницы или компилировать новую версию самостоятельно, если можете (и иметь права администратора на машине). - person slhck; 11.02.2013
comment
Обратите внимание, что использование qt-faststart не зависит от используемой вами версии FFmpeg. При этом никогда не помешает обновить FFmpeg, поскольку он постоянно развивается — сотни ошибок исправляются в течение нескольких месяцев. И вы пропустите новые функции. - person slhck; 11.02.2013
comment
ffmpeg версия 0.7.13, Copyright (c) 2000-2011 разработчики FFmpeg построили 13 июня 2012 14:14:09... Теперь я пытаюсь обновить, но я плохой пользователь Linux.. :-) - person janos; 11.02.2013
comment
Вы можете просто попробовать статическую сборку, она будет работать без установки. - person slhck; 11.02.2013
comment
Могу ли я использовать faststart с этой версией ffmpeg? Или любое другое решение для этого .mp4? - person janos; 11.02.2013
comment
Как я уже сказал, вы можете использовать qt-faststart даже со своей старой версией FFmpeg. Но я не вижу убедительной причины оставаться на старом релизе. - person slhck; 11.02.2013