2010-03-31 66 views
1

我正在尋找一種以編程方式將短陣列保存爲PCM數據的方式。我知道這應該是可能的,但我還沒有找到一種在Android上執行此操作的簡單方法。以編程方式在Android中編寫PCM WAV數據

本質上,我正在採取電壓數據,並且我想將它保存爲PCM格式。我的功能看起來是這樣的:

public void audifySignal(short[] signal) { 
    // Create a WAV file from the incoming signal 
    } 

任何建議將是真棒,甚至引用。看起來像android內置的音頻API更適合直接從麥克風錄製,而不是更低級別的信號處理類型工作(至少將原始數據保存到文件中)。我也想避免不得不手動編寫PCM文件頭和什麼不...

謝謝!

回答

3

山姆,我不知道有關特定的Android庫,但我會繼續前進,這樣說:

原始PCM數據是非常直接的。它通常只是順序數據。也許你需要了解WAV格式,以便了解PCM是什麼以及它是如何工作的。

WAV被廣泛用​​作未壓縮音頻的容器。深入瞭解WAV文件如何包含數據,將會對原始數字音頻的工作方式產生一定的影響。

此頁幫我一個公平位:

http://www.sonicspot.com/guide/wavefiles.html

有趣的是,你可以或多或少地火在聲音卡上的數據,它會播放。它可能聽起來對我們人類來說很瘋狂,因爲聲卡不關心它是否聽起來有點亂碼。

無論聽起來是否令人滿意,取決於您是否提供了正確的樣本量,頻道數量,頻率以及符合前者的一些PCM數據。

看到您無法從原始PCM數據本身「檢測」樣本大小,通道數量或正確頻率。您必須將這些關鍵數據與PCM數據一起存儲,以便其他軟件可以讓聲卡知道如何處理PCM數據。

這也正是WAV容器格式的用武之地。

還有其他的格式,但WAV是相當常見,因此這是開始的好地方。

乾杯 Tristen

0

您可以使用Android的AudioTrack寫要得到發揮原始的PCM數據,但它不是一個函數生成wav文件左右。