当播放包含wav编码音频的内存流时,播放以尖锐的弹出/噼啪声开始:
ms = new MemoryStream(File.ReadAllBytes(audio_filename));
[...]
dispose_audio();
sound_output = new DirectSoundOut();
IWaveProvider provider = new RawSourceWaveStream(ms, new WaveFormat());
sound_output.Init(provider);
sound_output.Play();
直接播放wav文件时不会出现pop / crackle:
dispose_audio();
NAudio.Wave.WaveStream pcm = new WaveChannel32(new NAudio.Wave.WaveFileReader(audio_filename));
audio_stream = new BlockAlignReductionStream(pcm);
sound_output = new DirectSoundOut();
sound_output.Init(audio_stream);
sound_output.Play();
正在播放相同的文件,但是当wav数据首先存储在内存流中时,播放开始时会有一些响亮的声音。
我非常喜欢NAudio和音频的新手,所以它可能是愚蠢的,但我似乎无法弄明白。
答案 0 :(得分:0)
您正在播放WAV文件标题,就像它是音频一样。您需要使用RawSourceWaveStream
,而不是WaveFileReader
,只需传入内存流。