我在摄像机之间切换时遇到了非常奇怪的问题。当用户从前向后切换相机时,用户可以看到红色状态栏一秒钟,然后通过上滑动画自动消失。我在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
非常感谢任何形式的帮助。感谢。
答案 0 :(得分:0)
此红色状态栏由于录音而出现,因为您已经提到了一个问题,该问题也描述了这是由于录音。
为了避免这种情况,您需要从AVCaptureSession
[self.captureSession removeInput:audioInput];
其中 audioInput 是AVCaptureDeviceInput
对象。
请检查@bruno答案以获得更多说明。