1

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

正如我所看到的,它可以多次请求相同的资源,包括“根”清单、二级清单和段(我说的不是多个质量切换,它请求完全相同的资源)。

同时,我的代码为每个请求提供了足够好的服务——视频播放良好。此外,完全相同的代码在 iOS 中运行良好——没有重复的请求。

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

4

1 回答 1

1

我有同样的问题我可以补充说我正在使用苹果示例应用程序

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: 0x14f6dd00", content type, "( , 字节范围访问支持 = NO, 磁盘缓存允许 = NO, 更新日期 = (null), 数据请求 = AVAssetResourceLoadingDataRequest: 0x14f67ae50, 请求偏移量 = 0, 请求长度 = 9223372036854775807, 请求所有数据到资源末尾 = YES, 当前偏移量= 0

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

于 2016-10-13T07:39:25.857 回答