質問

以下を使用して、ウェーブファイルをロードして再生しようとしています。

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ではありません(他の方法とは異なります)、これは機能しません。必要に応じて、ファイルをディスク上の一時フォルダーに保存できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top