来自Apple documentation它只是说:
When the value of this property is YES, the output file will be written in such a way that playback can start after only a small amount of the file is downloaded.
但实际上发生了什么?
最佳答案
当 shouldOptimizeForNetworkUse 设置为 YES 时,调用 finishWriting 会将 MP4 moov atom(电影原子)从文件末尾移动到文件开头。 moov 原子包含有关电影文件的信息,如时间刻度和持续时间。 moov 还包含“子原子”,其中包含轨道、文件中的数据偏移等信息。
播放只能使用 moov 原子中的信息,当它位于文件的开头而不是文件的结尾时,电影播放器可以开始播放文件,即使它只加载了开头
在实践中,现代浏览器会使用 HTTP/1.1 Range header 从文件末尾获取 moov atom,以加载 moov atom,即使它位于文件末尾。
将 shouldOptimizeForNetworkUse 设置为 YES 也有一些副作用:
关于objective-c - shouldOptimizeForNetworkUse 实际上做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12980047/