【发布时间】:2017-09-29 18:17:38
【问题描述】:
我从用户照片库中挑选了一个视频,然后我将视频保存在用户文档文件夹中,以便即使用户从他的照片库中删除该视频也能够播放该视频。该文件的 URL 存储在 Core Data 中。 一切正常,直到我下次运行该应用程序。不知何故,该 URL 似乎不再有效,这很奇怪,因为当 [AVPlayer playerWithURL:videoURL] 失败时我能够删除视频文件。 以下是我选择视频 URL 的方式:
- (void) imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
NSURL* videoURL = info[UIImagePickerControllerMediaURL];}
这就是我保存视频的方式:
+ (NSURL*) saveVideoInDocumentsFolder:(NSURL*)videoURL name:(NSString*)name {
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
NSString* pathComponent = [NSString stringWithFormat:@"/%@.%@", name, [videoURL pathExtension]];
NSString* path = [documentsDirectory stringByAppendingPathComponent:pathComponent];
NSError* error = nil;
NSData* videoData = [NSData dataWithContentsOfURL:videoURL options:0 error:&error];
if (error)
return nil;
BOOL success = [videoData writeToFile:path options:NSDataWritingAtomic error:&error];
if (success)
return [NSURL fileURLWithPath:path];
return nil;}
这就是我播放视频的方式:
AVPlayer* player = [AVPlayer playerWithURL:videoURL]; // <- AFTER I RESTART THE APP THIS METHOD ALWAYS RETURNS nil!!
AVPlayerViewController* viewController = [[AVPlayerViewController alloc] init];
[self presentViewController:viewController animated:YES completion:nil];
viewController.player = player;
[player play];
非常感谢!
【问题讨论】:
标签: objective-c avplayer nsurl