I try open and play .wav files with NAudio lib.
private OpenFileDialog openFileDialog = null;
private NAudio.Wave.IWavePlayer waveOutDevice;
private NAudio.Wave.BlockAlignReductionStream reductionStream = null;
private NAudio.Wave.BlockAlignReductionStream CreateStream(OpenFileDialog fileDialog)
{
if (fileDialog.FileName.EndsWith(".mp3"))
{
NAudio.Wave.WaveStream pcm = NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(new NAudio.Wave.Mp3FileReader(fileDialog.FileName));
reductionStream = new NAudio.Wave.BlockAlignReductionStream(pcm);
}
else if (fileDialog.FileName.EndsWith(".wav"))
{
NAudio.Wave.WaveStream pcm = new NAudio.Wave.WaveChannel32(new NAudio.Wave.WaveFileReader(openFileDialog.FileName));
reductionStream = new NAudio.Wave.BlockAlignReductionStream(pcm);
}
else
{
throw new InvalidOperationException("Unsupported");
}
return reductionStream;
}
and in play button:
waveOutDevice = new NAudio.Wave.DirectSoundOut();
reductionStream = CreateStream(openFileDialog);
waveOutDevice.Init(reductionStream);
I’m using NAudio 1.5 version. For mp3 files, that play’s good. When I select .wav, playing are slowly, and creaking. Maybe something wrong with WaveStream pcm = WaveChannel32?
You don’t need to use BlockAlignReductionStream, WaveChannel32 or CreatePcmStream. Just use the Mp3FileReader or WaveFileReader and pass that in to your IWavePlayer,