2

を使用System.Windows.Media.MediaPlayerしていくつかのサウンドを再生していますが、これらのサウンドを ZIP ファイルからロードしたいと考えています。これらのファイルを一時ディレクトリに解凍する代わりに、zip ファイルから直接ストリームとしてロードできると便利です。ただし、MediaPlayer.openURI のみを受け入れます。

では、ストリームのコンテンツを参照する URI を作成する方法はありますか? メモリ内ローカルホストのようなものですか? Stream から URI へのコネクタはありますか?

4

2 に答える 2

1

System.Media.SoundPlayer は、必要なことを行う必要があります (MediaPlayer と URI を完全にスキップできます)。ストリームを受け取るコンストラクターがあります。

于 2008-11-18T05:31:33.193 に答える
1

ポリフォニーをサポートする必要があるため、1 つの方法は、サウンドを再生するために waveOutXXXX Windows API に PInvoke することです。C# でこれを行う方法の良い例を次に示します。

https://www.codeproject.com/KB/audio-video/cswavplay.aspx

この例には、期間、サンプルレート、サンプルあたりのビット数などの情報を読み取るためのコードも含まれています。

検索すると、waveOutXXXX API は一度に 1 つのサウンドしか再生できないという主張が見つかる場合があります。これは Windows 95/98 では当てはまりましたが、現在は当てはまりません。

ところで、SoundPlayer はおそらく最もイライラする .NET クラスです。.Play() メソッドは、開始する前に、プロセスによって再生される他のサウンド (.NET アプリによって再生される他のサウンドである可能性があります) の再生を自動的に停止します。.DontStopJustPlay() メソッドまたは StopFirst bool パラメーターを .Play() メソッドに追加するのに、Microsoft の最悪のインターンは 1 分もかからなかったでしょう。Duration プロパティを追加するのに昼食の時間までかかったかもしれません。

waveOutXXXX は、適切に設計された最新の API に期待するよりも複雑ですが (.NET で使用すると、追加の問題が発生します)、比類のない利点の 1 つは、Windows 95 以降、すべての Windows コンピューターにプリインストールされていることです。 Windows モバイル デバイス。他のすべてのオプション (MediaPlayer を含む) は、誰かが常に何かをインストールする必要があることを意味します。

于 2008-11-19T00:58:52.073 に答える