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