2

Я конвертирую свое видео в H.264 / MP4 с помощью ffmpeg. Затем я перемещаю атом moov в начало файла с помощью qt-faststart , чтобы я мог транслировать видео.

Все отлично работает с небольшими видеороликами продолжительностью 5–10 минут, но если речь идет о больших видеороликах продолжительностью 1-2 часа, для начала воспроизведения может потребоваться значительное время. Он загружает 6–10 МБ, и только тогда я могу начать воспроизведение видео.

С видео FLV это не так; он воспроизводится сразу, независимо от размера видео. Как я могу это исправить?

1 ответ1

5

Вы можете проверить размер вашего атома MOOV с AtomicParsley. Запустите atomicparsley file.mp4 -T и найдите что-то вроде этого:

Atom moov @ 20 of size: 1653815, ends @ 1653835

Например, здесь размер атома составляет 1653815 байт (примерно 1,5 МБ). Возможно, для ваших файлов атом слишком велик.

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

Одним из способов сделать это был бы формат "гладкой потоковой передачи" ISMV. Создает фрагментированные файлы MP4. Вы можете включить его, установив один из параметров фрагмента и выбрав пустой MOOV. Например:

ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict experimental \
-b:v 1M -b:a 128k -movflags frag_keyframe+empty_moov \
output.mp4

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .