Есть ли недостаток, чтобы положить атом MOOV в начале файла MP4?
Я вижу массу вопросов о переносе атома moov
с конца видеоконтента MP4 в начало, чтобы сделать видео "оптимизированным для веб-сайта" или более простым для потоковой передачи. Похоже, что для большинства инструментов требуется явный вариант сделать это при первом кодировании видео, если оно доступно вообще.
Если размещение атома в начале делает работу потоковой передачи лучше, и это дорого стоит сделать после факта, зачем мне когда-либо хотеть кодировать видео с атомом в конце? Какая польза?
Ответы
Ответ 1
Кодирование MOOV в конце файла обычно является операцией по умолчанию для видеокодеров, поскольку они, как правило, работают, записывая выходной файл в один проход, а точное содержимое и размер атома MOOV могут быть известны только после полностью записав аудио- и видеоданные, поскольку содержит абсолютные размеры файлов.
Основным примером этого является FFMpeg, с объяснением, найденным в этом ответе: https://stackoverflow.com/a/8066089/393701
FFMpeg имеет возможность зарезервировать место для этого атома, но не гарантируется, что данные будут идеально вписываться.
Наличие атома MOOV в конце не имеет особых преимуществ, это просто не так неудобно в ситуациях локального воспроизведения, когда поиск в конце файла перед воспроизведением не так дорог, как при прогрессивной загрузке.
Ответ 2
Вы всегда хотите поместить индексную информацию в начало файла, нет скрытых затрат для этого макета, кроме единственного: при выполнении захвата/транскодирования вы не можете заранее сказать, сколько места вам нужно для этого атома MOOV в начале, и его данные еще недостаточно хорошо доступны. Таким образом, вы обычно записываете полезную нагрузку непосредственно в файл, и они заполняют запись, добавляя MOOV и обновляя остальную часть файла.