本页内容

QMediaCaptureSession Class

QMediaCaptureSession 类支持捕获音频和视频内容。更多内容...

标题: #include <QMediaCaptureSession>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
在 QML 中: CaptureSession
继承自: QObject

属性

公共函数

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()

信号

详细说明

QMediaCaptureSession 是管理本地设备上媒体捕获的核心类。

您可以使用setCamera()、setScreenCapture()、setWindowCapture() 或setVideoFrameInput() 将视频输入连接到 QMediaCaptureSession。通过使用setVideoOutput() 设置QVideoWidget 或QGraphicsVideoItem ,可以预览捕获的媒体。

您可以通过调用setAudioInput() 将麦克风连接到 QMediaCaptureSession,或通过调用setAudioBufferInput() 设置自定义音频输入。通过调用setAudioOutput() 将音频路由到输出设备,即可听到捕获的声音。

您可以通过在捕获会话中设置QImageCapture 对象从摄像头捕获静止图像,并使用QMediaRecorder 录制音频/视频。

另请参阅 QCamera 、QAudioDevice 、QMediaRecorder 、QImageCapture 、QScreenCapture 、QWindowCapture 、QVideoFrameInput 、QGStreamerVideoSource 以及QGraphicsVideoItem 。

属性文档

[since 6.8] audioBufferInput : QAudioBufferInput*

该属性保存用于将自定义音频缓冲区发送至 `QMediaRecorder` 的对象。

该枚举在 Qt 6.8 中引入。

访问函数:

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

通知器信号:

void audioBufferInputChanged()

audioInput : QAudioInput*

返回当前用于采集音频的设备。

访问函数:

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

通知信号:

void audioInputChanged()

audioOutput : QAudioOutput*

返回该会话的音频输出。

访问函数:

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

通知信号:

void audioOutputChanged()

camera : QCamera*

该属性存储用于捕获视频的摄像头。

通过此属性将摄像头添加到捕获会话中,即可录制视频或拍摄图像。

访问函数:

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

通知信号:

void cameraChanged()

imageCapture : QImageCapture*

该属性存储用于捕获静止图像的对象。

向捕获会话中添加一个QImageCapture 对象,以启用从相机捕获静态图像的功能。

访问函数:

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

通知信号:

void imageCaptureChanged()

[since 6.12] nativeVideoSource : QObject*

该属性存储用于捕获视频的原生视频源。

目前,仅可将QGStreamerVideoSource 设置为原生视频源。一个捕获会话中,QCamera 和QGStreamerVideoSource 只能同时设置其中一个。

该枚举类型在 Qt 6.12 中引入。

访问函数:

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

通知器信号:

void nativeVideoSourceChanged()

另请参阅 QGStreamerVideoSource 和QCamera 。

recorder : QMediaRecorder*

该属性保存用于捕获音频/视频的录制器对象。

向捕获会话中添加一个QMediaRecorder 对象,即可从该捕获会话中录制音频和/或视频。

访问函数:

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

通知信号:

void recorderChanged()

[since 6.5] screenCapture : QScreenCapture*

该属性保存用于捕获屏幕的对象。

通过此属性将屏幕捕获对象添加到捕获会话中,即可录制屏幕。

该枚举类型自 Qt 6.5 起引入。

访问函数:

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

通知信号:

void screenCaptureChanged()

[since 6.8] videoFrameInput : QVideoFrameInput*

该属性存储用于将自定义视频帧发送至QMediaRecorder 或视频输出的对象。

该枚举在 Qt 6.8 中引入。

访问函数:

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

Notifier 信号:

void videoFrameInputChanged()

videoOutput : QObject*

返回该会话的视频输出。

访问函数:

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

通知信号:

void videoOutputChanged()

[since 6.6] windowCapture : QWindowCapture*

该属性存储用于捕获窗口的对象。

通过此属性将窗口捕获对象添加到捕获会话中,即可捕获窗口。

该枚举在 Qt 6.6 中引入。

访问函数:

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

通知器信号:

void windowCaptureChanged()

成员函数文档

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

通过parent 对象创建一个用于媒体捕获的会话。

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

销毁会话。

void QMediaCaptureSession::setAudioInput(QAudioInput *input)

将音频输入设备设置为input 。如果将其设置为空的QAudioDevice ,则捕获会话将使用操作系统定义的默认输入。

注意: 这是属性audioInput 的设置 函数。

另请参阅 audioInput()。

void QMediaCaptureSession::setAudioOutput(QAudioOutput *output)

将音频输出设备设置为output 。

设置音频输出设备可实现从音频输入设备路由音频。

注意: 这是属性audioOutput 的设置 函数。

另请参阅 audioOutput()。

void QMediaCaptureSession::setVideoOutput(QObject *output)

将QObject (output )设置为捕获会话的视频预览。

基于QObject 的预览应具有一个可调用的videoSink()方法,该方法返回一个QVideoSink 。

先前设置的预览将被分离。

注意: 这是属性videoOutput 的设置器 函数。

另请参阅 videoOutput()。

void QMediaCaptureSession::setVideoSink(QVideoSink *sink)

将QVideoSink (sink )设置为捕获会话的视频预览。

基于QObject 的预览应具有可调用的videoSink()方法,该方法返回一个QVideoSink 。

先前设置的预览将被解除关联。

另请参阅 videoSink()。

QVideoSink *QMediaCaptureSession::videoSink() const

返回该会话的QVideoSink 。

另请参阅 setVideoSink()。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.