QtAudio 命名空间

QtAudio 命名空间包含由音频类使用的枚举类型。更多...

头文件 #include <QtAudio>
CMakefind_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmakeQT += multimedia

类型

枚举Error { NoError, OpenError, IOError, UnderrunError, FatalError }
枚举State { ActiveState, SuspendedState, StoppedState, IdleState }
枚举VolumeScale { LinearVolumeScale, CubicVolumeScale, LogarithmicVolumeScale, DecibelVolumeScale }

函数

floatconvertVolume(float volume, QtAudio::VolumeScale from, QtAudio::VolumeScale to)

详细说明

类型文档

枚举 QtAudio::Error

常量描述
QtAudio::NoError0没有发生错误
QtAudio::OpenError1打开音频设备时发生错误
QtAudio::IOError2在读取/写入音频设备时发生错误
QtAudio::UnderrunError3音频数据没有以足够快的速度馈送到音频设备
QtAudio::FatalError4发生不可恢复的错误,当前无法使用音频设备。

枚举 QtAudio::State

常量描述
QtAudio::ActiveState0音频数据正在处理,在调用 start() 后并音频数据可用时设置此状态。
QtAudio::SuspendedState1音频流处于挂起状态。在调用 suspend() 后或当另一个流控制音频设备时进入。在后一种情况下,调用 resume 将将音频设备控制权返回到此流。这通常只有在用户请求的情况下才会这样做。
QtAudio::StoppedState2音频设备已关闭,不处理任何音频数据
QtAudio::IdleState3传递给QIODevice的没有数据,音频系统的缓冲区为空,在调用 start() 后并无音频数据可用时设置此状态。

枚举 QtAudio::VolumeScale

此枚举定义了不同的音频音量尺度。

常量描述
QtAudio::LinearVolumeScale0线性尺度。 0.0 (0%) 是静音,1.0 (100%) 是全音量。所有具有音频音量的 Qt Multimedia 类都使用线性尺度。
QtAudio::CubicVolumeScale1立方尺度。 0.0 (0%) 是静音,1.0 (100%) 是全音量。
QtAudio::LogarithmicVolumeScale2对数刻度。 0.0(0%)代表静音,1.0(100%)代表最大音量。UI 音量控件通常应使用对数刻度。
QtAudio::DecibelVolumeScale3分贝 (dB,振幅) 对数刻度。 -200 是静音,0 是最大音量。

另请参阅QtAudio::convertVolume

函数文档

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));
}

另请参阅VolumeScaleQAudioSink::setVolumeQAudioSource::setVolume,以及 QSoundEffect::setVolume

© 2024 The Qt Company Ltd。此处包含的文档贡献是各自所有者的版权。本提供的文档是根据 Free Software Foundation 发布的 GNU Free Documentation License 版本 1.3 的条款进行许可的。Qt 和相应的徽标是芬兰 The Qt Company Ltd. 在芬兰或世界其他国家的 商标。所有其他商标均为各自所有者的财产。