到目前为止,我只发现下载视频的两个选项--“简历”或“取消”/“暂停”。有没有可能在中间暂停下载视频,然后从它停止的地方继续下载。我正在使用下面的代码下载和存储视频。
// Create new background session configuration.
NSURLSessionConfiguration *urlSessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"assetDowloadConfigIdentifier"];
AVAssetDownloadURLSession *avAssetDownloadSession = [AVAssetDownloadURLSession sessionWithConfiguration:urlSessionConfiguration assetDownloadDelegate:self delegateQueue:[NSOperationQueue mainQueue]];
NSURL *assetURL = [NSURL URLWithString:@"https://a4i6y2k6.stackpathcdn.com/vistvorigin/smil:4b0d690b7b3bc8ac5da2049f50c80794c762423e.smil/playlist.m3u8"];
AVURLAsset *hlsAsset = [AVURLAsset assetWithURL:assetURL];
if (@available(iOS 10.0, *)) {
AVAssetDownloadTask *avAssetDownloadTask = [avAssetDownloadSession assetDownloadTaskWithURLAsset:hlsAsset assetTitle:@"downloadedMedia" assetArtworkData:nil options:nil];
if([command isEqualToString:@"resume"]){
// Start task and begin download
[avAssetDownloadTask resume];
}else{
[avAssetDownloadTask cancel];
}
} else {
// Fallback on earlier versions
}发布于 2019-03-14 06:36:05
在这里您可以使用suspend的状态
任务虽然挂起,但不会产生网络流量,也不受超时的影响。下载任务可以在以后继续传输数据。所有其他任务必须在恢复时重新开始。
如果要查找使用state属性的当前任务状态,它将返回当前状态,状态如下
/*
NSURLSessionTaskStateRunning = 0,
NSURLSessionTaskStateSuspended = 1,
NSURLSessionTaskStateCanceling = 2,
NSURLSessionTaskStateCompleted = 3, 例如,你可以像这样使用
NSURL *assetURL = [NSURL URLWithString:@"https://a4i6y2k6.stackpathcdn.com/vistvorigin/smil:4b0d690b7b3bc8ac5da2049f50c80794c762423e.smil/playlist.m3u8"];
AVURLAsset *hlsAsset = [AVURLAsset assetWithURL:assetURL];
if (@available(iOS 10.0, *)) {
AVAssetDownloadTask *avAssetDownloadTask = [avAssetDownloadSession assetDownloadTaskWithURLAsset:hlsAsset assetTitle:@"downloadedMedia" assetArtworkData:nil options:nil];
if(avAssetDownloadTask.state == 1){
// Start task and begin download
[avAssetDownloadTask resume];
}else{
[avAssetDownloadTask cancel];
}
} else {
// Fallback on earlier versions
}选项2
如果您想以KVO模式执行,请参阅此SO past answer。
https://stackoverflow.com/questions/55102764
复制相似问题