我正在为AVPlayer
/AVURLAsset
HLS视频实现shouldWaitForLoadingOfRequestedResource
处理程序,并发现tvOS中的奇怪行为。
正如我看到的,它可以多次请求相同的资源,包括"根"清单,二级清单和段(我说的不是多个质量开关,它请求完全相同的资源)。
同时,每个请求都被我的代码很好地服务-视频播放良好。同样,同样的代码在iOS中也能很好地工作——没有重复的请求。
在哪些情况下AVURLAsset
/AVAssetResourceLoader
可以在tvOS中多次请求相同的资源?
我有同样的问题我可以添加我正在使用apple示例应用程序
public func resourceLoader(_ resourceLoader: AVAssetResourceLoader, shouldWaitForLoadingOfRequestedResource loadingRequest: AVAssetResourceLoadingRequest) -> Bool {
print("(#function) was called in AssetLoaderDelegate with loadingRequest: (loadingRequest)")
var ret : Bool = true
ret = shouldLoadOrRenewRequestedResource(resourceLoadingRequest: loadingRequest)
return ret
}
这是我得到的调试打印:
resourceLoader(_: shouldwaitforloadingfrequestedresource:)被调用在AssetLoaderDelegate中添加loadingRequest:{网址:skd://817015000008100f172b492d3b25f5dda31c59d090b21000},请求ID = 3,内容信息请求=AVAssetResourceLoadingContentInformationRequest: 0x14f6dd070, contenttype = "(null)",内容长度= 0,支持的字节范围访问= NO,磁盘缓存允许= NO,更新日期= (null),数据请求=AVAssetResourceLoadingDataRequest: 0x14f67ae50,请求偏移量= 0,请求的长度= 9223372036854775807,请求的所有数据到结束资源= YES,当前偏移量= 0
我可以看到每次打印的request ID
值都是不同的