我從用戶照片庫中選取視頻,然後將視頻保存在用戶Documents文件夾中,以便即使用戶從他的照片庫中刪除此視頻也能播放視頻。該文件的URL存儲在覈心數據中。 一切正常,直到下次運行應用程序。不知何故,它似乎不再有效,這是奇怪的,因爲我可以在[AVPlayer playerWithURL:videoURL]失敗時刪除視頻文件。 這裏是我挑的視頻網址:AVPlayer playerWithURL在應用程序重新啓動後無法工作
- (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];
很多感謝提前!
謝謝,馬特!在每個會話中找到指向文檔文件夾的基本URL的最正確方法是什麼? – Mig70
正如你所做的那樣。您只需在每次需要訪問文檔目錄時重新計算'documentsDirectory'。 :)它會在應用程序運行過程中持續存在,但僅此而已。 – matt