使用AVFoundation切换相机时显示红色状态栏

时间:2014-03-12 09:42:46

标签: ios camera avfoundation avcapturesession

我在摄像机之间切换时遇到了非常奇怪的问题。当用户从前向后切换相机时,用户可以看到红色状态栏一秒钟,然后通过上滑动画自动消失。我在google&上搜索了很多堆栈溢出但没有运气。我发现了这个question,但它与audio recording有关。这是我的代码

-(void)toggleCameraIsFront:(BOOL)isFront
{
    AVCaptureDevicePosition desiredPosition;
    if (isFront) {
        desiredPosition = AVCaptureDevicePositionFront;
        self.videoDeviceType = VideoDeviceTypeFrontCamera;
    }
    else {
        desiredPosition = AVCaptureDevicePositionBack;
        self.videoDeviceType = VideoDeviceTypeRearCamera;
    }

    for (AVCaptureDevice *d in [AVCaptureDevice devicesWithMediaType: AVMediaTypeVideo])
    {
        if ([d position] == desiredPosition)
        {
            AVCaptureDeviceInput *videoDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:d error:nil];
            [self.session beginConfiguration];
            [self.session removeInput:self.videoInput];
            if ([self.session canAddInput:videoDeviceInput])
            {
                [self.session addInput:videoDeviceInput];
                [self setVideoInput:videoDeviceInput];
            }
            else
            {
                [self.session addInput:self.videoInput];
            }
            [self.session commitConfiguration];
            break;
        }
    }
 }

相机切换后也是如此。尝试录制视频,然后在AVCaptureVideoDataOutputSampleBufferDelegate未调用的方法下面。

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection

非常感谢任何形式的帮助。感谢。

1 个答案:

答案 0 :(得分:0)

此红色状态栏由于录音而出现,因为您已经提到了一个问题,该问题也描述了这是由于录音。 为了避免这种情况,您需要从AVCaptureSession

中删除音频输入
[self.captureSession removeInput:audioInput];

其中 audioInput AVCaptureDeviceInput对象。

请检查@bruno答案以获得更多说明。