如何从我的项目资源中播放WAV音频文件?我的项目是C#中的Windows窗体应用程序。
答案 0 :(得分:43)
由于mySoundFile
是Stream
,您可以利用SoundPlayer
重载的构造函数,该构造函数接受Stream
对象:
System.IO.Stream str = Properties.Resources.mySoundFile;
System.Media.SoundPlayer snd = new System.Media.SoundPlayer(str);
snd.Play();
答案 1 :(得分:39)
a)好的,首先将音频文件(.wav)添加到项目资源中。
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();
答案 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)
据我所知,有两种方法可以这样做,如下所示:
首先将文件放在项目的根文件夹中,然后无论您在Debug
或Release
模式下运行程序,都可以肯定地访问文件。然后使用类SoundPlayer
对其进行修饰。
但是以这种方式,如果要将项目发布给用户,则需要复制声音文件及其文件夹层次结构,但层次结构必须位于“ bin”目录下的“ Release”文件夹中。
var basePath = System.AppDomain.CurrentDomain.BaseDirectory;
SoundPlayer player = new SoundPlayer();
player.SoundLocation = Path.Combine(basePath, @"./../../Reminder.wav");
player.Load();
player.Play();
跟随下面的动画,将“现有文件”添加到项目中。
SoundPlayer player = new SoundPlayer(Properties.Resources.Reminder);
player.Play();
这种方式的优势是:
运行该程序时,仅需要复制“ bin”目录下的“ Release”文件夹。
答案 6 :(得分:0)
这两条线可以做到这一点:
SoundPlayer sound = new SoundPlayer(Properties.Resources.solo);
sound.Play();