2016-04-06 41 views
0

我可以讓WdlResamplingSampleProvider爲Mark Heath在他的博客上提供的16位示例工作;WdlResamplingSampleProvider是否支持32位?

int outRate = 16000; 
var inFile = @"test.mp3"; 
var outFile = @"test resampled WDL.wav"; 
using (var reader = new AudioFileReader(inFile)) 
{ 
    var resampler = new WdlResamplingSampleProvider(reader, outRate); 
    WaveFileWriter.CreateWaveFile16(outFile, resampler); 
} 

除了我正在閱讀一個wav文件,而不是一個mp3文件。但我真的需要使用32位wav文件(輸入和輸出),而不會丟失比特深度。有沒有辦法做到這一點?

回答

0

WdlResamplingSampleProvider適用於32位浮點(IEEE)採樣。所以AudioFileReader已經轉換爲32位浮點,如果輸入不是那樣的話。所以完全取決於你對輸出所做的事情。如果你只是打電話CreateWaveFile你會得到一個32位浮點WAV文件。

+0

如果我調用CreateWaveFile而不是CreateWaveFile16,則會出現以下錯誤;無法投射'NAudio.WaveSampleProviders.WdlResamplingSampleProvider'類型的對象來鍵入'NAudio.Wave.IWaveProvider'。 – timothyjb

+0

有一個SampleToWaveprovider可以使用 –

+0

我試圖找出如何自己做到這一點,但沒有運氣。一旦我使用AudioFileReader讀取wave文件,我如何使用SampleToWaveProvider讓CreateWaveFile工作?我是否在WdlResamplingSampleProvider之前或之後使用它? – timothyjb