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