use*_*046 21 objective-c avfoundation ios avassetwriter avassetexportsession
从Apple文档中它只是说:
当此属性的值为YES时,将以这样的方式写入输出文件,即只在下载少量文件后才能开始播放.
但究竟发生了什么?
小智 61
当shouldOptimizeForNetworkUse设置为YES时,调用finishWriting会将MP4 moov atom(movie atom)从文件末尾移动到文件的开头.moov atom包含有关电影文件的信息,如时间刻度和持续时间.moov还包含"subatoms",其中包含轨道,文件中的数据偏移等信息.
只能使用moov atom中的信息进行回放,当它位于文件的开头而不是文件的末尾时,即使电影播放器只加载了文件的开头,也可以开始播放该文件.
在实践中,现代浏览器将使用HTTP/1.1 Range标头从文件末尾获取moov原子,以加载moov原子,即使它位于文件的末尾.
将shouldOptimizeForNetworkUse设置为YES也有一些副作用: