为什么Windows的SoundPlayer不播放RF64 WAV文件?

时间:2013-10-24 09:46:32

标签: c# windows wav audio-player

我正在使用System.Media.SoundPlayer API在我的应用程序中播放声音文件。

using System.Media;

public class MySoundPlayer
{
     private SoundPlayer player = new SoundPlayer();

     public PlayFile(string file)
     {
          try 
          {
              player.SoundLocation = fileName;
              player.Load();
              player.Play();
          }
          catch (Exception e) { Debug.WriteLine(e.Message); }
     }
}

这几乎适用于所有WAV文件。但是,我发现有一种类型的wav文件,RF64类型(有一个额外的(但在我的情况下总是空的)'JUNK'chunck以防万一文件大小可能超过4GB。{{ 1}}加载这个文件就好了,不会抛出任何异常,但是不能播放。另一方面,Windows Media Player播放得很好,所以文件似乎是正确的。

作为替代方案,我尝试了另一种播放文件的方式:

SoundPlayer

同样,这可以很好地播放普通的WAV文件,但是会出现错误'丁!'当它获得RF64文件时。

有没有办法让这些API来播放我的文件?或者还有另一个Windows API可以播放RF64 WAV文件吗?

1 个答案:

答案 0 :(得分:1)

SoundPlayer的功能非常有限。它只播放标准的WAV文件,它无法重新定位或设置音量。您可以尝试查看WPF中的MediaElement是否会播放您的WAV文件。

如果这不起作用,一个选项是NAudio,这是我维护的开源库,WaveFileReader类可以读取RF64文件。