【问题标题】:AVAggregateAssetDownloadTask seems to load m3u8 file twiceAVAggregateAssetDownloadTask 似乎加载了两次 m3u8 文件
【发布时间】:2020-04-06 03:25:06
【问题描述】:

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

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

但是,这些 url 由 Cloudfront 签名和生成。有时,.m3u8 文件中的某些 URL 与 StreamInfoBook.xml 中的 URL 不匹配,因为 cloudfrount 的 Expires 参数。

所以我认为AVAggregateAssetDownloadTask 可能正在调用.m3u8 文件两次:一次是保存.m3u8,一次是下载片段并写入StreamInfoBook.xml

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

这是一个不匹配分段 URL 的示例

在 .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 进行测试

【问题讨论】:

    标签: ios avfoundation avurlasset


    【解决方案1】:

    好吧,回答我自己:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-02-15
      • 2022-12-24
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-05
      • 2013-02-04
      相关资源
      最近更新 更多