尝试了 iOS13.0 和 iOS13.1,但仍然无法正常工作,我尝试了 AVAggregateAssetDownloadTask 和 AVAssetDownloadURLSession,但都没有工作。没有任何委托(delegate)被调用来告诉我完成错误,我发现下载的缓存只有 25Kb,大小不正确。
错误是:
Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo={NSLocalizedDescription=The operation could not be completed, _NSURLErrorFailingURLSessionTaskErrorKey=BackgroundAVAssetDownloadTask <AFDCA3CC-FA49-488B-AB16-C74425345EE4>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"BackgroundAVAssetDownloadTask <AFDCA3CC-FA49-488B-AB16-C74425345EE4>.<1>"
), NSLocalizedFailureReason=An unknown error occurred (-16654)}
最佳答案
发现AVAssetDownloadURLSession
只能下载主播放列表结构包含codec
属性的HLS到EXT-X-STREAM-INF
m3u8 meta iOS 13+。
我不知道这是错误还是功能限制。
(m3u8 meta没有CODECS
属性可以用AVFoundation
播放,但是不能用AVAssetDownloadURLSession
下载)
无论如何,解决办法是:
如果您有 HLS 主播放列表:
将 CODECS
属性添加到 m3u8 元中的 #EXT-X-STREAM-INF
中。
例如
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=63701,CODECS="mp4a.40.34"
playlist.m3u8
如果您还没有 HLS 主播放列表:
即使您不支持自适应流媒体,您也必须制作一个主播放列表。
主播放列表是唯一可以包含 #EXT-X-STREAM-INF
因此 CODECS
属性的 m3u8。
关于ios - AVAssetDownloadTask iOS13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58182120/