0

UIImagePickerControllerで2つのビデオを録画しようとしています。すべて正常に動作していますが、2番目の動画を録画すると、最初に録画した動画のパスが上書きされているようです。
両方のビデオをサーバーにアップロードする必要がありますが、アップロード中に最初のビデオパスがなくなり、アプリケーションがクラッシュしました。別のパスに2番目のビデオを記録する方法はありますか?UIImagePickerControllerでの2番目のビデオ録画は、最初のビデオ録画のパスをオーバーライドします。

ビデオパスを次のようにここで

  1. /private/var/mobile/Containers/Data/Application/1465EC90-4B57-41FF-996E-0CCB7713ECE7/tmp/50332801315__A883E4DB-ED72-4D31-9564-22FB363779BD.MOV

  2. /private/var/mobile/Containers/Data/Application/1465EC90-4B57-41FF-996E-0CCB7713ECE7/tmp/50332802324__F11733AD-EB62-426D-BA1C-7E87D2BF66D0.MOV

は私のimagePickerデリゲートコードです:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType]; 

if (CFStringCompare ((__bridge CFStringRef) mediaType, kUTTypeMovie, 0) == kCFCompareEqualTo) { 
    NSURL *videoUrl = (NSURL*)[info objectForKey:UIImagePickerControllerMediaURL]; 
    NSString *moviePath = [videoUrl path]; 

    if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath)) { 
     UISaveVideoAtPathToSavedPhotosAlbum (moviePath, nil, nil, nil); 
    } 

    NSLog(@"videoUrl: %@", videoUrl); 
    NSLog(@"moviePath: %@", moviePath); 

    // self.moviePath_1 = @""; 
    // self.moviePath_2 = @""; 

    NSLog(@"picker.title: %@", picker.title); 
    if ([picker.title isEqualToString:@"Video_1"]) { 
     self.moviePath_1 = moviePath; 
     self.video_1 = YES; 
     NSLog(@"self.moviePath_1: %@", self.moviePath_1); 
     self.video_1_Data = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:self.moviePath_1]]; 
     NSLog(@"Video_1 Size: %@",[NSByteCountFormatter stringFromByteCount:self.video_1_Data.length countStyle:NSByteCountFormatterCountStyleFile]); 

     [self setupAndPlayback:@"Video_1"]; 

    } else { 
     self.moviePath_2 = moviePath; 
     self.video_2 = YES; 
     NSLog(@"self.moviePath_2: %@", self.moviePath_2); 
     self.video_2_Data = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:self.moviePath_2]]; 
     NSLog(@"Video_2 Size: %@",[NSByteCountFormatter stringFromByteCount:self.video_2_Data.length countStyle:NSByteCountFormatterCountStyleFile]); 

     [self setupAndPlayback:@"Video_2"]; 

    } 
} 

[self dismissViewControllerAnimated:YES completion:nil]; 
} 

答えて

0

異なるパスにビデオを保存します。この問題が起こる理由と同じ経路を上書きしています。タイムスタンプを追加するか、パスで番号を増やして保存します。

self.moviePath_1 = [NSString stringWithFormat: @"%@-%d.png", moviePath, num] ; 
num += 1; // for next time 
関連する問題