怎么一边接收Wav数据一边播放Wav格式音频数据?

大树学长 2019-10-25 03:48:42
不是直接播放WAV文件
QMediaPlayer和QSound只能用来播放音频文件,
使用QAudioOutput,但是看网上写的都是在main中使用,复制到别的类中就无法使用了,

传输的数据为uint8_t
typedef unsigned char uint8_t;

有没有人解答下要一边接收wav数据一边播放这种应该怎么做最好???


...全文
448 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
清风2020 2020-11-14
  • 打赏
  • 举报
回复
楼主,我也碰到类似的问题,求demo源码,谢谢!邮箱:313051086@qq.com
大树学长 2019-10-29
  • 打赏
  • 举报
回复
看这个博客解决了问题 https://blog.csdn.net/jklinux/article/details/72620102#commentsedit
大树学长 2019-10-28
  • 打赏
  • 举报
回复
引用 2 楼 走好每一步 的回复:
声音播放最好自己开线程去播放,不要阻塞UI线程的消息循环(也就是不要在槽函数里做过久的程序运行)
放在线程中播放没有声音,感觉是查找声卡出了问题

QBuffer* input = new QBuffer(byteBuffer);
    input->open(QIODevice::ReadOnly);

    QAudioDeviceInfo deviceInfo(QAudioDeviceInfo::defaultOutputDevice());
    deviceInfo.isFormatSupported(audioFormat);

    QAudioOutput *audio = new QAudioOutput(audioFormat,this);
    audio->start(input);
走好每一步 2019-10-28
  • 打赏
  • 举报
回复
声音播放最好自己开线程去播放,不要阻塞UI线程的消息循环(也就是不要在槽函数里做过久的程序运行)
大树学长 2019-10-28
  • 打赏
  • 举报
回复

QByteArray array;

//此处传值给array,为wav播放数据

    QBuffer buffer(&array);
    buffer.open(QIODevice::ReadWrite);

    QAudioFormat audioFormat;
    audioFormat.setCodec("audio/pcm");
    audioFormat.setByteOrder(QAudioFormat::LittleEndian);
    audioFormat.setSampleRate(8000);
    audioFormat.setChannelCount(1);
    audioFormat.setSampleSize(16);
    audioFormat.setSampleType(QAudioFormat::SignedInt);

    QAudioOutput *audio = new QAudioOutput(QAudioDeviceInfo::defaultOutputDevice(), audioFormat );
    audio->start(&buffer);//放在别的类中这个地方就直接程序崩溃了,但是如果放在main中就完全没有问题

16,818

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