在QAudioOutput中改变音量后的噪音
Noise after changing volume in QAudioOutput
我试图通过使用QAudioOutput和wav在"原始格式"播放声音。计时器超时后(每50ms),我做以下操作:
QByteArray TempSBuffer;
short int *hi;
// Check if wav has reached their end and reset its position to the beginning if yes
if((m_timerStepNum+1)*m_audioOutput->periodSize()>=m_soundBuffer.size()) {
m_timerStepNum=0;
}
// 2. Write the buffer data for the next timecycle into a temporary QByteArray TempSBuffer
TempSBuffer=m_soundBuffer.mid(m_timerStepNum*m_audioOutput->periodSize(), m_audioOutput->periodSize());
hi=(short int *)TempSBuffer.data();
for(int i=0;i < m_audioOutput->periodSize() / 2;i++) { hi[i]*= m_audioOutput->volume(); }
// 4. Play the resulting buffer
m_ioDevice->write(TempSBuffer, m_audioOutput->periodSize());
m_timerStepNum++;
一切播放ok,但当我试图改变音量说,例如0.2在QAudioOutput(和我的主音量是100%),我有可怕的噪音。我应该承认,这种情况只发生在我的一个wav文件,格式为:
bitsPerSample: 8
channels: 1
frequency: 16000
其他文件播放正常,正如我所说的。格式示例:
bitsPerSample: 16
channels: 1
frequency: 22050
bitsPerSample: 16
channels: 2
frequency: 22050
bitsPerSample: 16
channels: 2
frequency: 22050
根据Final Notes -
中的PCM(未压缩)数字音频的abc由于某些原因,WAV文件不支持带符号的8位格式,因此在读写WAV文件时,请注意8位表示无符号,但实际上在所有其他情况下,假设整数是有符号的是安全的。
我把我的原始wav转换成16位格式,解决了一段时间的问题。
相关文章:
- FFmpeg - 重新采样的音频,噪音很大
- 使用QaudioOutput进行实时流式传输
- QaudioOutput代码是否有任何内存泄漏
- 滤除噪音和速度值的变化
- 降低pcm音量后产生奇怪的噪音
- 噪音消除程序
- 使用SDL2播放正弦波-噪音/划痕问题
- 在QAudioOutput中改变音量后的噪音
- 播放产生的音频数据在声音中有噪音和周期性的咔嗒声
- 我的柏林噪音看起来不对,几乎像灰色t恤的材料(石南).为什么
- 我如何使一个QAudioOutput对象从缓冲区播放
- 实时流与QAudioOutput (qt)
- EDSDK拍摄无噪音的照片
- Objective-C, CoreAudio:播放的声音有额外的噪音,嘶嘶声和砰的一声的可能原因