在尝试实时降低WAV文件的音量时,音频正在剪辑(或点击)。
我已经在SampleChannel
,VolumeSampleProvider
和WaveChannel32
个实例上尝试过,源代码是 32位WAV文件。
如果我在WaveOut
实例上尝试,剪辑不再发生,但我不想这样,因为它会降低应用程序中所有声音的音量。
这只有在我降低音量时才会发生,升起它不会造成削波。
这是一个已知问题还是我应该以不同的方式处理这个问题?
注意: 这就是在给定时间范围内音量实时下降的方式:
0.9523049
0.9246111
0.9199954
0.89384
0.8676848
0.8415294
0.8169126
0.7907572
0.7646018
0.739985
0.7122912
0.6892129
0.6630576
0.6369023
0.6122856
0.5861301
0.5599748
0.535358
0.5092026
0.4830474
0.456892
0.4322752
0.4061199
0.3799645
0.3553477
0.3276539
0.3030371
0.2784202
0.2522649
0.2261095
0.2014928
0.176876
0.149182
0.1245652
0.09841
0.07225461
0.04763785
0.02148246
0
答案 0 :(得分:0)
显然DesiredLatency
实例上存在NumberOfBuffers
和WaveOut
问题。默认值会导致问题,更改的值会修复它。
这些是我用来解决问题的价值。
WaveOutDevice = new WaveOut(WaveCallbackInfo.NewWindow())
{
DesiredLatency = 700, //! adjust the value to prevent sound clipping/clicking
NumberOfBuffers = 3, //! number of buffers must be carefully selected to prevent audio clipping/clicking
};