Type Method


Returns the default device for the specified device type, media type, and position.


class func `default`(_ deviceType: AVCaptureDevice.DeviceType, for mediaType: AVMediaType?, position: AVCaptureDevice.Position) -> AVCaptureDevice?



The type of capture device to request, such as builtInWideAngleCamera. See AVCaptureDevice.DeviceType.


The type of media to request capture of, such as audio. See Media Types.


The position of capture device to request relative to system hardware (front- or back-facing). Pass AVCaptureDevice.Position.unspecified to search for devices regardless of position.

Return Value

The system default device for the specified combination of device type, media type, and position, or nil if no currently available device satisfies the specified criteria.


Use this method to easily select the system default capture device for a given scenario. For example, to obtain the dual camera on supported hardware and fall back to the standard wide-angle camera otherwise, call this method twice, as shown below.

func defaultCamera() -> AVCaptureDevice? {
    if let device = AVCaptureDevice.default(.builtInDualCamera,
                                            for: AVMediaType.video,
                                            position: .back) {
        return device
    } else if let device = AVCaptureDevice.default(.builtInWideAngleCamera,   
                        for: AVMediaType.video,
                        position: .back) {
        return device
    } else {
        return nil

See Also

Discovering Devices

init?(uniqueID: String)

Returns the device with a given ID.

class func `default`(for: AVMediaType) -> AVCaptureDevice?

Returns the default device used to capture data of a given media type.

enum AVCaptureDevice.Position

Constants to specify the position of a capture device.

struct AVCaptureDevice.DeviceType

Values identifying the capture device’s type.

class AVCaptureDevice.DiscoverySession

A query for finding and monitoring available capture devices.

static let AVCaptureDeviceWasConnected: NSNotification.Name

Posted when a new device becomes available.

static let AVCaptureDeviceWasDisconnected: NSNotification.Name

Posted when an existing device becomes unavailable.

class func devices() -> [AVCaptureDevice]

Returns an array of the available capture devices on the system.

class func devices(for: AVMediaType) -> [AVCaptureDevice]

Returns an array of the devices able to capture data of a given media type.