В NAudio все классы Wav являются производными от класса WavStream, а класс WavStream - от System.IO.Stream.
Вот пример:
var inFile = @"c:\test.wav";
var inFileFormat = WaveFormat.CreateALawFormat(8000,1);
using (var inStream = File.OpenRead(inFile))
using (var reader = new RawSourceWaveStream(inStream, inFileFormat))
{
using (var waveMixerStream = new WaveMixerStream32(new List<WaveStream>() { reader }, true))
{
using (var fsResult = new FileStreamResult(waveMixerStream, "audio/wav"))
{
/* any custom here */
}
}
}
RawSourceWaveStream
Также необходимо изменить метод dispose из класса WaveMixerStream32 следующим образом:
protected override void Dispose(bool disposing)
{
if (disposing)
{
/* no need to dispose each inputStream,
let all inputStreams released by GC
/* lock (inputsLock)
{
foreach (WaveStream inputStream in inputStreams)
{
inputStream.Dispose();
}
} */
}
else
{
System.Diagnostics.Debug.Assert(false, "WaveMixerStream32 was not disposed");
}
base.Dispose(disposing);
}
WaveMixerStream32.cs
Надеюсь, это поможет.