Вот наша процедура:
- Мы создаем живые видеоролики MP4 с помощью ffmpeg (H264 / AAC) как в качестве API, так и в качестве инструмента командной строки. *
- qt-faststart используется для перемещения метаданных в начало файла, чтобы обеспечить быстрое воспроизведение в нашем Flash-клиенте.
- Видео переименовано в * .m4v.
- Пользователь использует наш Flash-клиент для загрузки видео и сразу же начинает воспроизведение, так как метаданные находятся в начале.
Изменить: * Сначала создается видео MPG с помощью API ffmpeg, затем оно копируется вместе с вступительным и заключительным видео (вы можете просто объединить видео MPG в цепочку). Полученный MPG затем конвертируется в MP4 с помощью следующей команды:
ffmpeg -i inputvideo.mpg -sameq -b 3000000 -vcodec libx264 -acodec libvo_aacenc -ac 2 -g 60 -y outputvideo.mp4
В принципе, это действительно работает.
Эта проблема:
Мы заметили, что во время первоначального воспроизведения (пользователь еще ничего не щелкнул, видео все еще загружается или нет, это не имеет значения), звук воспроизводится асинхронно, что заметно, если вы внимательно посмотрите на него.
Но как только вы щелкаете по видео (достаточно одного раза, независимо от того, где вы щелкаете), звук становится более синхронным (все еще не идеальным!) Для остальной части видео.
Это поведение одинаково, независимо от того, просматриваете ли вы его через наш Flash-плеер или Windows Media Player. Что мы можем сделать со своей стороны (в ffmpeg или qt-faststart), чтобы сделать его синхронным с самого начала?