2012-04-03 3 views
4

Следующий код - сохранить изображение, взятое с камеры в фотоальбом.Как сохранить записанное видео в фотоальбом?

if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) 
    { 
     image = [info objectForKey:UIImagePickerControllerEditedImage]; 
     UIImageWriteToSavedPhotosAlbum(image, self, 
             @selector(image:finishedSavingWithError:contextInfo:), 
             nil); 
    } 

Как сохранить перекодированное видео в фотоальбом?

+2

[UISaveVideoAtPathToSavedPhotosAlbum] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIKitFunctionReference/Reference/reference.html#//apple_ref/c/func/UISaveVideoAtPathToSavedPhotosAlbum) – Hemang

ответ

19

Проверить код ниже ...

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 



    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType]; 
     if ([mediaType isEqualToString:@"public.movie"]){   
       // Saving the video/// Get the new unique filename 
       NSString *sourcePath = [[info objectForKey:@"UIImagePickerControllerMediaURL"]relativePath]; 
        UISaveVideoAtPathToSavedPhotosAlbum(sourcePath,nil,nil,nil); 

} 
+0

я Запись видео , не беру из какого-либо файла – Shreedhar

+0

, где вы используете путь назначения – Shreedhar

+0

Я отредактировал сообщение. Пожалуйста, посмотрите на это сейчас. –

0

Try ниже код

- (void)saveVideo:(NSURL *)videoUrl { 
    NSData *videoData = [NSData dataWithContentsOfURL:videoUrl]; 
    [videoData writeToFile:@"YOUR_PATH_HERE" atomically:YES]; 
    }  

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

     if ([type isEqualToString:(NSString *)kUTTypeVideo] || 
      [type isEqualToString:(NSString *)kUTTypeMovie]) { // movie != video 
      NSURL *videoURL [mediaDict objectForKey:UIImagePickerControllerMediaURL]; 
      [self saveVideo:videoUrl]; 
     } 

    } 

или вы можете попробовать это также Сохранение видео к документам каталог выглядит следующим образом

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 


    NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL]; 

    NSData *videoData = [NSData dataWithContentsOfURL:videoURL]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *tempPath = [documentsDirectory stringByAppendingFormat:@"/vid1.mp4"]; 

    BOOL success = [videoData writeToFile:tempPath atomically:NO]; 


    [picker dismissModalViewControllerAnimated:YES]; 
    } 
1
- (void)saveMovieToCameraRoll 
{ 
    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 
    [library writeVideoAtPathToSavedPhotosAlbum:movieURL 
           completionBlock:^(NSURL  *assetURL, NSError *error) { 
            if (error) 
             [self  showError:error]; 
            else 
             [self  removeFile:movieURL]; 

             dispatch_async(movieWritingQueue, ^{ 
              recordingWillBeStopped = NO; 
              self.recording = NO; 

              [self.delegate recordingDidStop]; 
            }); 
           }]; 
    [library release]; 
} 

Это фрагмент кода из примера apple royswriter. Хорошо.

 movieURL = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@%@", NSTemporaryDirectory(), @"Movie.MOV"]]; 
     [movieURL retain]; 

Вышеуказанные строки, чтобы создать файл и путь для видео.

- (void) startRecording 
{ 
    dispatch_async(movieWritingQueue, ^{ 

     if (recordingWillBeStarted || self.recording) 
      return; 

     recordingWillBeStarted = YES; 

     // recordingDidStart is called from  captureOutput:didOutputSampleBuffer:fromConnection: once the asset writer is setup 
     [self.delegate recordingWillStart]; 

     // Remove the file if one with the same name already exists 
     [self removeFile:movieURL]; 

     // Create an asset writer 
     NSError *error; 
     assetWriter = [[AVAssetWriter alloc] initWithURL:movieURL fileType:(NSString *)kUTTypeQuickTimeMovie error:&error]; 
     if (error) 
      [self showError:error]; 
    }); 
} 

Эта функция используется для начала записи видео в этот файл movieURL с использованием avassetwriter.

Смежные вопросы