私はkubuntu 12.10で作業しており、QIODeviceにサウンドを生成して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)));
audio->start(soundBuffer) への呼び出しもあります
— 別のスロットから QAudioOutput の初期化にエラーはありません
そして、まったく音がありません(他のすべてのアプリケーションには音があり、Qt4アプリをQt5に移植しています.Qt4では、Phononですべて問題ありません)
aboutToFinish スロットは、状態として ActiveState で最初に呼び出され、QAudioOutput::error を呼び出すときに NoError で呼び出されますが、予想される生成されたサウンドの長さよりもはるかに長く待っていても、それ以上は呼び出されません。
サウンド生成プロセスは問題ではなく、wav ファイルを書き込んでテストされており、動作します。
さらに、Qt のソースからマルチメディアの例を作成しました。純粋なオーディオに関しては出力がありません (たとえば、sprectrum の例)。一方、ビデオはサウンドで完全に再生されます。
それに関する既知の問題はありますか?それはバグですか?私は何か間違っていますか?
前もって感謝します ;)