Gerade an diesem Problem mit einem Freund gestern gearbeitet. Der verwendete Code verwendet im Wesentlichen das integrierte Caching-System NSURLSession, um die Videodaten zu speichern. Hier ist sie:
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];
Zweitens müssen Sie die Cache-Konfiguration für die NSURLSession einzustellen. Meine KHURLSessionManager kümmert sich um diese mit dem folgenden Code:
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
config.requestCachePolicy = NSURLRequestReturnCacheDataElseLoad;
_session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:[NSOperationQueue mainQueue]];
Schließlich sollten Sie sicherstellen, dass Ihr Cache ist groß genug für die Dateien, habe ich folgendes in meinem AppDelegate.
[NSURLCache sharedURLCache].diskCapacity = 1000 * 1024 * 1024; // 1000 MB
Hoffe, das hilft.
Haben Sie jemals herausgefunden, wie das geht? – user3344977