我正在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