- Qt 6.12
- Qt Multimedia
- C++ Classes
- QtMultimedia
- QMediaCaptureSession
- Qt 6.12.0 Reference Documentation

# QMediaCaptureSession Class

The QMediaCaptureSession class allows capturing of audio and video content. More...

Header: | `#include <QMediaCaptureSession>`
CMake: | `find_package(Qt6 REQUIRED COMPONENTS Multimedia)` `target_link_libraries(mytarget PRIVATE Qt6::Multimedia)`
qmake: | `QT += multimedia`
In QML: | CaptureSession
Inherits: | QObject

- List of all members, including inherited members

## Properties

`(since 6.8)` audioBufferInput : QAudioBufferInput* audioInput : QAudioInput* audioOutput : QAudioOutput* camera : QCamera* imageCapture : QImageCapture* `(since 6.12)` nativeVideoSource : QObject* | recorder : QMediaRecorder* `(since 6.5)` screenCapture : QScreenCapture* `(since 6.8)` videoFrameInput : QVideoFrameInput* videoOutput : QObject* `(since 6.6)` windowCapture : QWindowCapture*

## Public Functions

| QMediaCaptureSession(QObject *parent = nullptr)
virtual | ~QMediaCaptureSession() override
QAudioBufferInput * | audioBufferInput() const
QAudioInput * | audioInput() const
QAudioOutput * | audioOutput() const
QCamera * | camera() const
QImageCapture * | imageCapture()
QObject * | nativeVideoSource() const
QMediaRecorder * | recorder()
QScreenCapture * | screenCapture()
void | setAudioBufferInput(QAudioBufferInput *input)
void | setAudioInput(QAudioInput *input)
void | setAudioOutput(QAudioOutput *output)
void | setCamera(QCamera *camera)
void | setImageCapture(QImageCapture *imageCapture)
void | setNativeVideoSource(QObject *videoSource)
void | setRecorder(QMediaRecorder *recorder)
void | setScreenCapture(QScreenCapture *screenCapture)
void | setVideoFrameInput(QVideoFrameInput *input)
void | setVideoOutput(QObject *output)
void | setVideoSink(QVideoSink *sink)
void | setWindowCapture(QWindowCapture *windowCapture)
QVideoFrameInput * | videoFrameInput() const
QObject * | videoOutput() const
QVideoSink * | videoSink() const
QWindowCapture * | windowCapture()

## Signals

void | audioBufferInputChanged()
void | audioInputChanged()
void | audioOutputChanged()
void | cameraChanged()
void | imageCaptureChanged()
void | nativeVideoSourceChanged()
void | recorderChanged()
void | screenCaptureChanged()
void | videoFrameInputChanged()
void | videoOutputChanged()
void | windowCaptureChanged()

## Detailed Description

The QMediaCaptureSession is the central class that manages capturing of media on the local device.

You can connect a video input to QMediaCaptureSession using setCamera(), setScreenCapture(), setWindowCapture() or setVideoFrameInput(). A preview of the captured media can be seen by setting a QVideoWidget or QGraphicsVideoItem using setVideoOutput().

You can connect a microphone to QMediaCaptureSession using setAudioInput(), or set your custom audio input using setAudioBufferInput(). The captured sound can be heard by routing the audio to an output device using setAudioOutput().

You can capture still images from a camera by setting a QImageCapture object on the capture session, and record audio/video using a QMediaRecorder.

See also QCamera, QAudioDevice, QMediaRecorder, QImageCapture, QScreenCapture, QWindowCapture, QVideoFrameInput, QGStreamerVideoSource, and QGraphicsVideoItem.

## Property Documentation

### `[since 6.8]` audioBufferInput : QAudioBufferInput*

This property holds the object used to send custom audio buffers to QMediaRecorder.

This enumeration was introduced in Qt 6.8.

Access functions:

QAudioBufferInput * | audioBufferInput() const
void | setAudioBufferInput(QAudioBufferInput *input)

Notifier signal:

void | audioBufferInputChanged()

### audioInput : QAudioInput*

Returns the device that is being used to capture audio.

Access functions:

QAudioInput * | audioInput() const
void | setAudioInput(QAudioInput *input)

Notifier signal:

void | audioInputChanged()

### audioOutput : QAudioOutput*

Returns the audio output for the session.

Access functions:

