我正在嘗試監視音頻輸入並將音頻記錄到文件,但只有當超過閾值時纔會記錄。在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