NSURLSessions和HLS视频缓存 - 无法删除部分下载

时间:2018-05-22 22:32:51

标签: ios video-streaming hls avassetdownloadtask avassetdownloadstoragemanager

我正在尝试在用户观看时缓存HLS视频流(非实时)。为此,我们设置了一个类似于Apple推荐的AvAssetDownloadTask:

https://developer.apple.com/library/content/documentation/AudioVideo/Conceptual/MediaPlaybackGuide/Contents/Resources/en.lproj/HTTPLiveStreaming/HTTPLiveStreaming.html

此方法效果很好,因为我们可以将url资源从下载任务传递到同时下载和流式传输。

我们希望此下载暂时缓存到应用程序的视频下载部分,这几乎与NSUrlSessionTask委托本身一起工作,除非我们要删除部分数据。

如果下载完成,我们会收到最终下载位置,并可以添加到期时间或稍后手动删除该文件。但是,如果下载仅部分完成,我找不到删除部分下载视频的方法。

我希望取消并使任务无效将清理部分下载但似乎并非如此,上面链接中的更多苹果状态:In the case where a download is canceled, and there is no intention of resuming it, your app is responsible for deleting the portion of the asset already downloaded to a user’s device.

然而,没有任何关于如何实现这一目标的建议。似乎删除这个部分下载应该很容易访问,但还没有找到实现这一目标的方法。

手动迭代视频下载目录似乎也没有显示这些部分下载;但是,在iOS主要设置的应用程序设置的“下载视频”部分中可以看到它们。

想知道是否有其他人已经解决了这个问题,或者有关于如何完成的建议。

1 个答案:

答案 0 :(得分:0)

找到答案,而不是暂停下载任务,一旦我们希望完成部分缓存下载,就需要取消它,然后启动

- (void)URLSession:(NSURLSession *)session assetDownloadTask:(AVAssetDownloadTask *)assetDownloadTask didFinishDownloadingToURL:(NSURL *)location {

提供最终网址。