如何将录制的视频保存到相机胶卷?

时间:2016-04-03 05:48:21

标签: objective-c ios9 video-capture avcapturesession alassetslibrary

我正在尝试使用iPhone相机录制视频并在此blog之后保存到相机胶卷。但是,使用AVCaptureSession,相机会被初始化。但是当尝试将视频保存到相机胶卷时,会出现URL错误。这是我的代码片段

NSString *outputPath = [[NSString alloc] initWithFormat:@"%@%@", NSTemporaryDirectory(), @"myApp.mov"];

            NSURL *outputURL = [NSURL URLWithString:outputPath];
          //  NSLog(@"Output URL  %@ AND ABSOLUTE STRING %@",outputURL,outputURL.absoluteString);
            NSFileManager *fileManager = [NSFileManager defaultManager];
            if ([fileManager fileExistsAtPath:outputPath])
            {
                NSError *error;
                if ([fileManager removeItemAtPath:outputPath error:&error] == NO)
                {
                    //Error - handle if requried
                }
            }
            //Start recording
            [MovieFileOutput startRecordingToOutputFileURL:outputURL recordingDelegate:self];

它给出了以下错误

  

[AVCaptureMovieFileOutput   startRecordingToOutputFileURL:recordingDelegate:] - 无法记录到   网址   /private/var/mobile/Containers/Data/Application/FEA51E75-B2A6-45DD-991B-AFFBF5794EAC/tmp/myApp.mov   因为它不是文件URL。

但如果我将URL更改为initFileURLWithPath,则会产生另一个错误。

  

视频   /private/var/mobile/Containers/Data/Application/B6876493-4354-4607-B348-63C5262AF2D9/tmp/myApp.mov   无法保存到已保存的相册:错误   Domain = NSURLErrorDomain Code = -1100“找不到请求的URL   这台服务器。“   的UserInfo = {NSErrorFailingURLStringKey =文件:///private/var/mobile/Containers/Data/Application/B6876493-4354-4607-B348-63C5262AF2D9/tmp/myApp.mov,   NSErrorFailingURLKey =文件:///private/var/mobile/Containers/Data/Application/B6876493-4354-4607-B348-63C5262AF2D9/tmp/myApp.mov,   NSLocalizedDescription =未找到请求的URL   server。,NSUnderlyingError = 0x171ad710 {错误域= NSPOSIXErrorDomain   代码= 2“没有这样的文件或目录”},   NSURL =文件:///private/var/mobile/Containers/Data/Application/B6876493-4354-4607-B348-63C5262AF2D9/tmp/myApp.mov}

我真的不明白这个错误。有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

开发人员Apple网站有一个很好的例子,说明如何处理来自iPhone相机的视频,预处理并将视频保存到相机胶卷。 访问链接RosyWriter example,然后点击"下载示例"文章顶部的按钮。

本教程还介绍了如何使用OpenCV和OpenGL库预处理视频。

答案 1 :(得分:0)

你是否尝试过这样:

   NSString *outputFilePath = [NSTemporaryDirectory() stringByAppendingPathComponent:[@"myApp" stringByAppendingPathExtension:@"mov"]];

参考:像你一样工作的例子,https://stackoverflow.com/a/21118720/4557505

其他

NSString *rootPath = NSTemporaryDirectory();
NSString  *videoPath = [rootPath stringByAppendingPathComponent:@"myApp.mov"];
NSURL *outputURL = [NSURL fileURLWithPath:videoPath];

以上代码适用于我copyItemAtURL