-
Notifications
You must be signed in to change notification settings - Fork 0
/
Camera.swift
55 lines (47 loc) · 1.74 KB
/
Camera.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import UIKit
import AVFoundation
// Example view controller that accesses camera
class ViewController: UIViewController {
@IBOutlet weak var cameraPreview: UIView!
var session: AVCaptureSession?
var input: AVCaptureDeviceInput?
var output: AVCaptureStillImageOutput?
var previewLayer: AVCaptureVideoPreviewLayer?
override func viewDidLoad() {
super.viewDidLoad()
//Initialize session an output variables this is necessary
session = AVCaptureSession()
output = AVCaptureStillImageOutput()
let camera = getDevice(.Back)
do {
input = try AVCaptureDeviceInput(device: camera)
} catch let error as NSError {
print(error)
input = nil
}
if (session?.canAddInput(input)) {
session?.addInput(input)
output?.outputSettings = [AVVideoCodecKey : AVVideoCodecJPEG]
if (session?.canAddOutput(output)) {
session?.addOutput(output)
previewLayer = AVCaptureVideoPreviewLayer(session: session)
previewLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill
previewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.Portrait
previewLayer?.frame = cameraPreview.bounds
cameraPreview.layer.addSublayer(previewLayer!)
session?.startRunning()
}
}
}
//Get the camera (Front or Back)
func getDevice(position: AVCaptureDevicePosition) -> AVCaptureDevice? {
let devices: NSArray = AVCaptureDevice.devices();
for device in devices {
let deviceConverted = device as! AVCaptureDevice
if(deviceConverted.position == position){
return deviceConverted
}
}
return nil
}
}