AVAggregateAssetDownloadTask 似乎加载了两次 m3u8 文件
AVAggregateAssetDownloadTask seems to load m3u8 file twice
我正在使用此 Apple 示例中的 AssetPersistenceManager
:Using 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
。
现在一切正常!就像魔术一样!
聚合任务和普通任务的区别在于媒体选择。但是暂时不需要....
我正在使用此 Apple 示例中的 AssetPersistenceManager
:Using 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
。
现在一切正常!就像魔术一样!
聚合任务和普通任务的区别在于媒体选择。但是暂时不需要....