startRecordingToOutputFileURL没有活动/启用连接ios

时间:2015-08-17 23:11:13

标签: ios camera avcapturesession

我想录制短片(30秒),应在30秒后自动停止。我使用AVCAPTURESESSION启动了相机,现在我想开始自动录像。

这是我的代码:

AVCaptureSession *session = [[AVCaptureSession alloc] init];
session.sessionPreset = AVCaptureSessionPresetHigh;

AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

NSError *error = nil;
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
[session addInput:input];

AVCaptureVideoPreviewLayer *newCaptureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
newCaptureVideoPreviewLayer.frame = self.view.bounds;

[self.view.layer addSublayer:newCaptureVideoPreviewLayer];

[session startRunning];

如何录制30秒的视频。

我的尝试:

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



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

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

    return _movieFileOutput;
} 

但它给了我错误[AVCaptureMovieFileOutput startRecordingToOutputFileURL:recordingDelegate:] - no active/enabled connections.'

如何录制30秒的视频片段。

1 个答案:

答案 0 :(得分:0)

我找到了这个错误的原因。检查你的会话" setSessionPreset"设置,照片的分辨率设置与视频不同,对于iPhone5,后置摄像头的视频分辨率为1920 * 1080,前置摄像头为1280 * 720,而照片的最高分辨率为3264 * 2488,所以如果您将错误分辨率设置为视频,则不会激活连接。