4
我想用Qt 5.3.0 MSVC2012 OpenGL 32bit中的QMediaPlayer
,QAudioProbe
和QAudioOutput
類製作一個音頻流程序(如電話)。如何通過QIODevice播放QAudioBuffer?
這是我的代碼:
musicPlayer = new QMediaPlayer();
musicProbe = new QAudioProbe();
musicProbe->setSource(musicPlayer);
connect(musicProbe, SIGNAL(audioBufferProbed(QAudioBuffer)),
this, SLOT(slotGetMusicData(QAudioBuffer)));
如果探測音頻數據,該插槽會被激活。
void MusicPlayer::slotGetMusicData(QAudioBuffer musicBuffer)
{
/*QAudioBuffer to QByteArray*/
*musicDataBuffer = musicDataBuffer->fromRawData((char *)musicBuffer.data(),
,musicBuffer.byteCount());
/*Send Music Data*/
musicSocket->sendMudicData(*musicDataBuffer);
qDebug("send complete");
}
使用套接字,我將數據發送到另一個程序。
其他程序播放收到的音樂。
QAudioOutput *audioOutput = new QAudioOutput(format, this);
QIoDevice *audioDevice = audioOutput->start();
然後,接收到該插槽的數據被激活。
void BgmSocket::slotPlayBgm(QByteArray data)
{
audioDevice->write(data.data(), data.size());
}
音頻打得很好,但聲音有很多靜態的(停頓音)的。
我怎樣才能解決這個問題?