gpt4 book ai didi

objective-c - shouldOptimizeForNetworkUse 实际上做了什么?

转载 作者:IT王子 更新时间:2023-10-29 08:02:18 26 4
gpt4 key购买 nike

来自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 也有一些副作用:

  • 完成影片需要更长的时间,因为必须修改文件以及原子中的偏移量。
  • 输出文件被锁定且不可访问,因为 finishWriting 将需要修改整个文件(移动和更新原子)。当设置为 NO 时,movieFragmentInterval 设置写入输出视频文件的刷新间隔,使文件在写入过程中可读,因为片段以其最终形式刷新到文件中。 finishWriting 只需要将 moov 原子附加到文件末尾,而不是触及已经写入的片段。

关于objective-c - shouldOptimizeForNetworkUse 实际上做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12980047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com