Из документации Apple он просто говорит:
Когда значение этого свойства равно YES, выходной файл будет написанное таким образом, что воспроизведение может начаться только после небольшого загружается файл.
Но что на самом деле происходит?
Из документации Apple он просто говорит:
Когда значение этого свойства равно YES, выходной файл будет написанное таким образом, что воспроизведение может начаться только после небольшого загружается файл.
Но что на самом деле происходит?
Когда shouldOptimizedForNetworkUse установлено на YES, вызов finishWriting переместит атом MP4 moov (аспект фильма) с конца файла в начало файла. Атом moov содержит информацию о файле фильма, как временные рамки и продолжительность. Moov также содержит "субатомные" символы, содержащие информацию, такую как дорожки, смещения данных в файле и т.д.
Воспроизведение возможно только с использованием информации в атоме moov и когда оно расположено в начале файла, а не в конце файла, проигрыватель фильмов может начать воспроизведение файла, даже если он загрузил только начало он.
На практике современные браузеры будут извлекать атом moov из конца файла с использованием заголовка диапазона HTTP/1.1 для загрузки атома moov, даже если он находится в конце файла.
Настройка параметра mustOptimizedForNetworkUse на YES также имеет несколько побочных эффектов: