Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 使用AVCaptureSession录制视频_Iphone_Ios_Avcapturesession_Avcapturemoviefileoutput - Fatal编程技术网

Iphone 使用AVCaptureSession录制视频

Iphone 使用AVCaptureSession录制视频,iphone,ios,avcapturesession,avcapturemoviefileoutput,Iphone,Ios,Avcapturesession,Avcapturemoviefileoutput,我正在尝试使用AVCaptureSession和AVCaptureMovieFileOutput录制视频,但每当我尝试开始录制时,我都会在DidFinishRedingToOutputFileAttributeAVCaptureFileOutputRecordingDelegate方法中遇到此错误 Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo=0x1

我正在尝试使用AVCaptureSession和AVCaptureMovieFileOutput录制视频,但每当我尝试开始录制时,我都会在
DidFinishRedingToOutputFileAttribute
AVCaptureFileOutputRecordingDelegate方法中遇到此错误

Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo=0x15de7c40 {AVErrorRecordingSuccessfullyFinishedKey=false, NSLocalizedDescription=The operation could not be completed, NSLocalizedFailureReason=An unknown error occurred (-12673), NSUnderlyingError=0x15d88aa0 "The operation couldn’t be completed. (OSStatus error -12673.)"}
这是我用来添加AVCaptureMovieFileOutput和初始化AVCaptureSession的代码

- (AVCaptureSession *)session {
    if (!_session) {
        _session = [[AVCaptureSession alloc] init];


        // ADD CAMERA DEVICE
        NSError *error = nil;
        AVCaptureDeviceInput *videoInput = [AVCaptureDeviceInput deviceInputWithDevice:self.videoDevice error:&error];
        if (!videoInput) {
            NSLog(@"ERROR: trying to open camera: %@", error);
        } else {
            [_session addInput:videoInput];
        }


        // ADD AUDIO DEVICE
        error = nil;
        AVCaptureDeviceInput *audioInput = [AVCaptureDeviceInput deviceInputWithDevice:self.audioDevice error:&error];
        if (!audioInput)
        {
            NSLog(@"ERROR: trying to open mic: %@", error);
        } else {
            [_session addInput:audioInput];
        }


        // ADD OUTPUT FILE
        if ([_session canAddOutput:self.movieFileOutput]) {
            [_session addOutput:self.movieFileOutput];
        }


        [_session startRunning];
    }

    return _session;
}
我的AVCaptureMovieFileOutput是这样延迟加载的

- (AVCaptureMovieFileOutput *)movieFileOutput {
    if (!_movieFileOutput) {
        _movieFileOutput = [[AVCaptureMovieFileOutput alloc] init];

        Float64 TotalSeconds = 60;          //Total seconds
        int32_t preferredTimeScale = 30;    //Frames per second
        CMTime maxDuration = CMTimeMakeWithSeconds(TotalSeconds, preferredTimeScale);
        _movieFileOutput.maxRecordedDuration = maxDuration;
        _movieFileOutput.minFreeDiskSpaceLimit = 1024 * 1024;
    }

    return _movieFileOutput;
}
我不确定我做错了什么,因为我看过的大多数教程都是这样做的


感谢

基本错误代码是-12673,这通常是由于试图写入不可写入的目录或文件而导致的。尝试使用以下代码编写:

NSString *documentsDirPath =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSURL *documentsDirUrl = [NSURL fileURLWithPath:documentsDirPath isDirectory:YES];
NSURL *url = [NSURL URLWithString:@"out.mp4" relativeToURL:documentsDirUrl];
[self.movieFileOutput startRecordingToOutputFileURL:url recordingDelegate:self];

您是否检查了文件的目标路径是否可写?这似乎是问题所在。谢谢你的帮助!