2011-11-29 8 views
8

mam sukces w zrozumieniu jak zrobić aplikację kamery w mojej podróży uczenia :-)Zapisz film, który mogę nagrywać w moim app

Jedyną rzeczą siedzę z zapisywania wideo, które mam nagrane. Mogę zapisać zdjęcie, ale to samo nie działa w przypadku filmów.

Sądzę, że prawie udało mi się to osiągnąć dzięki aplikacjom iBrad.

dostał ten kod:

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

[self dismissModalViewControllerAnimated:YES]; 

if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) { 
    UIImage *image = [info 
         objectForKey:UIImagePickerControllerOriginalImage]; 

    imageView.image = image; 

    if (newMedia) 
     UIImageWriteToSavedPhotosAlbum(image, 
             self, 
             @selector(image:finishedSavingWithError:contextInfo:), 
             nil); 
} 
else{ 

    if ([mediaType isEqualToString:(NSString *)kUTTypeMovie]) { 
     UIImage *movie = [info 
          objectForKey:UIImagePickerControllerQualityTypeHigh]; 

     videoRecorder2.image = movie; 

      if (newMedia) 
       UISaveVideoAtPathToSavedPhotosAlbum(movie, 
               self, 
               @selector(movie:finishedSavingWithError:contextInfo:), 
               nil); 
}}} 

mam if ponieważ aplikacja może wziąć zarówno wideo i zdjęć.

Pierwsza część jest nadal - co działa, a następnie druga część nadal jestem Tutu-ing z :-)

Odpowiedz

18

Spróbuj tego:

UISaveVideoAtPathToSavedPhotosAlbum(moviepath,nil,nil,nil); 

Edycja: Spróbuj i zmodyfikować kod do tej metody:

// For responding to the user tapping Cancel. 
- (void) imagePickerControllerDidCancel: (UIImagePickerController *) picker { 

    [[picker parentViewController] dismissModalViewControllerAnimated: YES]; 
    [picker release]; 
} 

// For responding to the user accepting a newly-captured picture or movie 
- (void) imagePickerController: (UIImagePickerController *) picker 
      didFinishPickingMediaWithInfo: (NSDictionary *) info { 

    NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType]; 
    UIImage *originalImage, *editedImage, *imageToSave; 

    // Handle a still image capture 
    if (CFStringCompare ((CFStringRef) mediaType, kUTTypeImage, 0) 
      == kCFCompareEqualTo) { 

     editedImage = (UIImage *) [info objectForKey: 
        UIImagePickerControllerEditedImage]; 
     originalImage = (UIImage *) [info objectForKey: 
        UIImagePickerControllerOriginalImage]; 

     if (editedImage) { 
      imageToSave = editedImage; 
     } else { 
      imageToSave = originalImage; 
     } 

    // Save the new image (original or edited) to the Camera Roll 
     UIImageWriteToSavedPhotosAlbum (imageToSave, nil, nil , nil); 
    } 

    // Handle a movie capture 
    if (CFStringCompare ((CFStringRef) mediaType, kUTTypeMovie, 0) 
      == kCFCompareEqualTo) { 

     NSString *moviePath = [[info objectForKey: 
        UIImagePickerControllerMediaURL] path]; 

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

    [[picker parentViewController] dismissModalViewControllerAnimated: YES]; 
    [picker release]; 
} 
+0

Brzmi jak I właściwą drogę - dodałem trochę kodu, aby pokazać, co robię - Cheers –

+0

Sprawdź, czy film jest zerowa lub jeśli NewMedia jest zerowa. –

+0

Przepraszamy, to pytanie lub odpowiedź? newMedia to Boolean, więc myślę, że powinno być zero - aby mógł zapisać klip w prawo? może jestem tutaj na niewłaściwym szlaku. –

Powiązane problemy