我正试图在QT中实现一个音高变换器。所以我需要从麦克风获取原始数据,以某种方式转换它并播放它。但我无法弄清楚如何获取原始数据,将其发送到缓冲区,然后,当它被转换后,播放它。目前我正在做类似的事情,但这是在没有缓冲区的情况下工作,我无法更改将要播放的数据。
QAudioFormat format;
format.setSampleRate(96000);
format.setChannelCount(1);
format.setSampleSize(32);
format.setCodec("audio/pcm");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::UnSignedInt);
audio = new QAudioInput(format, this);
connect(audio, SIGNAL(stateChanged(QAudio::State)), this, SLOT(handleStateChanged(QAudio::State)));
QIODevice* device = audio->start();
connect(device,SIGNAL(readyRead()),this,SLOT(process()));
QAudioOutput* output = new QAudioOutput(format, this);
output->start(device);
有什么办法可以做我想做的事吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
我认为您正在寻找的课程是QAudioInput
和QAudioOutput
,它们都是Qt多媒体模块的一部分。
QAudioInput
提供从麦克风获取字节流的功能,您可以将其用于任何需要的地方。一旦应用了所需的任何变换,就可以使用QAudioOutput
将其推送到扬声器。两者都提供了一些与缓冲区大小,采样频率等相关的不同设置,可以满足您的特定需求。
以下是您可能会发现有用的一些链接: