tvOS shouldWaitForLoadingOfRequestedResource请求相同的资源

时间:2016-09-30 08:28:04

标签: avplayer avurlasset tvos10

我正在为shouldWaitForLoadingOfRequestedResource / AVPlayer HLS视频实施AVURLAsset处理程序,并在tvOS中发现了一种奇怪的行为。

我认为它可以多次请求相同的资源,包括“root”清单,二级清单和段(我说的不是多个质量开关,它要求完全相同的资源)。

同时,每个请求都能很好地提供我的代码 - 视频播放效果很好。 此外,完全相同的代码在iOS中运行良好 - 没有重复的请求。

在哪些情况下,AVURLAsset / AVAssetResourceLoader可以在tvOS中多次请求相同的资源?

1 个答案:

答案 0 :(得分:1)

我有同样的问题 我可以补充一点,我使用的是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(_:shouldWaitForLoadingOfRequestedResource :)被调用   在AssetLoaderDelegate中使用loadingRequest:    {URL:   skd:// 817015000008100f172b492d3b25f5dda31c59d090b21000},请求   ID = 3,内容信息请求=   AVAssetResourceLoadingContentInformationRequest:0x14f6dd070,内容   type ="(null)",内容长度= 0,支持字节范围访问= NO,   允许磁盘缓存= NO,续订日期=(null),数据请求=   AVAssetResourceLoadingDataRequest:0x14f67ae50,请求的偏移量= 0,   请求长度= 9223372036854775807,请求所有数据结束   resource = YES,当前偏移量= 0

每次打印中的值request ID都不同时,我都可以看到