我正在尝试在iOS应用中开始播放大型.aac文件,或者可以极大地减少下载时间,因此可以更早开始播放。这似乎是.aac文件的特殊之处。
在Safari和Chrome之类的网络浏览器中,持续时间不正确,并且清理效果不佳(Chrome),或者仅限于从头开始逐步搜索(Safari),但是播放却很快开始。我的iOS中基于AVFoundation的播放器似乎无法立即执行此操作。尽管我希望使用清理功能,但是对于较大的.aac文件,只需能够以高稳定性开始播放而没有明显的延迟(50秒或更长时间),这将是一个可接受的解决方案。
根据我对.aac文件编码的了解,除非下载了所有单独的数据包,否则无法开始播放。貌似,本机AVPlayer可以运行,preferredForwardBufferDuration
并且automaticallyWaitsToMinimizeStalling
应该允许我在完整文件下载之前配置回放,但这似乎对我也不起作用。
我在这里检查了一个苹果论坛线程,该线程也无法解决:
https://forums.developer.apple.com/thread/63435
有谁解决了这个问题?
好吧,我通过将AVURLAssetPreferPreciseDurationAndTimingKey
.aac文件的bool设置为false / NO来解决了缓慢的加载时间。
这是一个精确的修复程序,专门针对iOS应用中此文件类型的缓慢加载时间而进行的权衡取舍,即在整个下载完成之前,无法在文件中向后和向前搜索。用苹果说话:
请注意,这种精确度可能需要在使用资源任何部分的操作之前对资源进行额外的解析,具体取决于其容器格式的细节。许多容器格式提供了足够的摘要信息以实现精确的计时,并且不需要额外的解析来为其准备;QuickTime电影文件和MPEG-4文件就是这种格式的示例。其他格式没有提供足够的摘要信息,只有在初步检查文件内容之后,才可能对其进行精确的随机访问。
请参阅此处的完整文档:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句