2017-11-09 8 views
0

私はビデオをドキュメントディレクトリに保存して再試行しようとしています。ビデオをオフラインで保存してオフラインで再生できる場合は、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 iは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迅速な対応を心がけています。あなたのplayerVCこの行で

+0

である必要があり、この行は 'もしべきではありません([ファイルマネージャfileExistsAtPath:フルパス])'([ファイルマネージャfileExistsAtPath場合 'こと:filepath]) '? 'mp4'が実際に存在することを知っていますか? – Flexicoder

答えて

0

...

NSURL *fileUrl = [NSURL URLWithString:self.comingString]; 

[NSURL fileURLWithPath:self.comingString]; 
+0

フレキシブルにお使いいただきありがとうございます。 –

+0

@SatheeshkumarNaiduがこの回答をあなたの質問にしましたか?もしそうなら、他の人が見られるように答えてください。あなたのコメントは別の質問のように聞こえます。 – Flexicoder

関連する問題