2013-10-31 49 views
0

我想導出一個雙[]數組到一個wav文件。我在操作標題(RIFF,fmt等)時遇到了一些麻煩。任何想法我應該如何處理這個?也許使用BitConverter將double []數組轉換爲byte []數組,然後使用NAudio的waveFileWriter?任何示例代碼非常感謝!雙陣列到wav

回答

1

只需使用WaveFileWriter的WriteSample方法逐個寫入每個樣本,或者使用WriteSamples即可在一次打擊中完成。既然你有一個雙精度數組,你可以使用一點LINQ來首先轉換成浮點數組。

float[] floatArray = doubleArray.Select(s => (float)s).ToArray(); 
writer.WriteSamples(floatArray, 0, floatArray.Length); 

這將每個樣本寫入到WaveFileWriter,轉換到正確的位深度(例如,16位或32位IEEE浮點),它依賴於當你打開WaveFileWriter

+0

謝謝! NAudio看起來非常棒!獎勵!我很快就會進入;) – Cobe

1

您將不得不根據標準編寫WAV文件的所有必要位。單聲道和立體聲以及採樣率問題也會有問題。強烈建議你看看已經存在的一些處理這個問題的源代碼(我沒有在快速搜索中找到任何C#版本,雖然有幾個C/C++版本)。試圖編寫僅基於標題規範的代碼將被擊中或錯過

+0

沒」所選WAVEFORMAT我自己也可以找到任何現有的代碼。我知道唯一的「快捷方式」是NAudio,但我不確定如何實現這一點。發現這個http://mark-dot-net.blogspot.gr/2011/04/how-to-use-wavefilewriter.html,但它假定輸入數組由字節組成 – Cobe

+0

原始音頻是字節(實際上是字16通常是位字)。你的浮點數據是什麼樣的? –

+0

我看着你引用的頁面,它有一個將浮點轉換爲字節流的例子。 –