質問
以下を使用して、ウェーブファイルをロードして再生しようとしています。
SoundPlayer simpleSound = new SoundPlayer(@"pack://application:,,,/MyAssembly;component/Sounds/10meters.wav");
simpleSound.Play();
成功せずに。私は取得します System.NotSupportedException
:( 下記参照。
System.NotSupportedException: The URI prefix is not recognized.
at System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase)
at System.Net.WebRequest.Create(Uri requestUri)
at System.Media.SoundPlayer.LoadSync()
at System.Media.SoundPlayer.LoadAndPlay(Int32 flags)
at System.Media.SoundPlayer.Play()
私はGoogleを見渡したので、解決策を見つけようとして、何もうまくいきませんでした。ダイレクトパスでファイルを再生すると正常に機能します
SoundPlayer simpleSound = new SoundPlayer(@"D:\Projects\MyAssembly\Sounds\10meters.wav");
simpleSound.Play();
また、MyAssemblyコンテンツを確認しました。リソースがあります。します SoundPlayer
梱包をサポートしていないか、私が正しくしていないことはありませんか?
解決
pack://
URIスキームはWPFに固有であるため、非WPFコンポーネントはそれを処理する方法を知りません...ただし、このリソースのストリームを取得して、 SoundPlayer
コンストラクタ:
Uri uri = new Uri(@"pack://application:,,,/MyAssembly;component/Sounds/10meters.wav");
StreamResourceInfo sri = Application.GetResourceStream(uri);
SoundPlayer simpleSound = new SoundPlayer(sri.Stream);
simpleSound.Play();
別のオプションは、を使用することです MediaPlayer
クラス:
Uri uri = new Uri(@"pack://application:,,,/MyAssembly;component/Sounds/10meters.wav");
MediaPlayer player = new MediaPlayer();
player.Open(uri);
player.Play();
このクラスはをサポートします pack://
URIスキーム
他のヒント
F1 あなたの友達ですか(少なくとも2010年のvs):
Soundlocationパラメーターに渡された文字列は、ファイルパスまたは.WAVファイルへのURLのいずれかです。
urisはURLではありません(他の方法とは異なります)、これは機能しません。必要に応じて、ファイルをディスク上の一時フォルダーに保存できます。
所属していません StackOverflow