OGeek|极客世界-中国程序员成长平台

标题: ios - 我正在尝试切换此代码以使用前置摄像头 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 04:16
标题: ios - 我正在尝试切换此代码以使用前置摄像头

我是编程新手,并试图修复此代码以使用前置摄像头而不是默认使用后置摄像头。我不确定我需要进行哪些更改才能使其正常工作。

这是我的示例代码:

-(void)viewWillAppearBOOL)animated{
session = [[AVCaptureSession alloc] init];
[session setSessionPreset:AVCaptureSessionPresetPhoto];

AVCaptureDevice *inputDevice = [AVCaptureDevice       defaultDeviceWithMediaType:AVMediaTypeVideo];
NSError *error;
AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:inputDevice error:&error];

if ([session canAddInput:deviceInput]) {
    [session addInput:deviceInput];
}

AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc]  initWithSession:session];
                [previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
                                            CALayer *rootLayer = [[self view] layer];
                                            [rootLayer setMasksToBounds:YES];
                                            CGRect frame = self.frameForCapture.frame;

[previewLayer setFrame:frame];

[rootLayer insertSublayer:previewLayer atIndex:0];


stillImageOutput = [[AVCaptureStillImageOutput alloc] init];
NSDictionary *outputSettings = [[NSDictionary alloc] initWithObjectsAndKeys:AVVideoCodecJPEG, AVVideoCodecKey, nil];
[stillImageOutput setOutputSettingsutputSettings];

[session addOutput:stillImageOutput];

[session startRunning];



Best Answer-推荐答案


替换这个:

AVCaptureDevice *inputDevice = [AVCaptureDevice       defaultDeviceWithMediaType:AVMediaTypeVideo];
NSError *error;
AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:inputDevice error:&error];

有了这个:

NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
AVCaptureDevice *frontCamera;
for (AVCaptureDevice *dev in devices) {
    if (dev.position == AVCaptureDevicePositionFront) {
        frontCamera = dev;
        break;
    }
}
if (!frontCamera) {
    NSLog(@"No front camera found!");
    // Handle no front camera error
}
NSError *error;
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:frontCamera error:&error];

关于ios - 我正在尝试切换此代码以使用前置摄像头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27638792/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4