Я попробовал qt-faststart с моими собственными файлами в кодировке MP4 (h264 + AAC) и всегда получал сообщение об ошибке «последний атом в файле не был атомом moov» (и без выходного файла). Тогда я предположил, что с моими файлами все в порядке, и искал проблему в другом месте. После нескольких часов тестирования мое предположение оказалось неверным - действительно, кажется, в моих файлах вообще не было moov-атома, ни в начале, ни в конце!
Чтобы успешно исправить это, я сначала использовал ffmpeg, чтобы «регенерировать» файл, то есть преобразовать исходные треки h264 + AAC в новый файл MP4 без его перекодирования:
ffmpeg -i souce_file.mp4 -acodec copy -vcodec copy target_file_1.mp4
После этого новый файл должен иметь в конце свой собственный moov-атом. Итак, теперь вы можете использовать qt-faststart, чтобы переместить его в начало, как объяснил Кит в своем ответе:
qt-faststart target_file_1.mp4 target_file_2.mp4
После этого mediaelement воспроизводит все мои видео сразу после нажатия кнопки воспроизведения, когда файл начинает скачиваться! :)
Если ваша проблема в том, что у вас уже есть все ваши файлы на сайте, похожем на youtube, ваш хостинг основан на Linux, ffmpeg отсутствует, и вы не можете его скомпилировать самостоятельно, вам, на мой взгляд, полезно получить статическую сборку ffmpeg. Вы можете найти это здесь:
http://ffmpeg.gusari.org/static/ (32-разрядная версия) или здесь: http://dl.dropbox.com/u/24633983/ffmpeg/index.html (64 бит)
К сожалению, в 32-битной сборке, которую я использовал, не было qt-faststart, ни в виде двоичного, ни в виде исходного кода. В этом случае вы можете загрузить его из ffmpeg SVN и скомпилировать напрямую с помощью gcc. Я успешно сделал это на своем виртуальном хостинге ultra-el-cheapo. Похоже, что у него нет никаких зависимостей от сборки. Или вы даже можете попробовать мою собственную двоичную сборку qt-faststart и посмотреть, работает ли она для тебя.
РЕДАКТИРОВАТЬ: Я только что обнаружил, что в новых версиях qt-faststart вообще не нужен. Вы можете кодировать напрямую с помощью ffmpeg, используя следующую опцию:
-movflags +faststart
person
Pere
schedule
15.03.2013