QAudioOutput * | audioOutput() const
void | setAudioOutput(QAudioOutput *output)

Notifier signal:

void | audioOutputChanged()

### camera : QCamera*

This property holds the camera used to capture video.

Record video or take images by adding a camera to the capture session using this property.

Access functions:

QCamera * | camera() const
void | setCamera(QCamera *camera)

Notifier signal:

void | cameraChanged()

### imageCapture : QImageCapture*

This property holds the object used to capture still images.

Add a QImageCapture object to the capture session to enable capturing of still images from the camera.

Access functions:

QImageCapture * | imageCapture()
void | setImageCapture(QImageCapture *imageCapture)

Notifier signal:

void | imageCaptureChanged()

### `[since 6.12]` nativeVideoSource : QObject*

This property holds the native video source used to capture video.

For now, it is only possible to set QGStreamerVideoSource as the native video source. A capture session can have either QCamera or QGStreamerVideoSource set at a time.

This enumeration was introduced in Qt 6.12.

Access functions:

QObject * | nativeVideoSource() const
void | setNativeVideoSource(QObject *videoSource)

Notifier signal:

void | nativeVideoSourceChanged()

See also QGStreamerVideoSource and QCamera.

### recorder : QMediaRecorder*

This property holds the recorder object used to capture audio/video.

Add a QMediaRecorder object to the capture session to enable recording of audio and/or video from the capture session.

Access functions:

QMediaRecorder * | recorder()
void | setRecorder(QMediaRecorder *recorder)

Notifier signal:

void | recorderChanged()

### `[since 6.5]` screenCapture : QScreenCapture*

This property holds the object used to capture a screen.

Record a screen by adding a screen capture object to the capture session using this property.

This enumeration was introduced in Qt 6.5.

Access functions:

QScreenCapture * | screenCapture()
void | setScreenCapture(QScreenCapture *screenCapture)

Notifier signal:

void | screenCaptureChanged()

### `[since 6.8]` videoFrameInput : QVideoFrameInput*

This property holds the object used to send custom video frames to QMediaRecorder or a video output.

This enumeration was introduced in Qt 6.8.

Access functions:

QVideoFrameInput * | videoFrameInput() const
void | setVideoFrameInput(QVideoFrameInput *input)

Notifier signal:

void | videoFrameInputChanged()

### videoOutput : QObject*

Returns the video output for the session.

Access functions:

QObject * | videoOutput() const
void | setVideoOutput(QObject *output)

Notifier signal:

void | videoOutputChanged()

### `[since 6.6]` windowCapture : QWindowCapture*

This property holds the object used to capture a window.

Record a window by adding a window capture objet to the capture session using this property.

This enumeration was introduced in Qt 6.6.

Access functions:

QWindowCapture * | windowCapture()
void | setWindowCapture(QWindowCapture *windowCapture)

Notifier signal:

void | windowCaptureChanged()

## Member Function Documentation

### `[explicit]` QMediaCaptureSession::QMediaCaptureSession(QObject *parent = nullptr)

Creates a session for media capture from the parent object.

### `[override virtual noexcept]` QMediaCaptureSession::~QMediaCaptureSession()

Destroys the session.

### void QMediaCaptureSession::setAudioInput(QAudioInput *input)

Sets the audio input device to input. If setting it to an empty QAudioDevice the capture session will use the default input as defined by the operating system.

Note: Setter function for property audioInput.

See also audioInput().

### void QMediaCaptureSession::setAudioOutput(QAudioOutput *output)

Sets the audio output device to output.

Setting an audio output device enables audio routing from an audio input device.

Note: Setter function for property audioOutput.

See also audioOutput().

### void QMediaCaptureSession::setVideoOutput(QObject *output)

Sets a QObject, (output), to a video preview for the capture session.

A QObject based preview is expected to have an invokable videoSink() method that returns a QVideoSink.

The previously set preview is detached.

Note: Setter function for property videoOutput.

See also videoOutput().

### void QMediaCaptureSession::setVideoSink(QVideoSink *sink)

Sets a QVideoSink, (sink), to a video preview for the capture session.

A QObject based preview is expected to have an invokable videoSink() method that returns a QVideoSink.

The previously set preview is detached.

See also videoSink().

### QVideoSink *QMediaCaptureSession::videoSink() const

Returns the QVideoSink for the session.

See also setVideoSink().