2

私はvideoPickerControllerを使ってビデオを記録しています。 imagePickerController:didFinishPickingMediaWithInfo:機能では、私は、以前に定義されたMPMoviePlayerControllerにビデオを設定しようとしている:これは正常に動作していると、映像が実際に再生されているMPMoviePlayerControllerは新しく保存されたビデオファイルを再生しません。

if ([mediaType isEqualToString:(NSString *)kUTTypeMovie]){ 
    NSURL *movieUrl = [info objectForKey:UIImagePickerControllerMediaURL]; 
    [self.moviePlayer setContentURL:movieUrl]]; 
} 

。 しかし、後で使用するためにファイルを保存します。私はこれを行うとのMoviePlayerのための保存されたファイルを使用すると、何も起こりません:

  • 私は

    NSString *directory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *newPath = [directory stringByAppendingPathComponent:@"myMovie.mov"]; 
    NSData *videoData = [NSData dataWithContentsOfURL:movieUrl]; 
    [videoData writeToFile:newPath atomically:NO]; 
    [self.moviePlayer setContentURL:[NSURL URLWithString:newPath]]; 
    
  • または本(コピー(新しいファイルにデータを保存する)、これを試してみました私のドキュメントフォルダに一時ビデオファイル)任意の成功なし

    NSString *directory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *newPath = [directory stringByAppendingPathComponent:@"myMovie.mov"]; 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSError *error = nil; 
    [fileManager copyItemAtPath:[videoUrl path] toPath:newPath error:&error]; 
    [self.moviePlayer setContentURL:[NSURL URLWithString:newPath]]; 
    

、にもかかわらず、ファイル10は存在します...私は間違って何をしていますか?

+0

はファイル完了書き込みをしていますか?再生時に1秒間またはそれ以上の再生時間でタイマーディレイを設定して、ビデオ再生を許可するかどうか確認してください。 – Purpletoucan

+0

まあ、私は追加しようとしました:NSLog(@ "存在:%@"、[fileManager fileExistsAtPath:newPath]?@ "はい":@ "いいえ");ログは「はい」です。また、私が待っていて、newPathのファイルをself.movi​​ePlayerに設定しようとすると、何も起こりません。 – Johann

答えて

10

私はついにこの問題を発見しました。問題はMPMoviePlayerControllerと実際ではなくラインではなかった。他の誰かを助ける

[self.moviePlayer setContentURL:[NSURL fileURLWithPath:newPath isDirectory:NO]]; 

希望:

[self.moviePlayer setContentURL:[NSURL URLWithString:newPath]]; 

は、私はその行を置き換えることによって、それを修正しました!

+0

Thx:D but WTH !! isDirectory:S UGH:S – Omarj

+2

@Johannもし私が神なら、あなたはこの投稿のために天国に行くだろう。ありがとうございました。 –

+0

私は試しましたが、うまくいきませんでした。私は約20%のmp3ファイルをダウンロードし、80%のダウンロードを続けながら再生します。プレイヤーは20%までプレイしてから停止することができます。 – Bkillnest

1

は、以下のコードを使用する:あなたが戻ってビデオを再生しようとする前に

NSData *movieData; 
    NSError *dataReadingError = nil;   
    movieData = [NSData dataWithContentsOfURL: movieURL options:NSDataReadingMapped error:&dataReadingError];   
    if(movieData != nil)   
     NSLog(@"Successfully loaded the data."); 
    else   
     NSLog(@"Failed to load the data with error = %@", dataReadingError); 
関連する問題