QtAudio 名称空间

QtAudio 名称空间包含用于音频类的枚举。 更多...

头: #include <QtAudio>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia

类型

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

函数

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

详细描述

类型文档编制

enum QtAudio:: Error

常量 描述
QtAudio::NoError 0 没有出现错误
QtAudio::OpenError 1 打开音频设备时,出现错误
QtAudio::IOError 2 读/写音频设备时,出现错误
QtAudio::UnderrunError 3 未以足够快的速率,把音频数据喂给音频设备
QtAudio::FatalError 4 出现不可恢复错误,音频设备此时不可用。

enum QtAudio:: State

常量 描述
QtAudio::ActiveState 0 正处理音频数据,此状态是在调用 start() 后设置的,且音频数据同时可用于处理。
QtAudio::SuspendedState 1 音频流处于挂起状态。在调用 suspend() 后 (或当另一流控制音频设备时),进入。在后一情况下,对 resume 的调用将把音频设备的控制返回给此流。通常,这只应在用户请求时进行。
QtAudio::StoppedState 2 关闭音频设备,且不处理任何音频数据
QtAudio::IdleState 3 The QIODevice 传入没有数据且音频系统的缓冲为空,此状态在调用 start() 后设置,且同时没有音频数据可用于处理。

enum 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 为全音量。

另请参阅 QtAudio::convertVolume ().

函数文档编制

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

转换音频 volume from 音量比例缩放 to 另一,并返回结果。

从属上下文,表示音频音量是使用不同刻度。所有拥有音频音量的 Qt Multimedia 类都使用线性刻度,原因是扬声器响度是通过线性刻度调制其电压来控制的。另一方面,人的耳朵以对数方式感知响度。因此,在大多数应用程序中,音量控制使用对数刻度很合适。分贝刻度本质上是对数的,且常用于定义声明级别,通常用于专业音频应用程序 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 ().