मैंने वीडियो आउटपुट कैप्चर करने और इसे UIView के माध्यम से उपयोगकर्ता को प्रदर्शित करने के लिए एक AVCaptureSession बनाया है। अब मैं एक बटन (टेकफोटो विधि) पर क्लिक करने और UIImageView में सत्र से छवि को प्रदर्शित करने में सक्षम होना चाहता हूं। मैंने प्रत्येक डिवाइस कनेक्शन के माध्यम से पुनरावृत्ति करने की कोशिश की है और आउटपुट को सहेजने का प्रयास किया है, लेकिन यह काम नहीं किया है। कोड मैंएवी कैप्चर सत्र छवि को कैप्चर करने के लिए स्वीकृति
नीचेlet captureSession = AVCaptureSession()
var stillImageOutput: AVCaptureStillImageOutput!
@IBOutlet var imageView: UIImageView!
@IBOutlet var cameraView: UIView!
// If we find a device we'll store it here for later use
var captureDevice : AVCaptureDevice?
override func viewDidLoad() {
// Do any additional setup after loading the view, typically from a nib.
super.viewDidLoad()
println("I AM AT THE CAMERA")
captureSession.sessionPreset = AVCaptureSessionPresetLow
self.captureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
if(captureDevice != nil){
beginSession()
}
}
func beginSession() {
self.stillImageOutput = AVCaptureStillImageOutput()
self.captureSession.addOutput(self.stillImageOutput)
var err : NSError? = nil
self.captureSession.addInput(AVCaptureDeviceInput(device: self.captureDevice, error: &err))
if err != nil {
println("error: \(err?.localizedDescription)")
}
var previewLayer = AVCaptureVideoPreviewLayer(session: self.captureSession)
self.cameraView.layer.addSublayer(previewLayer)
previewLayer?.frame = self.cameraView.layer.frame
captureSession.startRunning()
}
@IBAction func takePhoto(sender: UIButton) {
self.stillImageOutput.captureStillImageAsynchronouslyFromConnection(self.stillImageOutput.connectionWithMediaType(AVMediaTypeVideo)) { (buffer:CMSampleBuffer!, error:NSError!) -> Void in
var image = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(buffer)
var data_image = UIImage(data: image)
self.imageView.image = data_image
}
}
}
अब इस त्रुटि हो रही है के रूप में सत्र बनाने विधि में एक प्रेषण का उपयोग करके देखें 'न आया हुआ अपवाद 'NSInvalidArgumentException', कारण की वजह से एप्लिकेशन समाप्त: '*** आउटपुट सत्र कब्जा करने के लिए -> -> अधिक है क्योंकि एक ही प्रकार के एक आउटपुट से अधिक है असमर्थित। ' –
लाइन को ले कर शुरू करें: captureSession.addOutput (self.stillImageOutput) और देखें कि आप कहां जोड़ रहे हैं। यह त्रुटि को ठीक करना चाहिए। – user3353890
@ user3353890 मैंने त्रुटि तय की है (मैंने उपरोक्त कोड अपडेट किया है) लेकिन अब मुझे केवल कैमरे से वीडियो के बजाय मेरे पूर्वावलोकन के लिए एक स्थिर छवि मिल रही है ...? –