【问题标题】:Save a Video that I record in my app保存我在我的应用中录制的视频
【发布时间】:2011-11-29 00:08:06
【问题描述】:

我在学习过程中成功地理解了如何制作相机应用程序:-)

我唯一坚持的就是保存我录制的视频。我可以保存照片,但不能保存视频。

所以我想在 iBrad Apps 的帮助下我几乎可以做到。

得到这个代码:

-(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);
}}}

我有一个 if 语句,因为该应用可以拍摄视频和静止图像。

第一部分仍然适用 - 有效,然后第二部分我仍在学习:-)

【问题讨论】:

    标签: ios video sdk camera


    【解决方案1】:

    试试这个:

    UISaveVideoAtPathToSavedPhotosAlbum(moviepath,nil,nil,nil);
    

    编辑:试试这个并将你的代码修改为这个方法:

    // 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];
    }
    

    【讨论】:

    • 听起来我是对的——我添加了一些代码来展示我在做什么——干杯
    • 检查movie是否为nil或newMedia是否为nil。
    • 抱歉,这是问题还是答案? newMedia 是一个布尔值,所以我认为它应该是 nil - 这样它就可以保存剪辑吗?也许我在这里走错了路。
    • 检查这两个对象是否存在,然后我们将从那里开始工作。
    • IBOutlet UIImageView *videoRecorder2;布尔新媒体;它们在我的 .h 文件中 - 它们呈绿色,因此它可以识别它们。
    猜你喜欢
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    相关资源
    最近更新 更多