QtAudio 命名空间
QtAudio 命名空间包含由音频类使用的枚举类型。更多...
头文件 | #include <QtAudio> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Multimedia) target_link_libraries(mytarget PRIVATE Qt6::Multimedia) |
qmake | QT += multimedia |
类型
枚举 | Error { NoError, OpenError, IOError, UnderrunError, FatalError } |
枚举 | State { ActiveState, SuspendedState, StoppedState, IdleState } |
枚举 | VolumeScale { LinearVolumeScale, CubicVolumeScale, LogarithmicVolumeScale, DecibelVolumeScale } |
函数
float | convertVolume(float volume, QtAudio::VolumeScale from, QtAudio::VolumeScale to) |
类型文档
枚举 QtAudio::Error
常量 | 值 | 描述 |
---|---|---|
QtAudio::NoError | 0 | 没有发生错误 |
QtAudio::OpenError | 1 | 打开音频设备时发生错误 |
QtAudio::IOError | 2 | 在读取/写入音频设备时发生错误 |
QtAudio::UnderrunError | 3 | 音频数据没有以足够快的速度馈送到音频设备 |
QtAudio::FatalError | 4 | 发生不可恢复的错误,当前无法使用音频设备。 |
枚举 QtAudio::State
常量 | 值 | 描述 |
---|---|---|
QtAudio::ActiveState | 0 | 音频数据正在处理,在调用 start() 后并音频数据可用时设置此状态。 |
QtAudio::SuspendedState | 1 | 音频流处于挂起状态。在调用 suspend() 后或当另一个流控制音频设备时进入。在后一种情况下,调用 resume 将将音频设备控制权返回到此流。这通常只有在用户请求的情况下才会这样做。 |
QtAudio::StoppedState | 2 | 音频设备已关闭,不处理任何音频数据 |
QtAudio::IdleState | 3 | 传递给QIODevice的没有数据,音频系统的缓冲区为空,在调用 start() 后并无音频数据可用时设置此状态。 |
枚举 QtAudio::VolumeScale
此枚举定义了不同的音频音量尺度。
常量 | 值 | 描述 |
---|---|---|
QtAudio::LinearVolumeScale | 0 | 线性尺度。 0.0 (0%) 是静音,1.0 (100%) 是全音量。所有具有音频音量的 Qt Multimedia 类都使用线性尺度。 |
QtAudio::CubicVolumeScale | 1 | 立方尺度。 0.0 (0%) 是静音,1.0 (100%) 是全音量。 |
QtAudio::LogarithmicVolumeScale | 2 | 对数刻度。 0.0 (0%)代表静音,1.0 (100%)代表最大音量。UI 音量控件通常应使用对数刻度。 |
QtAudio::DecibelVolumeScale | 3 | 分贝 (dB,振幅) 对数刻度。 -200 是静音,0 是最大音量。 |
函数文档
float QtAudio::convertVolume(float volume, QtAudio::VolumeScale from, QtAudio::VolumeScale to)
将音频音量从一种音量刻度转换为另一种刻度,并返回结果。
根据上下文,不同的刻度用于表示音频音量。所有具有音频音量的 Qt 多媒体类都使用线性刻度,原因是扬声器的音量是通过对其电压进行线性调节来控制的。另一方面,人耳以对数方式感知音量。因此,在大多数应用程序中使用对数刻度对音量控件进行调节是合适的。分贝刻度本质上是对数刻度,通常用于定义声音水平,它通常用于专业音频应用程序的 UI 音量控件。立方刻度是对数刻度的计算成本较低的近似,它为低音量级别提供了更多的控制。
以下示例展示了如何将滑块控件中的音量值转换为传递给 QMediaPlayer 之前的格式。因此,从 20 增加到 30 与从 50 增加到 60 的音量感知增加是一致的。
void applyVolume(int volumeSliderValue) { // volumeSliderValue is in the range [0..100] qreal linearVolume = QtAudio::convertVolume(volumeSliderValue / qreal(100.0), QtAudio::LogarithmicVolumeScale, QtAudio::LinearVolumeScale); player.setVolume(qRound(linearVolume * 100)); }
另请参阅VolumeScale,QAudioSink::setVolume,QAudioSource::setVolume,以及 QSoundEffect::setVolume。
© 2024 The Qt Company Ltd。此处包含的文档贡献是各自所有者的版权。本提供的文档是根据 Free Software Foundation 发布的 GNU Free Documentation License 版本 1.3 的条款进行许可的。Qt 和相应的徽标是芬兰 The Qt Company Ltd. 在芬兰或世界其他国家的 商标。所有其他商标均为各自所有者的财产。