Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.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
Ios 使用AVFoundation切换摄像头时显示红色状态栏_Ios_Camera_Avfoundation_Avcapturesession - Fatal编程技术网

Ios 使用AVFoundation切换摄像头时显示红色状态栏

Ios 使用AVFoundation切换摄像头时显示红色状态栏,ios,camera,avfoundation,avcapturesession,Ios,Camera,Avfoundation,Avcapturesession,在切换摄像机时,我面临着非常奇怪的问题。当用户将摄像头从前到后切换时,用户可以看到红色状态栏一秒钟,然后随着向上滑动动画自动消失。我在google上搜索了很多东西&stack overflow,但运气不好。我发现了这个,但它与录音有关。这是我的密码 -(void)toggleCameraIsFront:(BOOL)isFront { AVCaptureDevicePosition desiredPosition; if (isFront) { desiredPos

在切换摄像机时,我面临着非常奇怪的问题。当用户将摄像头从前到后切换时,用户可以看到红色状态栏一秒钟,然后随着向上滑动动画自动消失。我在google上搜索了很多东西&stack overflow,但运气不好。我发现了这个,但它与录音有关。这是我的密码

-(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

非常感谢您的任何帮助。谢谢。

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

[self.captureSession removeInput:audioInput];
其中,音频输入是
AVCaptureDeviceInput
对象

请检查答案以获得更多澄清