qt6播放声音和qt5有一些不同,这个程序较为简单,可以借鉴。
#include <QCoreApplication>
#include <QtMultimedia>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QMediaDevices *outputDevices = new QMediaDevices();
QAudioDevice outputDevice = outputDevices->defaultAudioOutput();
QAudioFormat format = outputDevice.preferredFormat();
// ChannelConfigStereo is 2, Int16 is 2
qDebug("sampleRate: %d, channelCount: %d, sampleFormat: %d",
format.sampleRate(), format.channelCount(), format.sampleFormat()
);
QAudioSink *out = new QAudioSink(outputDevice, format);
QIODevice *io=out->start();
int size = 4096;
char *buf = new char[size];
FILE *fp = fopen("out.pcm", "rb");
while (!feof(fp))
{
if (out->bytesFree() < size)
{
QThread::msleep(1);
continue;
}
int len = fread(buf, 1, size, fp);
if (len <= 0)break;
io->write(buf, len);
}
fclose(fp);
delete []buf;
buf = 0;
return a.exec();
}