2
我试图通过使用QAudioOutput和WAV以“原始格式”播放声音。定时器超时(每50ms)之后,我做以下操作:QAudioOutput更改音量后的噪音
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++;
一切都扮演好,但是当我试图改变音量例如0.2 QAudioOutput说(和我的主音量为100%),我已经得到了可怕的噪音。我必须承认,这仅发生于具有格式我一个wav文件:
bitsPerSample: 8
channels: 1
frequency: 16000
其他文件播放OK,像我说的。好打波的格式例子:
bitsPerSample: 16
channels: 1
frequency: 22050
bitsPerSample: 16
channels: 2
frequency: 22050
bitsPerSample: 16
channels: 2
frequency: 22050
您应该继续并将其标记为正确的答案。回答你自己的问题没有问题。干杯。 – jaket
嗯,我认为这可能是不正确的答案,并决定等待一段时间 – user2123079