AVFoundation元数据对象类型



我正试图使用AVFoundation读取下面代码的条形码,但我一直收到下面的错误。请帮忙解释原因。提前感谢!

//Create camera view
        session = AVCaptureSession()
        var layer = self.cameraView.layer
        vidLayer = AVCaptureVideoPreviewLayer.layerWithSession(session) as AVCaptureVideoPreviewLayer
        vidLayer.frame = self.cameraView.bounds
        vidLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
        var device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
        var error:NSError? = nil
        var input:AVCaptureDeviceInput? = AVCaptureDeviceInput.deviceInputWithDevice(device, error: &error) as? AVCaptureDeviceInput
        var output = AVCaptureMetadataOutput();
        session.addOutput(output)
        output.setMetadataObjectsDelegate(self, queue: dispatch_get_main_queue())
        output.metadataObjectTypes = [AVMetadataObjectTypeUPCECode, AVMetadataObjectTypeCode39Code, AVMetadataObjectTypeCode39Mod43Code, AVMetadataObjectTypeCode93Code, AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode128Code, AVMetadataObjectTypePDF417Code, AVMetadataObjectTypeQRCode, AVMetadataObjectTypeAztecCode]
        if(input != nil){
            println("ADDED")
            session.addInput(input)
        }
        layer.addSublayer(vidLayer)
        session.startRunning()
2014-10-07 15:25:09.279 WegmannMobile[457:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[AVCaptureMetadataOutput setMetadataObjectTypes:] - unsupported type found.  Use -availableMetadataObjectTypes.'
*** First throw call stack:
(0x2d7edf83 0x38068ccf 0x2c72bc29 0x618f0 0x62060 0x300256df 0x3019b43f 0x300b8d63 0x300b8b6d 0x300b8b05 0x3000ad59 0x2fc8862b 0x2fc83e3b 0x2fc83ccd 0x2fc836df 0x2fc834ef 0x2fc7d21d 0x2d7b9255 0x2d7b6bf9 0x2d7b6f3b 0x2d721ebf 0x2d721ca3 0x3267b663 0x3006e14d 0x9eff4 0x9f030 0x38575ab7)
libc++abi.dylib: terminating with uncaught exception of type NSException

在设置元数据对象类型之前,请尝试将输入和输出添加到会话中。

当您还没有将相机连接到会话时,可用元数据对象类型将为空。

这是错误消息非常有用的罕见情况之一。

打电话给[output availableMetadataObjectTypes],确保你要设置的内容在里面。如果没有,那么不要尝试设置该值。

最新更新