How to get front camera, back camera and audio with AVCaptureDeviceDiscoverySession How to get front camera, back camera and audio with AVCaptureDeviceDiscoverySession ios ios

How to get front camera, back camera and audio with AVCaptureDeviceDiscoverySession


You can get the front camera with the following:

AVCaptureDevice.default(.builtInWideAngleCamera, for: AVMediaType.video, position: .front)

The back camera:

AVCaptureDevice.default(.builtInWideAngleCamera, for: AVMediaType.video, position: .back)

And the microphone:

AVCaptureDevice.default(.builtInMicrophone, for: AVMediaType.audio, position: .unspecified)


Here's my code (Swift 3) to get camera position :

// Find a camera with the specified AVCaptureDevicePosition, returning nil if one is not foundfunc cameraWithPosition(_ position: AVCaptureDevicePosition) -> AVCaptureDevice?{    if let deviceDescoverySession = AVCaptureDeviceDiscoverySession.init(deviceTypes: [AVCaptureDeviceType.builtInWideAngleCamera],                                                          mediaType: AVMediaTypeVideo,                                                          position: AVCaptureDevicePosition.unspecified) {        for device in deviceDescoverySession.devices {            if device.position == position {                return device            }        }    }    return nil}

If you want, you can also get the new devicesTypes from iPhone 7+ (dual camera) by changing the deviceTypes array.

Here's a good read : https://forums.developer.apple.com/thread/63347


Swift 4, iOS 10+ and Xcode 10.1 replaces

if let cameraID = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .front)?.localizedName {       //cameraID = "Front Camera"}

with AVCaptureDevice.DiscoverySession implementation

if let cameraID = AVCaptureDevice.DiscoverySession.init(deviceTypes: [AVCaptureDevice.DeviceType.builtInWideAngleCamera], mediaType: .video, position: .front).devices.first?.localizedName{        //cameraID = "Front Camera"} 

Need to wrap it with #available(iOS 10,*) check.