从Apple文档中它只是说:
当此属性的值为 YES 时,将写入输出文件,即只需下载少量文件即可开始播放。
但实际发生了什么?
当 shouldOptimizeForNetworkUse 设置为 YES 时,调用 finishWriting 会将 MP4 moov atom(电影原子)从文件末尾移动到文件开头。moov atom 包含有关电影文件的信息,例如时间刻度和持续时间。moov 还包含“子原子”,其中包含轨道、文件中的数据偏移等信息。
只能使用 moov atom 中的信息进行播放,并且当它位于文件的开头而不是文件的末尾时,电影播放器可以开始播放文件,即使它只加载了文件的开头。
在实践中,现代浏览器将使用 HTTP/1.1 Range 标头从文件末尾获取 moov atom 以加载 moov atom,即使它位于文件末尾。
将 shouldOptimizeForNetworkUse 设置为 YES 也有一些副作用: