---
title: AVCaptureSession
framework: avfoundation
role: symbol
role_heading: Class
path: avfoundation/avcapturesession
---

# AVCaptureSession

An object that configures capture behavior and coordinates the flow of data from input devices to capture outputs.

## Declaration

```swift
class AVCaptureSession
```

## Mentioned in

Enhancing your app experience with the Camera Control Setting up a capture session

## Overview

Overview To perform real-time capture, you instantiate a capture session and add appropriate inputs and outputs. The following code fragment illustrates how to configure a capture device to record audio. // Create the capture session. let captureSession = AVCaptureSession()

// Find the default audio device. guard let audioDevice = AVCaptureDevice.default(for: .audio) else { return }

do {     // Wrap the audio device in a capture device input.     let audioInput = try AVCaptureDeviceInput(device: audioDevice)     // If the input can be added, add it to the session.     if captureSession.canAddInput(audioInput) {         captureSession.addInput(audioInput)     } } catch {     // Configuration failed. Handle error. } Call the startRunning() method to start the flow of data from the inputs to the outputs, and call the stopRunning() method to stop the flow. important: The startRunning() method is a blocking call which can take some time, therefore start the session on a serial dispatch queue so that you don’t block the main queue (which keeps the UI responsive). See AVCam: Building a camera app for an implementation example. You use the sessionPreset property to customize the quality level, bitrate, or other settings for the output. Most common capture configurations are available through session presets; however, some specialized options (such as high frame rate) require directly setting a capture format on an AVCaptureDevice instance.

## Topics

### Configuring a session

- [beginConfiguration()](avfoundation/avcapturesession/beginconfiguration().md)
- [commitConfiguration()](avfoundation/avcapturesession/commitconfiguration().md)

### Setting a session preset

- [AVCaptureSession.Preset](avfoundation/avcapturesession/preset.md)
- [canSetSessionPreset(_:)](avfoundation/avcapturesession/cansetsessionpreset(_:).md)
- [sessionPreset](avfoundation/avcapturesession/sessionpreset.md)

### Configuring inputs

- [inputs](avfoundation/avcapturesession/inputs.md)
- [canAddInput(_:)](avfoundation/avcapturesession/canaddinput(_:).md)
- [addInput(_:)](avfoundation/avcapturesession/addinput(_:).md)
- [removeInput(_:)](avfoundation/avcapturesession/removeinput(_:).md)

### Configuring outputs

- [outputs](avfoundation/avcapturesession/outputs.md)
- [canAddOutput(_:)](avfoundation/avcapturesession/canaddoutput(_:).md)
- [addOutput(_:)](avfoundation/avcapturesession/addoutput(_:).md)
- [removeOutput(_:)](avfoundation/avcapturesession/removeoutput(_:).md)

### Connecting inputs and outputs

- [connections](avfoundation/avcapturesession/connections.md)
- [addConnection(_:)](avfoundation/avcapturesession/addconnection(_:).md)
- [canAddConnection(_:)](avfoundation/avcapturesession/canaddconnection(_:).md)
- [addInputWithNoConnections(_:)](avfoundation/avcapturesession/addinputwithnoconnections(_:).md)
- [addOutputWithNoConnections(_:)](avfoundation/avcapturesession/addoutputwithnoconnections(_:).md)
- [removeConnection(_:)](avfoundation/avcapturesession/removeconnection(_:).md)
- [AVCaptureAudioChannel](avfoundation/avcaptureaudiochannel.md)

### Configuring deferred start

- [isManualDeferredStartSupported](avfoundation/avcapturesession/ismanualdeferredstartsupported.md)
- [automaticallyRunsDeferredStart](avfoundation/avcapturesession/automaticallyrunsdeferredstart.md)
- [runDeferredStartWhenNeeded()](avfoundation/avcapturesession/rundeferredstartwhenneeded().md)
- [deferredStartDelegate](avfoundation/avcapturesession/deferredstartdelegate.md)
- [deferredStartDelegateCallbackQueue](avfoundation/avcapturesession/deferredstartdelegatecallbackqueue.md)
- [setDeferredStartDelegate(_:deferredStartDelegateCallbackQueue:)](avfoundation/avcapturesession/setdeferredstartdelegate(_:deferredstartdelegatecallbackqueue:).md)
- [AVCaptureSessionDeferredStartDelegate](avfoundation/avcapturesessiondeferredstartdelegate.md)

### Configuring capture controls

- [supportsControls](avfoundation/avcapturesession/supportscontrols.md)
- [maxControlsCount](avfoundation/avcapturesession/maxcontrolscount.md)
- [controls](avfoundation/avcapturesession/controls.md)
- [canAddControl(_:)](avfoundation/avcapturesession/canaddcontrol(_:).md)
- [addControl(_:)](avfoundation/avcapturesession/addcontrol(_:).md)
- [removeControl(_:)](avfoundation/avcapturesession/removecontrol(_:).md)
- [setControlsDelegate(_:queue:)](avfoundation/avcapturesession/setcontrolsdelegate(_:queue:).md)
- [AVCaptureSessionControlsDelegate](avfoundation/avcapturesessioncontrolsdelegate.md)
- [controlsDelegate](avfoundation/avcapturesession/controlsdelegate.md)
- [controlsDelegateCallbackQueue](avfoundation/avcapturesession/controlsdelegatecallbackqueue.md)

### Managing the session life cycle

- [startRunning()](avfoundation/avcapturesession/startrunning().md)
- [stopRunning()](avfoundation/avcapturesession/stoprunning().md)

### Observing session state

- [isRunning](avfoundation/avcapturesession/isrunning.md)
- [isInterrupted](avfoundation/avcapturesession/isinterrupted.md)
- [didStartRunningNotification](avfoundation/avcapturesession/didstartrunningnotification.md)
- [didStopRunningNotification](avfoundation/avcapturesession/didstoprunningnotification.md)
- [wasInterruptedNotification](avfoundation/avcapturesession/wasinterruptednotification.md)
- [interruptionEndedNotification](avfoundation/avcapturesession/interruptionendednotification.md)
- [runtimeErrorNotification](avfoundation/avcapturesession/runtimeerrornotification.md)

### Configuring multitasking

- [isMultitaskingCameraAccessSupported](avfoundation/avcapturesession/ismultitaskingcameraaccesssupported.md)
- [isMultitaskingCameraAccessEnabled](avfoundation/avcapturesession/ismultitaskingcameraaccessenabled.md)

### Monitoring performance

- [hardwareCost](avfoundation/avcapturesession/hardwarecost.md)

### Configuring the app’s audio session

- [usesApplicationAudioSession](avfoundation/avcapturesession/usesapplicationaudiosession.md)
- [automaticallyConfiguresApplicationAudioSession](avfoundation/avcapturesession/automaticallyconfiguresapplicationaudiosession.md)
- [configuresApplicationAudioSessionToMixWithOthers](avfoundation/avcapturesession/configuresapplicationaudiosessiontomixwithothers.md)
- [configuresApplicationAudioSessionForBluetoothHighQualityRecording](avfoundation/avcapturesession/configuresapplicationaudiosessionforbluetoothhighqualityrecording.md)

### Managing color spaces

- [automaticallyConfiguresCaptureDeviceForWideColor](avfoundation/avcapturesession/automaticallyconfigurescapturedeviceforwidecolor.md)

### Synchronizing output

- [synchronizationClock](avfoundation/avcapturesession/synchronizationclock.md)
- [masterClock](avfoundation/avcapturesession/masterclock.md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Inherited By

- [AVCaptureMultiCamSession](avfoundation/avcapturemulticamsession.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Capture sessions

- [Setting up a capture session](avfoundation/setting-up-a-capture-session.md)
- [Accessing the camera while multitasking on iPad](avkit/accessing-the-camera-while-multitasking-on-ipad.md)
- [AVCam: Building a camera app](avfoundation/avcam-building-a-camera-app.md)
- [Build a responsive camera app that launches quickly](avfoundation/build-a-responsive-camera-app-that-launches-quickly.md)
- [Capturing Cinematic video](avfoundation/capturing-cinematic-video.md)
- [Supporting Center Stage front camera in your iOS app](avfoundation/supporting-center-stage-front-camera-in-your-ios-app.md)
- [AVMultiCamPiP: Capturing from Multiple Cameras](avfoundation/avmulticampip-capturing-from-multiple-cameras.md)
- [AVCamBarcode: detecting barcodes and faces](avfoundation/avcambarcode-detecting-barcodes-and-faces.md)
- [AVCaptureMultiCamSession](avfoundation/avcapturemulticamsession.md)
- [AVCaptureInput](avfoundation/avcaptureinput.md)
- [AVCaptureOutput](avfoundation/avcaptureoutput.md)
- [AVCaptureConnection](avfoundation/avcaptureconnection.md)
