首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用QIODevice播放QAudioBuffer?

如何使用QIODevice播放QAudioBuffer?
EN

Stack Overflow用户
提问于 2014-09-21 18:38:26
回答 1查看 1.6K关注 0票数 4

我想用Qt 5.3.0 MSVC2012 OpenGL 32位中的QMediaPlayerQAudioProbeQAudioOutput类制作一个音频流程序(比如手机)。

这是我的代码:

代码语言:javascript
复制
musicPlayer     = new QMediaPlayer();
musicProbe      = new QAudioProbe();

musicProbe->setSource(musicPlayer);

connect(musicProbe, SIGNAL(audioBufferProbed(QAudioBuffer)),
        this, SLOT(slotGetMusicData(QAudioBuffer)));

如果探测到音频数据,则该插槽处于活动状态。

代码语言:javascript
复制
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");
}

使用套接字,我将数据发送到另一个程序。

另一个程序播放接收到的音乐。

代码语言:javascript
复制
QAudioOutput *audioOutput = new QAudioOutput(format, this);
QIoDevice *audioDevice = audioOutput->start();

然后,激活该时隙接收到的数据。

代码语言:javascript
复制
void BgmSocket::slotPlayBgm(QByteArray data)    
{
    audioDevice->write(data.data(), data.size());
}

音频播放正常,但声音有很多静电干扰(暂停声音)。

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2017-03-12 00:49:08

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25958333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档