如何使用 C# 从 Properties.Resources 播放 WAV 文件

How to play WAV file from Properties.Resources using C#

如何播放来自 Properties.Resources 的 wav 文件?

我尝试了一些代码,但每次我的 Priperties.Resource.myFile 把我放在 byte[] 但我的代码需要 string 路径,而不是 byte[] 数组。

    System.Media.SoundPlayer player = new System.Media.SoundPlayer();

    player.SoundLocation = @"myFile.wav";
    player.Play();

我不想使用一些临时文件。可以直接从资源播放吗?

感谢您的建议!

So, Can I play WAV file from Resource?

您可以像这样使用 Stream 属性:

System.Media.SoundPlayer player = new System.Media.SoundPlayer();

player.Stream = new MemoryStream(data);
player.Play();

其中 data 是您从资源文件中获得的 byte[]

更新:

Properties.Resources.myFile其实应该是一个流,所以直接这样使用:

System.Media.SoundPlayer player = new System.Media.SoundPlayer();

player.Stream = Properties.Resources.myFile;
player.Play();

据我所知有两种方法,见下文:

  1. 使用文件路径
    先把文件放在工程的根目录下,那么不管你运行程序是Debug还是Release模式下,都肯定能访问到文件

        var basePath = System.AppDomain.CurrentDomain.BaseDirectory;
        SoundPlayer player = new SoundPlayer();
        player.SoundLocation = Path.Combine(basePath, @"./../../Reminder.wav");
        player.Load();
        player.Play();
    
  2. 使用资源
    按照下面的动画,将"Exsiting file"添加到项目中。

        SoundPlayer player = new SoundPlayer(Properties.Resources.Reminder);
        player.Play();

这种方式的优势在于:
运行程序只需要复制"bin"目录下的文件夹"Release"。