문서 디렉토리에 비디오를 저장하고 다시 재생하려고합니다. 오프라인에서 비디오를 저장하고 오프라인에서 재생할 때 youtube 또는 hotstar와 같은 응용 프로그램을 수행하고 있습니다.MPMoviePlayerViewController를 사용하여 문서 디렉토리의 비디오
1 단계 : api에서 비디오 URL을 가져 오는 중입니다.이 코드를 사용하여 데이터를 문서 디렉토리로 저장합니다. 사용자가 오프라인에있을 때
-(void)downloadVideoAndSave :(NSString*)videoUrl videoname:(NSString *)name
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"Downloading Started");
NSString *urlToDownload =videoUrl;
NSURL *url = [NSURL URLWithString:urlToDownload];
NSData *urlData = [NSData dataWithContentsOfURL:url];
if (urlData)
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@%@", documentsDirectory,name,@".mp4"];
//saving is done on main thread
dispatch_async(dispatch_get_main_queue(), ^{
[urlData writeToFile:filePath atomically:YES];
NSLog(@"File Saved !");
});
}
});
}
2.now은 내가 workingout.I가 그렇게하기 위해 아래의 코드를 사용하고 있지 문서 디렉토리에서 비디오와 내가 그들을 사용 창백한하려고 MPMoviePlayerViewController.but가 있음을 얻고있다
NSURL *fileUrl = [NSURL URLWithString:self.comingString];
self.moviePlayerViewController = [[MPMoviePlayerViewController alloc]initWithContentURL:fileUrl];
self.moviePlayerViewController.moviePlayer.fullscreen = NO;
[self.moviePlayerViewController.moviePlayer play];
self.moviePlayerViewController.moviePlayer.repeatMode = NO;
self.moviePlayerViewController.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
[self.view addSubview:self.moviePlayerViewController.view];
[self presentViewController:self.moviePlayerViewController animated:NO completion:nil];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(playFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
날이 문제를 해결하는 데 도움이 제발 내가 만드는 중이라서 어디 mistake.Please가 그 경우에 표시를 해달라고하여 nextvc mpmoviewolayer 3.In
-(void)playVideo:(UIButton*)sender {
NSURL *vedioURL;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSArray *filePathsArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:documentsDirectory error:nil];
NSLog(@"files array %@", filePathsArray);
NSString *fullpath;
Store *info=[savedData objectAtIndex:sender.tag];
NSString *videonamestr= info.videoname;
NSString *videofillname=[NSString stringWithFormat:@"/%@.mp4",videonamestr];
NSString *filePath = [NSString stringWithFormat:@"%@/%@%@", documentsDirectory,videonamestr,@".mp4"];
//fullpath = [documentsDirectory stringByAppendingPathComponent:videofillname];
// vedioURL =[NSURL fileURLWithPath:fullpath];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath: fullpath]) //4
{
NSLog(@"videoexists");
//NSString *bundle = [[NSBundle mainBundle] pathForResource:filename ofType:@"plist"]; //5
//[fileManager copyItemAtPath:bundle toPath:path error:&error]; //6
}
// for (NSString *apath in filePathsArray)
// {
// fullpath = [documentsDirectory stringByAppendingPathComponent:apath];
// vedioURL =[NSURL fileURLWithPath:fullpath];
// }
NSLog(@"vurl %@",filePath);
// for (Store *items in savedData) {
// [self downloadVideoAndSave:items.videopath];
// NSLog(@"\n mobile data %@\n",items.videopath);
//
UIStoryboard *story=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
PlayerViewController *playerVC=[story instantiateViewControllerWithIdentifier:@"playerViewController"];
playerVC.comingString = filePath;
[self presentViewController:playerVC animated:NO completion:nil];
// }
}
하십시오 ANSW 빠른 응답을 주셔서 감사합니다. ``이 될 경우 ([파일 관리자 fileExistsAtPath :
NSURL *fileUrl = [NSURL URLWithString:self.comingString];
이
[NSURL fileURLWithPath:self.comingString];
해서는 안이 줄'경우 ([fullpath에 파일 관리자 fileExistsAtPath])해야 당신 playerVC이 라인에서 – Flexicoder