AVAggregateAssetDownloadTask 似乎加载了两次 m3u8 文件

AVAggregateAssetDownloadTask seems to load m3u8 file twice

我正在使用此 Apple 示例中的 AssetPersistenceManagerUsing AVFoundation to play and persist http live streams 我用主播放列表 url 创建了一个 AVURLAsset,然后用这个资产调用 downloadStream(for:)AVAggregateAssetDownloadTask 成功完成下载!

它保存了一个名为 286943_chapter_01_C955A55455AC0C4E.movpkg 的文件夹,其中包含下载的片段、我的 .m3u8 文件和一个 StreamInfoBoot.xml 文件。 StreamInfoBook.xml 文件包含本地段(或 .frag)文件和 m3u8 段 URL 之间的引用。

但是,那些 url 是由 Cloudfront 签名和生成的。有时,由于 cloudfrount 的 Expires 参数,.m3u8 文件中的一些 URLs 与 StreamInfoBook.xml 中的 URLs 不匹配。

所以我想也许 AVAggregateAssetDownloadTask 调用 .m3u8 文件 两次 :一次保存 .m3u8 一次下载片段和写 StreamInfoBook.xml

有人遇到过这个问题吗?我该怎么做才能检查我的资产是否可以离线播放? 你有什么建议吗?

这里是一个不匹配段的例子URLs

在.m3u8下载文件中:

https: //ezvoiznbov32f.cloudfront.net/file/265579/audio/chapter_08_10.mp3?Expires=1576159816&Signature=vfAYZ8ivP7yKeiranpba3R24gTSxexX4Nb1VjbDrR917pyFQqi2DMMMf8gi3LcueKXxv0FITprXzLXV62Py0Ph4nMxp8ixf5qG5sYnW1JcO74BxNfJE~DEurN~yQgczNBOK4b~bEXrDDZId1AweYJrgjZtjSoyUwAGXf~LA_&Key-Pair- Id=APKAAFEFNOSQQ34Q

StreamInfoBook.xml 文件中:

https: //ezvoiznbov32f.cloudfront.net/file/265579/audio/chapter_08_10.mp3?Expires=1576159817&Signature=PZ~tqOeIa3Vm26qKTFYU1LCGfvsWNpkUDMi3eFr~EhyRTLj66CDInSwfpoorYjl4Kl4B9eQ1W8ZzTlIMDGvs36wJ235JOszeov23IuIOzAJTlNw7zQYEd4Y1tq~nyZinpFoyDRGk0CelKOhH91Itb3rpQUeMN6lDhO-cq1X1OM_&Key-Pair- Id=APKAAFEFNOSQQ34Q

我正在测试 iOS 13.2

嗯,回答我自己:

在应用程序被系统杀死时试图让 AVAggregateAssetDownloadTask 在后台运行很长时间后,我终于切换到 AVAssetDownloadTask

现在一切正常!就像魔术一样!

聚合任务和普通任务的区别在于媒体选择。但是暂时不需要....