我正在kubuntu 12.10下開發一個應用程序,我需要在QIODevice中生成一些聲音,然後用QAudioOutput播放它。Qt5 QAudioOutput沒有產生任何聲音
我已經閱讀了所有關於如何正確地做到這一點的文獻,並且我認爲已經這樣做了。
到目前爲止,我已經做了:
QVector <double> * soundData = SoundGenerator::getSound();
soundBuffer->open(QIODevice::ReadWrite);
QDataStream writeStream(soundBuffer);
foreach(double d, *soundData) {
char value = d * (2 << 7);
// qDebug() << "Value : " << (short int)value;
writeStream << value;
}
QAudioFormat format;
// Set up the format, eg.
format.setSampleRate(SoundGenerator::getAudioSampleRate());
format.setChannelCount(1);
format.setSampleSize(8);
format.setCodec("audio/pcm");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::SignedInt);
QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
audio = new QAudioOutput(format, this);
if (audio->error() != QAudio::NoError) {
qDebug() << "Problem playing sound";
}
connect(audio, SIGNAL(stateChanged(QAudio::State)), this, SLOT(aboutToFinish(QAudio::State)));
我還打電話給 音頻>啓動(soundBuffer)
- 從另一個插槽 我沒有在任何錯誤初始化QAudioOutput
而且我沒有聲音(所有其他應用程序都有聲音,並且我將一個Qt4應用程序移植到Qt5,Qt4中一切正常)Phonon
aboutToFinish插槽在ActiveState作爲狀態開始時調用,NoError在調用QAudioOutput :: error時調用,但它不再被調用,即使等待遠遠超過預期的生成聲音持續時間。
聲音生成過程不會受到質疑,它已通過編寫wav文件進行測試,並且可以正常工作。另外,我從Qt的源文件中構建了多媒體例子,當涉及到純音頻時沒有輸出(例如在sprectrum示例中),另一方面,視頻完美地播放聲音。
有沒有什麼已知的問題呢?這是一個錯誤?難道我做錯了什麼 ?
在此先感謝;)
你打電話'QAudi oDeviceInfo :: supportedCodecs()const'?我很欣賞所有平臺都應該支持'audio/pcm'',但這裏的關鍵字是**應該** ... – cmannett85 2013-03-24 10:06:12
嗨,我已經調用它並且audio/pcm在支持的編解碼器列表中 – user2203624 2013-03-25 21:04:14
sudo apt- get install libqt5multimedia5-plugins http://stackoverflow.com/questions/21939759/qaudiodeviceinfo-finds-no-default-audio-device-on-ubuntu – 2016-06-02 01:50:08