2010-05-07 55 views
1

我想將波形文件(.wav)分成1秒的幀或固定的時間段。我如何使用C#或Java來做到這一點。 任何人都可以幫我解決這個問題一些代碼示例或一些相關的鏈接。如何將音頻文件分割成幀?在C#

+0

向我們展示您到目前爲止的代碼... – RedFilter 2010-05-07 13:41:36

回答

0

(這太長評論)

.WAV文件是比較容易與(他人合作可以指出API允許輕鬆地與他們的工作,但你可以自己做太...我假設JMF可以用於你想要做的事情,因爲它真的是基本的「信號處理」)。基本上你有幾個頭文件來確定文件,那麼它就是原始數據:如果你有7秒的16位/ 44千赫立體聲,那麼你將有16 * 44000 * 7/8原始數據字節或616 000字節的原始數據(601 KB)。

如果你想在7秒的一秒內分割這7秒,你基本上會將這616 000個字節拼接成7個88 000字節,每個對應一秒44 kHz 16位立體聲數據。

如果要將這些文件保存回.wav文件中,則必須重新創建標題。這是理論,你可以自己做所有事情(十年前我確定用Java做它):它不是很複雜,你會學到很多東西。 .wav基本上是最簡單的格式之一。

當然,您可以使用一些API,但瞭解基礎知識很重要:每秒有x個採​​樣點(例如,當您有44 kHz採樣時爲44 000個採樣點),每個採樣點通常編碼爲8或16位,然後你通常有單聲道或立體聲(所以一個或兩個通道)。

除此之外,.wav既是無損的,也是未壓縮的,這就是爲什麼它很容易處理(與FLAC相反,它是無損壓縮的)。

+0

請注意使用mpeg-3編碼的.WAV文件。 – 2010-05-07 14:43:58

+1

WAV文件*可能包含未壓縮的PCM編碼數據,但WAV可以用作其他幾種壓縮格式(不僅僅是MP3)的容器。 – jarnbjo 2010-05-07 15:37:11