如何从Resources播放WAV音频文件?

时间:2010-11-08 16:18:55

标签: c# visual-studio audio

如何从我的项目资源中播放WAV音频文件?我的项目是C#中的Windows窗体应用程序。

7 个答案:

答案 0 :(得分:43)

由于mySoundFileStream,您可以利用SoundPlayer重载的构造函数,该构造函数接受Stream对象:

System.IO.Stream str = Properties.Resources.mySoundFile;
System.Media.SoundPlayer snd = new System.Media.SoundPlayer(str);
snd.Play();

SoundPlayer Class Documentation (MSDN)

答案 1 :(得分:39)

a)好的,首先将音频文件(.wav)添加到项目资源中。

  1. 打开"解决方案资源管理器"从菜单工具栏(" VIEW")或只需按Ctrl + Alt + L.
  2. 点击"属性"的下拉列表。
  3. 然后选择" Resource.resx"然后按Enter键。
  4. open project resource

    1. 现在选择"音频"从组合框列表。
    2. add audio files to resource

      1. 然后点击"添加资源",选择音频文件(.wav),然后点击"打开"。
      2. browsing for audio files

        1. 选择音频文件并更改"持久性"属性为"嵌入.resx"。
        2. embedding audio files to resource

          b)现在,只需编写此代码即可播放音频。

          在此代码中,我在表单加载事件上播放音频。

          using System;
          using System.Collections.Generic;
          using System.ComponentModel;
          using System.Data;
          using System.Drawing;
          using System.Linq;
          using System.Text;
          using System.Threading.Tasks;
          using System.Windows.Forms;
          
          using System.Media; // at first you've to import this package to access SoundPlayer
          
          namespace WindowsFormsApplication1
          {
              public partial class login : Form
              {
                  public login()
                  {
                      InitializeComponent();
                  }
          
                  private void login_Load(object sender, EventArgs e)
                  {
                      playaudio(); // calling the function
                  }
          
                  private void playaudio() // defining the function
                  {
                      SoundPlayer audio = new SoundPlayer(WindowsFormsApplication1.Properties.Resources.Connect); // here WindowsFormsApplication1 is the namespace and Connect is the audio file name
                      audio.Play();
                  }
              }
          }
          

          那就是它。
          全部完成,现在运行项目(按f5)并享受你的声音 祝一切顺利。 :)

答案 2 :(得分:6)

  Stream str = Properties.Resources.mySoundFile;
  RecordPlayer rp = new RecordPlayer();
  rp.Open(new WaveReader(str));
  rp.Play();

来自 How to play WAV audio file from resources in C#

答案 3 :(得分:2)

在声音仍在播放时,您需要小心垃圾收集器释放声音使用的内存。虽然很少发生,但是当它发生时,你只会玩一些随机记忆。有一个解决方案,配有源代码,可以在这里实现您的目标:http://msdn.microsoft.com/en-us/library/dd743680(VS.85).aspx

滚动到“社区内容”部分的最底部。

答案 4 :(得分:0)

当你必须在项目中添加声音时,你将通过播放.wav个文件来实现。然后你必须像这样添加.wav个文件。

   using System.Media; //write this at the top of the code

   SoundPlayer my_wave_file = new SoundPlayer("F:/SOund wave file/airplanefly.wav");
   my_wave_file.PlaySync(); // PlaySync means that once sound start then no other activity if form will occur untill sound goes to finish

请记住,您必须使用正斜杠/)格式编写文件的路径,不要使用反斜杠({{1在给出文件路径时,否则会出错。

另请注意,如果您希望在播放声音时发生其他事情,可以使用\更改my_wave_file.PlaySync();

答案 5 :(得分:0)

据我所知,有两种方法可以这样做,如下所示:

  1. 使用文件路径

首先将文件放在项目的根文件夹中,然后无论您在DebugRelease模式下运行程序,都可以肯定地访问文件。然后使用类SoundPlayer对其进行修饰。
但是以这种方式,如果要将项目发布给用户,则需要复制声音文件及其文件夹层次结构,但层次结构必须位于“ bin”目录下的“ Release”文件夹中。

        var basePath = System.AppDomain.CurrentDomain.BaseDirectory;
        SoundPlayer player = new SoundPlayer();
        player.SoundLocation = Path.Combine(basePath, @"./../../Reminder.wav");
        player.Load();
        player.Play();
  1. 使用资源

跟随下面的动画,将“现有文件”添加到项目中。

enter image description here

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

这种方式的优势是:
运行该程序时,仅需要复制“ bin”目录下的“ Release”文件夹。

答案 6 :(得分:0)

这两条线可以做到这一点:

SoundPlayer sound = new SoundPlayer(Properties.Resources.solo);     
                sound.Play();