昨日友達とこの問題を解決しました。私たちが使ったコードは、基本的にNSURLSessionビルトインキャッシングシステムを使ってビデオデータを保存します。ここにあります:
NSURLSession *session = [[KHURLSessionManager sharedInstance] session];
NSURLRequest *req = [[NSURLRequest alloc] initWithURL:**YOUR_URL**];
[[session dataTaskWithRequest:req completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
// generate a temporary file URL
NSString *filename = [[NSUUID UUID] UUIDString];
NSURL *temporaryDirectoryURL = [NSURL fileURLWithPath:NSTemporaryDirectory() isDirectory:YES];
NSURL *fileURL = [[temporaryDirectoryURL URLByAppendingPathComponent:filename] URLByAppendingPathExtension:@"mp4"];
// save the NSData to that URL
NSError *fileError;
[data writeToURL:fileURL options:0 error:&fileError];
// give player the video with that file URL
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:fileURL];
AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];
_avMovieViewController.player = player;
[_avMovieViewController.player play];
}] resume];
第2に、NSURLSessionのキャッシュ設定を設定する必要があります。私KHURLSessionManagerは、次のコードでこれの世話をする:
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
config.requestCachePolicy = NSURLRequestReturnCacheDataElseLoad;
_session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:[NSOperationQueue mainQueue]];
最後に、あなたはあなたのキャッシュファイルのために十分な大きさであることを確認する必要があり、私はAppDelegateに次のように置きます。
[NSURLCache sharedURLCache].diskCapacity = 1000 * 1024 * 1024; // 1000 MB
これが役に立ちます。
あなたはこれを行う方法を理解しましたか? – user3344977