无法向 AVCaptureMultiCamSession 添加多个输入

问题描述 投票:0回答:1

我刚刚开始使用 AVFoundation 从 iPhone 的摄像头捕获视频。我已经成功地分别从前置或后置摄像头进行捕捉。然而,当我尝试同时从两者捕获时遇到了麻烦:

bool
addDevice(AVCaptureSession *session, bool front)
{
    AVCaptureDevicePosition position = front? AVCaptureDevicePositionFront: AVCaptureDevicePositionBack;
    AVCaptureDevice *device;
    AVCaptureDeviceInput *input;
    NSError *error;

    device = [AVCaptureDevice defaultDeviceWithDeviceType:AVCaptureDeviceTypeBuiltinWideAngleCamera mediaType:AVMediaTypeVideo position:position];
    if ( !device ) {
        NSLog(@"Cannot create %s device", front? "front" : "back");
        return false;
    }

    input = [AVCaptureDeviceInput deviceInputWithDevice:device error&error];
    if ( !input ) {
        NSLog(@"Cannot create input for %s device: %@", front? "front" : "back", [error localizedDescription]);
        return false;
    }

    if ( ![session canAddInput:input] ) {
        NSLog(@"Cannot add input for %s device", front? "front" : "back");
        return false;
    }
    [session addInput:input];
    
    return true;
}

AVCaptureSession *
startSession()
{
    AVCaptureMultiCamSession *session;

    session = [AVCaptureMultiCamSession new];
    if ( !addDevice(session, true) || !addDevice(session, false) ) {
        return nil;
    }

    // add output

    [session startRunning];

    return session;
}

前端设备添加成功,但后端设备

[session canAddInput:input]
添加失败。正如我之前提到的,我可以从任一设备单独拍照。

我尝试颠倒添加摄像头的顺序,然后无法添加前置摄像头。因此,问题似乎确实是添加多个输入。

ios objective-c avcapturesession
1个回答
0
投票

并非所有设备都支持多摄像头会话(即使

AVCaptureMultiCamSession
仍然可以实例化)。

您可以在运行时通过

multiCamSupported
类属性确定它们是否受支持:

if ( !AVCaptureMultiCamSession.multiCamSupported ) {
    // can't add multiple inputs
}
© www.soinside.com 2019 - 2024. All rights reserved.