gpt4 book ai didi

qt - 如何通过 QIODevice 播放 QAudioBuffer?

转载 作者:行者123 更新时间:2023-12-04 13:24:17 27 4
gpt4 key购买 nike

我想使用 QMediaPlayer 制作音频流程序(如电话) , QAudioProbeQAudioOutput Qt 5.3.0 MSVC2012 OpenGL 32 位中的类。

这是我的代码:

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());
}

音频播放良好,但声音有很多静态(暂停声音)。

我怎么解决这个问题?

最佳答案

问题是网络和播放缓冲区之间的频率不同。

我通过创建一个双缓冲的缓冲区解决了这个问题。

关于qt - 如何通过 QIODevice 播放 QAudioBuffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25958333/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com