gpt4 book ai didi

iOS7 AVCapture captureOutput 永远不会被调用

转载 作者:行者123 更新时间:2023-12-01 18:57:28 24 4
gpt4 key购买 nike

请理解,我无法在此处上传整个代码。

我有

@interface BcsProcessor : NSObject <AVCaptureMetadataOutputObjectsDelegate> {}

和 BcsProcessor 有 setupCaptureSessioncaptureOutput方法。
- (void)captureOutput:(AVCaptureOutput*)captureOutput didOutputMetadataObjects:(NSArray*)metadataObjects fromConnection:(AVCaptureConnection*)connection


- (NSString*)setUpCaptureSession {
NSError* error = nil;

AVCaptureSession* captureSession = [[[AVCaptureSession alloc] init] autorelease];
self.captureSession = captureSession;

AVCaptureDevice* __block device = nil;
if (self.isFrontCamera) {

NSArray* devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
[devices enumerateObjectsUsingBlock:^(AVCaptureDevice *obj, NSUInteger idx, BOOL *stop) {
if (obj.position == AVCaptureDevicePositionFront) {
device = obj;
}
}];
} else {
device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
}

AVCaptureDeviceInput* input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];

AVCaptureMetadataOutput* output = [[[AVCaptureMetadataOutput alloc] init] autorelease];
output.metadataObjectTypes = output.availableMetadataObjectTypes

dispatch_queue_t outputQueue = dispatch_queue_create("com.1337labz.featurebuild.metadata", 0);
[output setMetadataObjectsDelegate:self queue:outputQueue];

captureSession.sessionPreset = AVCaptureSessionPresetPhoto;

if ([captureSession canAddInput:input]) {
[captureSession addInput:input];
}

if ([captureSession canAddOutput:output]) {
[captureSession addOutput:output];
}

// setup capture preview layer
self.previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:captureSession];

// run on next event loop pass [captureSession startRunning]
[captureSession performSelector:@selector(startRunning) withObject:nil afterDelay:0];

return nil;
}

所以上面的代码设置 session 并添加 AVCaptureMetadataOutput .和 BcsProcessor应该接收捕获的元数据。但是我的 captureOutput 方法没有接收到任何数据,或者被调用。

我将不胜感激任何帮助或评论。

最佳答案

首先确保您的输入和输出正确添加到 session 中。您可以通过登录 captureSession.inputs 进行检查和 captureSession.outputs .

其次确保 output.metadataObjectTypes 设置正确,意味着 availableMetadataObjectTypes 的输出不是空的。如果您在添加输出之前调用它,我相信这将是空的。

最后我没有看到你将预览层添加到 View 层
在使用 session 初始化图层后尝试...

self.previewLayer.frame = self.view.layer.bounds;
[self.view.layer addSublayer:previewLayer];

关于iOS7 AVCapture captureOutput 永远不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25756833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com