Когда для параметра shouldOptimizeForNetworkUse установлено значение YES, вызов finishWriting переместит атом moov MP4 (атом фильма) из конца файла в начало файла. Атом moov содержит информацию о файле фильма, такую как шкала времени и продолжительность. Moov также содержит «субатомы», которые содержат такую информацию, как дорожки, смещения данных в файле и т. д.
Воспроизведение возможно только с использованием информации в атоме moov, и когда он находится в начале файла, а не в конце файла, проигрыватель фильмов может начать воспроизведение файла, даже если он загрузил только его начало.
На практике современные браузеры извлекают атом moov из конца файла, используя заголовок диапазона HTTP/1.1, чтобы загрузить атом moov, даже если он находится в конце файла.
Установка значения YES для shouldOptimizeForNetworkUse также имеет несколько побочных эффектов:
- Завершение фильма занимает немного больше времени, потому что файл должен быть изменен вместе со смещениями в атоме.
- Выходной файл заблокирован и недоступен, потому что FinishWriting должен изменить весь файл (переместить и обновить атомы). Если установлено значение NO, movieFragmentInterval устанавливает интервал сброса для записи в выходной видеофайл, делая файл доступным для чтения во время записи, поскольку фрагменты сбрасываются в файл в их окончательной форме. FinishWriting просто нужно добавить атом moov в конец файла вместо того, чтобы касаться уже написанных фрагментов.
person
Matti Savolainen
schedule
09.01.2013