【发布时间】:2013-01-03 22:49:46
【问题描述】:
我正在制作一个 XNA 4.0 游戏,我正在使用 NAudio 播放声音,因为它比 XNA 的 Sound 模块更强大。
我需要以较慢的速度播放 MP3 文件(以 0.75 倍或 0.5 倍的速度播放)。我最初的想法是改变 WaveStream 的采样率。这是我想要做的:
WaveStream originalWaveStream = new MP3FileReader(filepath);
WaveChannel32 volumeStream = new WaveChannel32(originalWaveStream); //So I can change the volume of the playback
WaveFormat tempFormat = new WaveFormat((int)(volumeStream.WaveFormat.SampleRate * 0.75f),(int)volumeStream.WaveFormat.BitsPerSample,(int)volumeStream.WaveFormat.Channels);
WaveFormatConversionStream tempStream = new WaveFormatConversionStream(tempFormat, volumeStream);
WaveChannel32 slowerWaveStream = new WaveChannel32(tempStream);
如果我运行它,当 tempStream 的构造函数运行时,我会收到一个 MmException,上面写着“AcmNotPossible 调用 acmStreamOpen”。
我做错了什么?改变采样率是改变播放速度的唯一方法吗?有正确的方法吗?
【问题讨论】: