音频接口QAudioInput 和视频接口QCamera
要录制音频和视频,需要定义音频设备的接口 QAudioInput 和视频设备的接口QCamera后,才能调用音频设备和视频设备进行录制
QAudioInput 和 QCamera 相当于音频和视频输人通道。
- QAudioInput 是机器上的音频输人,例如内置麦克风或头戴麦克风
- QCamera 是机器上的摄像头或外接相机。
利用QAudiolnput 和 QCamera 创建音频设备和视频设备接口的方法如下所示。
from PySide6.QtMultimedia import QAudioInput,QCamera
QAudioInput(deviceInfo: PySide6.QtMultimedia.QAudioDevice,parent: Union[PySide6.QtCore.QObject,NoneType]= None)-> None
QAudioInput(parent: Union[PySide6.QtCore.QObject,NoneType]= None)-> None
QCamera(cameraDevice: PySide6.QtMultimedia.QCameraDevice,parent: Union[PySide6.QtCore.QObject,NoneType]= None)-> None
QCamera(parent: Union[PySide6.QtCore.QObject,NoneType]= None)-> None
QCamera(position: PySide6.QtMultimedia.QCameraDevice.Position,parent: Union[PySide6.QtCore.QObject,NoneType]= None)-> None
音频接口QAudioInput的常用方法
音频接口 QAudioInput 的常用方法如表所示,主要方法:
- 用setDevice(device:QAudioDevice)方法设置音频设备;
- 用setMuted(muted:bool)方法设置静音;
- 用setVolume(volume:float)方法设置音量,音量参数 volume 的取值范围是0~1。
QAudioInput的方法及参数类型 | 返回值的类型 | 说明 |
---|---|---|
setDevice(device:QAudioDevice) | None | 设置音频设备 |
device() | QAudioDevice | 获取音频设备 |
setMuted(muted:bool) | None | 设置是否静音 |
isMuted() | bool | 获取是否静音 |
setVolume(volume: float) | None | 设置音量 |
volume() | float | 获取音量 |
音频接口QAudioInput的信号
信号 | 方法 |
---|---|
deviceChanged() | 当设备发生改变时发送信号。 |
mutedChanged(muted:bool) | 静音状态发生改变时发送信号。 |
volumeChanged(volume: float) | 音量发生改变时发送信号。 |
视频接口 QCamera的常用方法
视频接口 QCamera 的常用方法如表所示,主要方法介绍如下
QCamera的方法及参数类型 | 返回值的类型 | 说 明 |
---|---|---|
setCameraDevice(cameraDevice: QCameraDevice) | None | 设置视频设备 |
cameraDevice() | QCameraDevice | 获取视频设备 |
[slot]start() | None | 开启相机 |
[slot]stop() | None | 关闭相机 |
[slot]setActive(active: bool) | None | 设置是否打开视频设备 |
isActive() | bool | 获取相机是否启用 |
isAveilsble() | bool | 获取相机是否可用 |
setCameraFormat(format: QCameraFormat) | None | 设置视频格式 |
cameraFormat() | QCameraFormat | 获取视频格式 |
captureSession() | QMediaCaptureSession | 获取与 QCamera关联的媒体捕 获器 |
supportedFeatures() | QCamera.Features | 获取支持的特征 |
[slot]setExposureMode(mode: QCamera.ExposureMode) | None | 设置曝光模式 |
isExposureModeSupported(mode: QCamera.ExposureMode) | bool | 获取是否支持某种曝光模式 |
[slot]setAutoExposureTime() | None | 打开自动计算曝光时间 |
exposureTime() | float | 获取曝光时间 |
[slot]setManualExposureTime(float) | None | 设置曝光时间(秒) |
manualExposureTime() | float | 获取自定义曝光时间 |
[slot]setAutoIsoSensitivity() | None | 根据曝光值开启自动选择光敏感值 |
isoSensitivity() | int | 获取光敏感值 |
[slot]setManualIsoSensitivity(iso: int) | None | 设置自定义光敏感值 |
manualIsoSensitivity() | int | 获取自定义的光敏感值 |
[slot]setExposureCompensation(ev: float) | None | 设置曝光补偿(EV值) |
exposureCompensation() | float | 获取曝光补偿 |
I slot]setFlashMode(QCamera.FlashMode) | None | 设置快闪模式 |
flashMode() | QCamera.FlashMode | 获取快闪模式 |
isFlashModeSupported(mode: QCamera.FlashMode) | bool | 获取是否支持某种快闪模式 |
isFlashReady() | bool | 获取是否可以用快闪 |
setFocusMode(QCamera.FocusMode) | None | 设置对焦模式 |
focusMode() | QCamera.FocusMode | 获取对焦模式 |
isFocusModeSupported(mode: QCamera.FocusMode) | bo01 | 获取是否支持某种焦点模式 |
setFocusDistance(d: float) | None | 设置自定义焦距,0表示最近的点,1 表示无限远 |
focusDistance() | float | 获取自定义焦距 |
setCustomFocusPoint(point: Union[QPointF,QPoint]) | None | 设置自定义焦点位置 |
customFocusPoint() | QPointF | 获取自定义焦点 |
focusPoint() | QPointF | 获取焦点 |
[slot]setTorchMode(QCamera.TorchMode) | None | 设置辅助光源模式 |
torchMode() | QCamera.TorchMode | 获取辅助光源模式 |
isTorchModeSupported(mode: QCamera.TorehMode) | boul | 获取是否支持某种辅助光源模式 |
[slot]setWhiteBalanceMode(mode: QCamera.WhiteBalanceMode) | None | 设置白平衡模式 |
isWhiteBalanceModeSupported(QCamera.WhiteBalanceMode) | bool | 获取是否支持某种白平衡模式 |
whiteBalanceMode() | QCamera.WhiteBalanceMole | 获取白平衡模式 |
[slot]setColorTemperature(int) | None | 设置颜色温度(K温度) |
colorTemperature() | int | 获取颜色温度 |
setZoomFactor(factor:float) | None | 设置缩放系数 |
zoomFactor() | float | 获取缩放系数 |
[slot]zoomTo(zoom:float,rate: float) | None | 根据速率设置缩放系数 |
maximumExposureTime() | float | 获取最大的曝光时间 |
minimumExposureTime() | float | 获取最小的曝光时间 |
maximumIsoSensitivity() | int | 获取最大的光敏感值 |
minimumIsoSensitivity() | int | 获取最小的光敏感值 |
maximumZoomFactor() | float | 获取最大的放大系数 |
minimumZoomFactor() | float | 获取最小的放大系数 |
errorString() | str | 获取出错信息 |
error() | QCamera.Error | 获取出错类型 |
-
用setCameraDevice(cameraDevice:QCameraDevice)方法为视频接口设置视频设备;
-
用start()方法或 setActive(true)方法开启视频设备;用stop()方法或setActive(false)方法停止视频设备。
-
用supportedFeatures()方法获取相机支持的特征,返回值如表所示:
相机的特征值 值 说 明 QCamera.Feature.ColorTemperature 0x1 相机支持色温 QCamera.Feature.ExposureCompensation 0x2 相机支持曝光补偿 QCamera.Feature.IsoSensitivity 0x4 相机支持自定义光般感值 QCamera.Feature.ManualExposureTime 0x8 相机支持自定义曝光时间 QCamera.Feature,CustomFocusPoint 0x10 相机支持自定义焦点 QCamera.Feature.FocusDistance 0x20 相机支持自定义焦距 -
用setExposureMode(mode;QCamera.ExposureMode)方法设置相机的曝光模式参数 mode 的取值是 QCamera.ExposureMode 的枚举值,可取的值如表所示;
QCamera.ExposureMode的枚举值 值 模式 QCamera.ExposureMode的枚举值 值 模式 QCamera.ExposureAuto 0 自动 QCamera.ExposureNightPortrait 9 夜晚 QCamera.ExposureManual 1 手动 QCamera.ExposureTheatre 10 剧院 QCamera.ExposurePortrait 2 人物 QCamera.ExposureSunset 11 傍晚 QCamera.ExposureNight 3 夜晚 QCamera.ExposureSteadyPhoto 12 固定 QCamera.ExposureSports 4 运动 QCamera.ExposureFireworks 13 火景 QCamera.ExposureSnow 5 雪景 QCamera.ExposureParty 14 宴会 QCamera.ExposureBeach 6 海景 QCamera.ExposureCandlelight 15 烛光 QCamera.ExposureAction 7 动作 QCamera.ExposureBarcode 16 条码 QCamera.ExposureLandscape 8 风景 - 用isExposureModeSupported(mode:QCamera,ExposureMode)方法获取是否支持某种曝光模式。
-
用setFlashMode(mode:QCameraFlashMode)方法设置相机的快闪模式,参数mode的取值是QCamera,FlashMode 的枚举值,可取:
- QCamera.FlashOff
- QCamera.FlashOn
- QCamera.FlashAuto;
- 用isFlashModeSupported(mode:QCamera.FlashMode)方法获取是否支持某种快闪模式。
-
用setFocusMode(mode;QCamera,FocusMode)方法设置对焦模式,参数 mode的取值是QCamera.FocusMode 的枚举值,可取的值如表所示。
QCamera.FocusMode的枚举值 值 说 明 QCamera.FocusModeAuto 0 连续自动对焦模式 QCamera.FocusModeAutoNear 1 对近处物体连续自动对焦模式 QCamera.FocusModeAutoFar 2 对远处物体连续自动对焦模式 QCamera.FocusModeHyperfocal 3 对超过焦距范围的物体采用最大景深值 QCamera.FocusModeInfinity 4 对无限远对焦模式 QCamera.FocusModeManual 5 手动或固定对焦模式 -
用setTorchMode(mode:QCameraTorchMode)方法设置辅助光源模式,在光线不强时可以设置该模式,并会覆盖快闪模式,参数 mode可取值为 QCamera.TorchOffQCamera,TorchOn 或QCamera,TorchAuto。
-
用setWhiteBalanceMode(mode;QCamera.WhiteBalanceMode)方法设置白平衡模式,白平衡是描述红、绿、蓝三基色混合生成后白色精确度的一项指标。
- 在房间里的日光灯下拍摄的影像会显得发绿
- 在室内钨丝灯光下拍摄出来的景物会偏黄
- 而在日光阴影处拍摄到的照片则偏蓝
白平衡的作用是不管在任何光源下都能将白色物体还原为白色。参数 mode是 QCamera,WhiteBalanceMode 的枚举值可取的值如表所示。
QCamera.WhiteBalanceMode的枚举值 值 模式 QCamera.WhiteBalanceMode的枚举值 值 模式 QCamera.WhiteBalanceAuto 0 自动 QCamera.WhiteBalanceSunlight 2 阳光 QCamera.WhiteBalanceManual 1 手动 QCamera.WhiteBalanceCloudy 3 云 QCamera.WhiteBalanceShade 4 阴影 QCamera.WhiteBalanceFlash 7 快闪 QCamera.WhiteBalanceTungsten 5 鸨灯 QCamera.WhiteBalanceSunset 8 日落 QCamera.WhiteBalanceFluorescent 6 荧光灯 - 在手动模式下,需要用setColorTemperature(colorTemperature:int)方法设置色温
-
用errorString()方法取可读的出错信息,用error()方法取出错类型返回值为QCamera.NoError 或QCamera,CameraError。
视频接口 QCamera的信号
视频接口QCamera 的信号如表所示。
QCanera的信号及参数类型 | 说明 |
---|---|
activeChanged(bool) | 照相机启动或停止时发送信号 |
cameraDeviceChanged() | 照相设备发生改变时发送信号 |
cameraFormatChanged() | 格式发生改变时发送信号 |
colorTemperatureChanged() | 色温发生改变时发送信号 |
customFocusPointChanged() | 自定义焦点发生改变时发送信号 |
exposureCompensationChanged(value: float) | 曝光补偿发生改变时发送信号 |
exposureModeChanged() | 曝光模式发生改变时发送信号 |
exposureTimeChanged(speed:float) | 曝光时间发生改变时发送信号 |
flashModeChanged() | 快闪模式发生改变时发送信号 |
flashReady(ready:bool) | 可以快闪时发送信号 |
focusDistanceChanged(float) | 焦距发生改变时发送信号 |
focusPointChanged() | 焦点发生改变时发送信号 |
isoSensitivityChanged(value:int) | 光敏感值发生改变时发送信号 |
manualExposureTimeChanged(speed:float) | 自定义曝光时间发生改变时发送信号 |
manualIsoSensitivityChanged(int) | 自定义光敏感值发生改变时发送信号 |
maximumZoomFactorChanged(float) | 最大缩放系数发生改变时发送信号 |
minimumZoomFactorChanged(float) | 最小缩放系数发生改变时发送信号 |
supportedFeaturesChanged() | 所支持的特征发生改变时发送信号 |
torchModeChanged() | 辅助光源模式发生改变时发送信号 |
whiteBalanceModeChanged() | 白平衡发生改变时发送信号 |
zoomFactorChanged(float) | 缩放系数发生改变时发送信号 |
errorChanged() | 错误状态发生改变时发送信号 |
errorOccurred(error:QCamera.Error,errorString: str) | 出现错误时发送信号 |