如何知道我是否可以使用System.Media.SoundPlayer播放wav文件

时间:2013-06-04 16:01:07

标签: c# media

要播放I wave文件:

SoundPlayer p = new SoundPlayer(@"myWaveFile.wav");
p.Play();

某些wav文件由于某种原因无法播放。例如,当尝试播放此wave文件时,我收到错误:

SoundPlayer p = new SoundPlayer(@"c:\Windows\Media\Afternoon\Windows Balloon.wav");
p.Play();
// the exception that I get is:   Sound API only supports playing PCM wave files.

我正在寻找一种可以告诉我是否可以播放波形文件的方法,例如此方法

public void CanPlayWaveFile(string file)
{
        SoundPlayer p = new SoundPlayer(file);
        try
        {
            p.Play();
            return true;
        }
        catch
        {
            return false;
        }
}

该方法的问题在于,如果我可以播放该文件,我可能不想播放我想知道的音频。此外,我不想等待波形文件完成播放,以便看看我是否可以稍后播放该文件。 那我怎么知道wave文件是否有这种PCM格式。如果存在SoundPlayer.CanPlayFile()方法,那就太好了。

修改

我看到有人帮我看看我如何播放其他格式或转换此格式。我不想将其转换为其他格式。我只是想知道我是否可以玩它们而不必使用try catch块......

1 个答案:

答案 0 :(得分:1)

  

WAV文件可以有多种压缩方法,包括MP3。 PCM(脉冲编码调制)是System.Media.SoundPlayer类支持的唯一一个。幸运的是,它是最常见的WAV格式,因此大多数.WAV文件都能正常工作。

http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/d30a3002-a553-4bb2-b8da-058255395a5e/

您可以将这些WAV转换为PCM,或者您必须使用其他媒体播放器。

相关问题