3
我想重新採樣音頻字節數組從8Khz到48Khz。音頻流從網絡套接字獲得爲byte[]
。如何使用NAudio重新採樣內存中的音頻流(字節[])?
閱讀Mark Heath's Blog about resampling using NAudio,我碰到下面的代碼
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);
}
但這個代碼作用,而不是在內存中的數據文件流(AudioFileReader
)(byte[]
)。我怎樣才能修改這段代碼來上傳我的字節數組?
編輯:基本上我想將從網絡對端獲得的8KHz數據上採樣到48KHz並使用WASAPI播放。
WdlResamplingSampleProvider接受一個實現ISampleProvider的對象,但BufferedWaveProvider和RawSourceWaveStream都實現了IWaveProvider。這是否意味着我需要實現實現ISampleProvider的自定義BufferedWaveProvider還是有其他解決方法? – Curious
而且我不需要寫入wav文件。相反,我想用WASAPI播放上採樣音頻數據。我認爲我形成這個問題的方式讓你感到困惑。因此,更新問題 – Curious
@Fadi有一個.ToSampleProvider擴展方法可以使用。但是,如果您只是想用WASAPI播放上採樣數據,那麼只需將BufferedWaveProvider傳遞給WasapiOut,因爲我已將重採樣器放入WasapiOut。 –