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

Is it possible to begin playback of large .aac files without downloading the entire file first?

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

在 Safari 和 Chrome 等网络浏览器中,持续时间不正确并且拖放效果不佳 (Chrome) 或仅限于从头开始逐步搜索 (Safari),但回放尽管如此,很快就开始了。我在 iOS 中基于 AVFoundation 的播放器似乎无法开箱即用。虽然我想要擦除功能,但对于较大的 .aac 文件来说,只要能够以高稳定性开始播放并且没有明显的延迟(50 秒或更长时间)就是一个可以接受的解决方案。

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

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

https://forums.developer.apple.com/thread/63435

有人解决过这个问题吗?

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

https://github.com/tumtumtum/StreamingKit

好吧,我通过将 .aac 文件的 AVURLAssetPreferPreciseDurationAndTimingKey 布尔值设置为 false/NO 来解决加载时间缓慢的问题。

这是专门针对 iOS 应用程序中这种文件类型加载时间缓慢的精确修复,但需要权衡的是,在整个下载完成之前,无法在文件中前后搜索。用 Apple 说话:

Note that such precision may require additional parsing of the resource in advance of operations that make use of any portion of it, depending on the specifics of its container format. Many container formats provide sufficient summary information for precise timing and do not require additional parsing to prepare for it; QuickTime movie files and MPEG-4 files are examples of such formats. Other formats do not provide sufficient summary information, and precise random access for them is possible only after a preliminary examination of a file's contents.

在此处查看完整文档:

https://developer.apple.com/documentation/avfoundation/avurlassetpreferprecisedurationandtimingkey?language=objc