Ios 是否可以在不下载整个文件的情况下开始播放大型.aac文件?

Ios 是否可以在不下载整个文件的情况下开始播放大型.aac文件?,ios,swift,avfoundation,avplayer,aac,Ios,Swift,Avfoundation,Avplayer,Aac,我正在尝试在iOS应用程序中开始播放大型.aac文件,或者大幅缩短下载时间,以便可以更早开始播放。这似乎是.aac文件的一个特殊特性 在Safari和Chrome等web浏览器中,持续时间不正确,清理效果不好(Chrome),或者仅限于从一开始就进行增量搜索(Safari),但播放仍然很快开始。iOS中基于AVFoundation的播放器似乎无法做到这一点。虽然我喜欢清理功能,但对于较大的.aac文件,只要能够以高稳定性开始播放,并且没有明显的延迟(50秒或更长),这将是一个可接受的解决方案 根

我正在尝试在iOS应用程序中开始播放大型.aac文件,或者大幅缩短下载时间,以便可以更早开始播放。这似乎是.aac文件的一个特殊特性

在Safari和Chrome等web浏览器中,持续时间不正确,清理效果不好(Chrome),或者仅限于从一开始就进行增量搜索(Safari),但播放仍然很快开始。iOS中基于AVFoundation的播放器似乎无法做到这一点。虽然我喜欢清理功能,但对于较大的.aac文件,只要能够以高稳定性开始播放,并且没有明显的延迟(50秒或更长),这将是一个可接受的解决方案

根据我对.aac文件编码的理解,只有在下载完所有单独的数据包后才能开始播放。看起来,本机AVPlayer函数
preferredForwardBufferDuration
automaticallyWaitsToMinimizeStalling
应该允许我在下载完整文件之前配置播放,但这似乎对我也不起作用

我在这里查看了一个苹果论坛的帖子,该帖子也未解决:


有人解决了这个问题吗?

我使用了下面的第三方框架,并且运行良好。我希望它对你有用:)


我通过将.aac文件的
avurlassetpreferprecuriseduration和计时键设置为false/NO,解决了加载时间慢的问题

这是一个精确的修复程序,专门针对iOS应用程序中这种文件类型的缓慢加载时间,其折衷是,在整个下载完成之前,在文件中向后和向前搜索是不起作用的。用苹果的话说:

请注意,这种精度可能需要在使用资源的任何部分的操作之前对资源进行额外的解析,这取决于其容器格式的具体情况。许多容器格式为精确计时提供了足够的摘要信息,不需要额外的解析来准备;QuickTime电影文件和MPEG-4文件就是此类格式的示例。其他格式无法提供足够的摘要信息,只有在对文件内容进行初步检查后,才能对其进行精确的随机访问

请参见此处的完整文档:


谢谢你,米蒂什。这个库有助于查看,但似乎不支持,所以不适合应用程序。如果可能的话,考虑将文件转换成HLS音频。