我正在尝试监视音频输入并将音频记录到文件,但只有当超过阈值时才会记录。在Qt中录制似乎有两个主要选项; QAudioRecorder和QAudioInput。Qt:API将原始QAudioInput数据写入文件就像QAudioRecorder
长话短说:我试图找到可以从QAudioInput
读取原始音频采样数据,并将其记录到文件中,就像QAudioRecorder
这个API,但奇怪的是它似乎并不存在。举一个例子,QAudioRecorder
的设置会像下面的(但不是指定与setAudioInput()
一个输入设备传递给它的采样字节):
QAudioEncoderSettings audioSettings;
QAudioRecorder recorder = new QAudioRecorder;
audioSettings.setCodec("audio/PCM");
audioSettings.setQuality(QMultimedia::HighQuality);
recorder.setEncodingSettings(audioSettings);
recorder.setContainerFormat("wav");
recorder.setOutputLocation(QUrl::fromLocalFile("/tmp/test.wav"));
recorder.setAudioInput("default");
recorder.record();
我使用QAudioInput
因为我需要访问原始样本。 QAudioInput
的问题在于,Qt似乎没有提供一种简单的方法,将我从QAudioInput
中获得的原始样本提取出来,并将它们编码为沿途编码的文件。 QAudioRecorder
做得很好,但不能将原始样本送入QAudioRecorder
;您只需告诉它要记录哪个设备以及如何存储它。
注意我尝试使用QAudioInput
和QAudioRecorder
在一起 - QAudioInput
的原始访问和QAudioRecorder
每当我需要记录,但有两个主要问题:A)只有这些人能在同一时间内阅读给定的设备。 B)我想在超过阈值之前及之前记录数据,而不是超过阈值之后。
你解决了吗?我将尝试使用'QAudioSystemPlugin'制作虚拟音频设备。 – Velkan
〜分类。我找到了一个适合我的折中解决方案。我会尽快将解释发布为答案。 – spinkus