2017-06-02 33 views
1

我目前正在研究分析你的聲音的程序。 我有一個運行WaveInEvent的線程,可以記錄來自麥克風的音頻。 當數據可用時(WaveInEventArgs事件觸發),它對它進行編碼並將其串行化併發送到分析器。WaveInEvent處理程序多久執行一次?

我希望能夠使用音頻文件,比如.mp3。 我讀這樣的:

byte[] audioFileBytes = File.ReadAllBytes(audioFilePath); 

然後將它發送到分析儀相同的方式。

我遇到了一些問題:音頻文件沒有在另一端處理 - 雖然它工作,如果我使用「動態」音頻輸入。我猜它與緩衝區長度有關,但我找不到WaveInEvent緩衝區有多長時間,以及WaveInEventArgs事件觸發的頻率。 其次,數據在大約2秒內被處理,並且當我實時得到數據時,我用它爲分析器端收到的數據添加時間戳,所以現在它爲整個文件添加一個時間戳。如果我每字節發送一個字節,我將在大約2秒鐘內獲得120萬個時間戳,這仍然不能在圖表上打印 - 此外,圖表應該從0開始,並以音頻文件的長度結束(此處爲70秒我有的測試),而不是2秒。

作爲第一步,我想到了「實時」讀取音頻文件,並從文件中發送音頻,就好像它來自麥克風一樣,但我不知道該怎麼做。

我的問題歸結爲:WaveInEvent處理程序的啓動頻率如何?

回答

1

這是關於緩衝區的長度。每次緩衝區充滿音頻時,事件都會觸發。看看BufferMillisecondsNumberOfBuffers屬性。您可以在開始錄製之前將它們設置爲所需的值。

相關問題