我想用Qt 5.3.0 MSVC2012 OpenGL 32位中的QMediaPlayer,QAudioProbe和QAudioOutput类制作一个音频流程序(比如手机)。
这是我的代码:
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());
}音频播放正常,但声音有很多静电干扰(暂停声音)。
我该如何解决这个问题?
发布于 2017-03-12 00:49:08
问题是网络和播放缓冲区之间的频率不同。
我通过创建一个具有双缓冲的缓冲区解决了这个问题。
https://stackoverflow.com/questions/25958333
复制相似问题