プロジェクトのリソースからWAVオーディオファイルを再生するにはどうすればよいですか?私のプロジェクトは、C#のWindowsフォームアプリケーションです。
Stream str = Properties.Resources.mySoundFile;
RecordPlayer rp = new RecordPlayer();
rp.Open(new WaveReader(str));
rp.Play();
mySoundFile
はStream
なので、SoundPlayer
のオーバーロードされたコンストラクタを利用できます。これは、Stream
オブジェクトを受け入れます。
System.IO.Stream str = Properties.Resources.mySoundFile;
System.Media.SoundPlayer snd = new System.Media.SoundPlayer(str);
snd.Play();
a)OK、最初にオーディオファイル(.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キーを押します)、サウンドをお楽しみください。
ではごきげんよう。 :)
サウンドの再生中は、ガベージコレクターがサウンドで使用するメモリを解放することに注意する必要があります。まれにしか発生しませんが、発生した場合は、ランダムメモリを再生します。これに対する解決策があり、ここで必要なことを達成するためのソースコードを完備しています: http://msdn.Microsoft.com/en-us/library/dd743680(VS.85).aspx
「コミュニティコンテンツ」セクションの一番下までスクロールします。
私が知る限り、これを行うには2つの方法があります。以下にリストします。
最初にファイルをプロジェクトのルートフォルダーに配置してから、プログラムを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();
以下のアニメーションに従って、「Exsiting file」をプロジェクトに追加します。
SoundPlayer player = new SoundPlayer(Properties.Resources.Reminder);
player.Play();
この方法の長所は次のとおりです。
プログラムの実行時にコピーする必要があるのは、「bin」ディレクトリの下の「Release」フォルダのみです。
プロジェクトにサウンドを追加する必要がある場合は、_.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
_
フォワードスラッシュ(_/
_)形式でファイルのパスを記述する必要があることに注意してください。バックスラッシュ(_\
_)は使用しないでください。ファイルへのパスを指定すると、エラーが発生します。
また、サウンドの再生中に他のことを実行したい場合は、my_wave_file.PlaySync();
をmy_wave_file.PlayAsync();
で変更できます。
次の2行で実行できます。
SoundPlayer sound = new SoundPlayer(Properties.Resources.solo);
sound.Play();