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

Posted

技术标签:

【中文标题】使用 AVFoundation 切换相机时显示红色状态栏【英文标题】:Red status bar shown while switching camera using AVFoundation 【发布时间】:2014-03-12 09:42:45 【问题描述】:

在相机之间切换时,我遇到了非常奇怪的问题。当用户从前到后切换相机时,用户可以看到红色状态栏一秒钟,然后随着上滑动画自动消失。我在 google 和 stack-overflow 上搜索了很多,但没有运气。我找到了这个 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】:

此红色状态栏是由于录音而出现的,因为您提到了一个问题,该问题也描述了这是由于录音造成的。 为了避免这种情况,您需要从AVCaptureSession中删除音频输入

[self.captureSession removeInput:audioInput];

其中 audioInputAVCaptureDeviceInput 对象。

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

【讨论】:

以上是关于使用 AVFoundation 切换相机时显示红色状态栏的主要内容,如果未能解决你的问题,请参考以下文章

AVFoundation - 相机切换一次,而且只有一次

在 iOS 中使用 AVFoundation 切换相机后视频录制不起作用

AVFoundation -> 用动画覆盖记录相机视频

质量:自定义 AVFoundation 相机应用程序 VS。 iOS 标准相机应用

IOS8:AVFoundation 相机冻结

使用AVCaptureSession显示相机预览