1
我想用QAudioInput捕获来自我的音频设备的声音。我有一个立体声(两个chanels)输入信号,通常我只是用号码调用函数setChannelCount()我的chanels,在这种情况下2.我的目标是保存来自chanel1的文件1中的信号和来自chanel 2中的文件2中的信号。我的问题是如何分离这两个信号。如何从QAudioInput捕获两个通道的音频信号
任何帮助,将不胜感激。谢谢
我想用QAudioInput捕获来自我的音频设备的声音。我有一个立体声(两个chanels)输入信号,通常我只是用号码调用函数setChannelCount()我的chanels,在这种情况下2.我的目标是保存来自chanel1的文件1中的信号和来自chanel 2中的文件2中的信号。我的问题是如何分离这两个信号。如何从QAudioInput捕获两个通道的音频信号
任何帮助,将不胜感激。谢谢
从QAudioInput
的文档判断,您需要自己专门化QIODevice
,其中您将覆盖writeData
以便将数据扇出到2个文件中。我没有试图编译这个,但它应该给你一个总体思路。
class MyIODevice : public QIODevice
{
public:
MyIODevice(QIODevice* file1, QIODevice* file2)
: m_file1(file1), m_file2(file2) {}
qint64 writeData(const char* data, qint64 maxSize)
{
// for 32-bits with the channels interleaved.
// I'm also making an assumption that QAudioInput will call this with
// a complete frame of data.
for (int i = 0; i < maxSize/8; ++i)
{
m_file1->writeData(data, 4);
data += 4;
m_file2->writeData(data, 4);
data += 4;
}
}
private:
QIODevice* m_file1;
QIODevice* m_file2;
};
书面这只能与一个音频格式的工作,但可以很容易地取得通过传递有关格式构造一些参数比较一般,等...
感谢,但保存前,我会像处理来自通道1的信号1和来自通道2的信号2实时处理,我真的有一个使用相同的音频格式,但来自两个通道。因此,我打算使用两个缓冲区1和2.我的问题是我不知道如何使用2(setChannelCount(2))调用Ithe函数setChannelCount()时如何分离两个信号。如何设置或分离来自通道1和通道2的信号。QAudioformat文档不帮助我 –
@TheMan我没有看到您的评论更快,但是你现在问的是与原始帖子不同的问题。 – jaket