如何在 win32 中使用 SetMasterVolumeLevel 设置主音量级别?

问题描述 投票:0回答:1

我知道

ISimpleAudioVolume
SetMasterVolumeLevelScalar
但我只是想了解数学这可能是 Calculate a value percentage of a value in a logarithmic scale

我正在使用 Python PyCAW 调用

IAudioEndpointVolume::SetMasterVolumeLevel

我有这个,但它不正确,因为它输入的值不适合数据库使用的对数标度

volume.SetMasterVolumeLevel( (max_db - min_db) * percent + min_db, None)
python winapi audio
1个回答
0
投票

如果你真的不想使用标量方法,我发现

dB = 34 * math.log(volume_percentage / 100, 10)
在我的机器上工作,除了
34
之外方程应该是相同的,你必须微调它。此外,
print(volume.GetVolumeRange())
将为您提供最小分贝数。在我的例子中它是 -65.25 dB,你必须为它(或一个接近的数字)做一个例外,因为 0 的日志是未定义的。希望这可以帮助。干杯。

© www.soinside.com 2019 - 2024. All rights reserved.