Abe*_*bel 5 objective-c avfoundation ios avcapturesession
我正试图在iOS设备上同时拍摄两台相机的照片.我也想在屏幕上预览两台摄像机.我用这个代码:
- (void)prepareCameraView:(UIView *)window
{
NSArray *captureDevices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
{
AVCaptureSession *session = [[AVCaptureSession alloc] init];
session.sessionPreset = AVCaptureSessionPresetMedium;
CALayer *viewLayer = window.layer;
NSLog(@"viewLayer = %@", viewLayer);
AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
captureVideoPreviewLayer.frame = CGRectMake(0.0f, 0.0f, window.bounds.size.width/2.0f, window.bounds.size.height);
[window.layer addSublayer:captureVideoPreviewLayer];
NSError *error = nil;
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:[captureDevices objectAtIndex:0] error:&error];
if (!input)
{
NSLog(@"ERROR : trying to open camera : %@", error);
}
[session addInput:input];
[session startRunning];
}
{
AVCaptureSession *session = [[AVCaptureSession alloc] init];
session.sessionPreset = AVCaptureSessionPresetMedium;
CALayer *viewLayer = window.layer;
NSLog(@"viewLayer = %@", viewLayer);
AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
captureVideoPreviewLayer.frame = CGRectMake(window.bounds.size.width/2.0f, 0.0f, window.bounds.size.width/2.0f, window.bounds.size.height);
[window.layer addSublayer:captureVideoPreviewLayer];
NSError *error = nil;
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:[captureDevices objectAtIndex:1] error:&error];
if (!input)
{
NSLog(@"ERROR : trying to open camera : %@", error);
}
[session addInput:input];
[session startRunning];
}
}
Run Code Online (Sandbox Code Playgroud)
但是当应用程序启动前置摄像头的会话时,后置摄像头的会话将停止并留下静止图像.
有没有办法实时显示两个摄像机的输出?
谢谢
不,这不对。使用 AVCaptureSession 时,一次只能使用一个摄像机源。
不允许同时使用多个 AVCaptureInput。因此,一旦一个会话开始,另一个会话就会停止。
最好的选择是创建两个会话,启动第一个会话,一旦报告帧,就停止它并启动第二个会话。然后停止第二个并开始第一个,继续这样做。这可行,但您收到的输入会有明显的延迟。
| 归档时间: |
|
| 查看次数: |
3333 次 |
| 最近记录: |