我似乎无法在我的 C# .NET Windows 窗体程序中播放音频文件

问题描述 投票:0回答:1

我将名为 MouseClick.wav 的音频文件放在资源文件夹下,并且代码中有一个函数可以播放它。

private void playSimpleSound()
{
    SoundPlayer simpleSound = new SoundPlayer(Properties.Resources.MouseClick);
    simpleSound.Play();
}

但是,当我运行程序时:

    private void numPad_Click(object sender, EventArgs e)
{
    //my lines of code

    playSimpleSound();
}

我不断收到错误消息:

Exception thrown: 'System.InvalidOperationException' in System.dllAn unhandled exception of type 'System.InvalidOperationException' occurred in System.dllSound API only supports playing PCM wave files.

然后,当我使用这些在线转换器工具将 MouseClick.wav 文件转换为 PCM 时,我收到另一条错误消息:

Exception thrown: 'System.InvalidOperationException' in System.dllAn unhandled exception of type 'System.InvalidOperationException' occurred in System.dllThe file located at C:\blank\blank\blank\42ad11c67636a47fd5ec0fc5dde8cc55.pcm is not a valid wave file.

请给我建议,我不知道该怎么办。我尝试过使用其他 wav 文件。我尝试将我的 wav 文件放在其他位置。

c# .net wav windows-forms-designer pcm
1个回答
0
投票

SoundPlayer 类有一些限制。您是否尝试过或检查过任何其他 .NET 类或库?

这是 NAudio 的示例。使用nugget安装NAudio。

using NAudio.Wave;
private void playSimpleSound()
{
    using (var stream = new MemoryStream(Properties.Resources.MouseClick))
    {
        using (var reader = new WaveFileReader(stream))
        {
            using (var waveOut = new WaveOutEvent())
            {
                waveOut.Init(reader);
                waveOut.Play();
                while (waveOut.PlaybackState == PlaybackState.Playing)
                {
                    System.Threading.Thread.Sleep(200);
                }
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.