Qt6.8 使用QAudioSink 播放网络PCM语音

1 用到的Qt类

音频输出接口类:QAudioSink

音频设备类:QAudioDevice

相关资料:https://doc.qt.io/qt-6/zh/qaudiosink.html

2 初始化扬声器

cpp 复制代码
QIODevice *m_output;//扬声器播放对象

 QAudioFormat outputAudioFormat;

 QScopedPointer<QAudioSink> audioOutputsource;
cpp 复制代码
//初始化扬声器
void Module_Sound::AudioInOut::initializeOutPutAudio(const QAudioDevice &deviceInfo)
{

    qDebug() << "outputAudioDevice音频输出设备:" << deviceInfo.description();

    outputAudioFormat = deviceInfo.preferredFormat();

    outputAudioFormat.setSampleRate(8000); //设置采样率以对赫兹采样。 以秒为单位,每秒采集多少声音数据的频率.
    outputAudioFormat.setChannelCount(1);   //将通道数设置为通道。
    // outputAudioFormat.setSampleSize(16);     /*将样本大小设置为指定的sampleSize(以位为单位)通常为8或16,但是某些系统可能支持更大的样本量。*/
    outputAudioFormat.setSampleFormat(QAudioFormat::Int16);

    // if(!deviceInfo.isFormatSupported(outputAudioFormat))
    // {
    //     qWarning() << "not Support fromat";
    // }

    qDebug("sampleRate: %d, channelCount: %d, sampleFormat: %d",
           outputAudioFormat.sampleRate(), outputAudioFormat.channelCount(), outputAudioFormat.sampleFormat()
           );
    audioOutputsource.reset(new QAudioSink(deviceInfo, outputAudioFormat));
    audioOutputsource->setBufferSize(300 * outputAudioFormat.bytesPerFrame() * outputAudioFormat.sampleRate() / 1000);
    audioOutputsource->setVolume(1);//最大音量
}

3 开始播放

cpp 复制代码
//开始播放
void Module_Sound::AudioInOut::startAudioOutput()
{
    qDebug() << "onstartListening";
    m_output = audioOutputsource->start();
}

4 写入网络PCM数据

cpp 复制代码
//语音数据写入播放缓存
void Module_Sound::AudioInOut::SoundPlay(int PalyIndex, QByteArray VoiceDataX)
{
    m_output->write(VoiceDataX );
}

5 停止播放

cpp 复制代码
//停止播放
void Module_Sound::AudioInOut::stopAudioOutput()
{
    qDebug() << "onstopListening";
    audioOutputsource->stop();
}
相关推荐
STQY燊桐启元(深圳)电子科技4 天前
耐高温工况专项适配:相变陶瓷片如何突破高温工业设备散热瓶颈
经验分享·笔记·pcm
STQY燊桐启元(深圳)电子科技4 天前
工业物联网网关散热升级,相变陶瓷片解决微型设备积温过热难题
经验分享·笔记·pcm
STQY燊桐启元(深圳)电子科技5 天前
大功率储能PCS散热升级,ST-PCM180氮化铝相变陶瓷适配高密度热管理
经验分享·笔记·pcm
STQY燊桐启元(深圳)电子科技7 天前
免涂硅脂新时代,ST‑PCMTC96 与 ST‑PCM180 相变陶瓷片重构功率器件热管理
经验分享·笔记·重构·pcm
折枝吖12 天前
音视频开发-PCM 原理与 AI 模块实战
音视频·pcm
程序员老陆1 个月前
FFmpeg6 在 Windows 打开麦克风并录成 PCM:不走 Qt Multimedia,也不碰 WASAPI
windows·ffmpeg·音视频·pcm
PGCCC1 个月前
PostgreSQL 数据库认证体系技术解析:PCA / PCP / PCM 三级能力模型与考纲拆解
数据库·postgresql·pcm
砚凝霜1 个月前
软考网络工程师|第 2 章 信道延迟、传输介质、数据编码、数字调制、PCM 完整备考笔记
网络·笔记·pcm
Curvatureflight3 个月前
浏览器音频采集实践:麦克风权限、降噪、回声消除与 PCM 转换
前端·javascript·音视频·信息与通信·web·pcm
REDcker3 个月前
PCM与音量详解
pcm