我正在尝试Apple的HLS离线功能,以尝试从事件播放列表本地下载和播放视频。但是,我只能在视频点播播放列表时离线下载和播放视频。问题是:离线HLS是否仅支持VOD播放列表?
关于我的环境的一些上下文:
- 我依靠此示例代码来下载和播放我的视频。
- 视频播放得很好。
- 下载开始后立即调用委托方法
URLSession:assetDownloadTask:didFinishDownloadingToURL:
,这令人惊讶。这就是让我认为它不受支持的原因。
3.1 检查该 URL ^^,它指向一个movpkg
文件,但在应用容器上找不到任何内容。 - 下载几秒钟后,我调用 playOfflineAsset(),但
AVAssetCache
isPlayableOffline
总是false
。除非它是true
的 VOD 播放列表。 - 我正在本地网络中流式传输。所以,如果这是一个版权问题,并且许可规则可以因在本地网络中而弯曲,那就是我可以做的事情。
更新
我从URLSessionTaskDelegate
覆盖了urlSession(URLSession, task: URLSessionTask, didCompleteWithError: Error?)
,并且错误地调用了它:
=AVFoundation错误域代码=-11800"无法完成操作" UserInfo={NSLocalizedFailureReason=发生未知错误 (-16655),NSLocalizedDescription=无法完成操作}
这就解释了为什么3.从上面发生得这么早。因为请求实际上失败了。这可能证实了 HLS 离线不适用于事件或实时播放列表。无论如何,如果有人有一些事实可以支持这一点,如果可以分享它们,我将不胜感激。
我联系了一位Apple AVFoundation工程师,他确认离线HLS仅适用于VOD播放列表(从iOS 11.2开始)。