2016-10-07 4 views
0

私のWPFアプリケーションでサウンドを再生しようとする際に問題があります。このような実際のファイルの場所からサウンドを参照すると、C#WPFプロジェクトにインポートされたサウンドを再生するには?

private void playSound() 
    { 
     //location on the C: drive 
     SoundPlayer myNewSound = new SoundPlayer(@"C:\Users\...\sound.wav"); 
     myNewSound.Load(); 
     myNewSound.Play(); 
    } 

うまくいきます。しかし、私は最近、私のプロジェクトに同じ音を輸入し、私はこれを行うにしようとすると、

private void playSound() 
    { 
     //location imported in the project 
     SoundPlayer myNewSound = new SoundPlayer(@"pack://application:,,,/sound.wav"); 
     myNewSound.Load(); 
     myNewSound.Play(); 
    } 

それがエラーを生成し、サウンドが再生されません。プロジェクトにインポートされたサウンドファイルを再生するにはどうすればよいですか?

+0

エラーがどのようなものです:

あなたは、その後でそれを読むことができますか?それを編集として投稿に追加できますか? – astidham2003

+0

輸入品とはどういう意味ですか?なにしてたの ? – AnjumSKhan

+0

ポップアップするエラー: "System.dllにSystem.NotSupportedException型の未処理の例外が発生しました。" – rjkiv

答えて

0

引数としてpack Uriを使用していますが、Streamまたはfilepathのいずれかが必要です。

プロジェクトにファイルを追加したので、Build Action to ContentCopy To Output Directory to Alwaysを変更してください。

using (FileStream stream = File.Open(@"bird.wav", FileMode.Open)) 
    { 
     SoundPlayer myNewSound = new SoundPlayer(stream); 
     myNewSound.Load(); 
     myNewSound.Play(); 
    } 
+0

これは私のために働いていましたが、最初にusing System.IO;を追加しなければならないことに注意してください。それ以外は、ありがとう! – rjkiv

0

あなたは反射で行うことができます。

埋め込まれたリソースにファイルのプロパティビルドアクションを設定します。

var assembly = Assembly.GetExcetutingAssembly(); 
string name = "Namespace.Sound.wav"; 
using (Stream stream = assembly.GetManifestResourceStream(name)) 
{ 
    SoundPlayer myNewSound = new SoundPlayer(stream); 
    myNewSound.Load(); 
    myNewSound.Play(); 
} 
関連する問題