1

我在 ios7 上录制视频+音频时遇到问题;我已经在 ios6.1.3 上创建了应用程序,并且在我将 iphone 更新到 ios7 之前,一切都很完美。我使用 AVCaptureSession 并连接输入设备(麦克风和相机);请参阅下面的代码,这是我设置设备的方式:

- (void)setupSessionWithPreset:(NSString *)preset withCaptureDevice:(AVCaptureDevicePosition)cd withTorchMode:(AVCaptureTorchMode)tm withError:(NSError **)error
{

    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
    [audioSession setActive:YES error:nil];
//    NSLog(@"sessionError :%@", sessionError);

    self.movieFileOutput = [[AVCaptureMovieFileOutput alloc] init];
    [self startNotificationObservers];

    if(setupComplete)
    {
        *error = [NSError errorWithDomain:@"Setup session already complete." code:102 userInfo:nil];
        return;
    }

    setupComplete = YES;
    AVCaptureDevice *captureDevice = [self cameraWithPosition:cd];

    if ([captureDevice hasTorch])
    {
        if ([captureDevice lockForConfiguration:nil])
        {
            if ([captureDevice isTorchModeSupported:tm])
            {
                [captureDevice setTorchMode:AVCaptureTorchModeOff];
            }
            [captureDevice unlockForConfiguration];
        }
    }

    self.captureSession = [[AVCaptureSession alloc] init];
    self.captureSession.sessionPreset = preset;
    NSError *errorVI = nil;
    self.videoInput = [[AVCaptureDeviceInput alloc] initWithDevice:captureDevice error:&errorVI];
    NSLog(@"Video Input :%@", errorVI);
    if([self.captureSession canAddInput:self.videoInput])
    {
        [self.captureSession addInput:self.videoInput];
    }
    else
    {
        *error = [NSError errorWithDomain:@"Error setting video input." code:101 userInfo:nil];
        return;
    }
    NSError *errorAI = nil;
    self.audioInput = [[AVCaptureDeviceInput alloc] initWithDevice:[self audioDevice] error:&errorAI];

    if([self.captureSession canAddInput:self.audioInput])
    {
        [self.captureSession addInput:self.audioInput];
    }
    else
    {
        *error = [NSError errorWithDomain:@"Settings->Privacy->Microphone->VideoFrames(On)" code:500 userInfo:nil];
        return;
    }

    if([self.captureSession canAddOutput:self.movieFileOutput])
    {
        [self.captureSession addOutput:self.movieFileOutput];
    }
    else
    {
        *error = [NSError errorWithDomain:@"Error setting file output." code:101 userInfo:nil];
        return;
    }
}

结果,我只收到了缩略图和完整的音频,但没有收到视频。请帮助我<我真的很感激。

4

0 回答 0