2

Web サーバーからデータ ストリーム (オーディオ ストリーム自体ではない) を取得する Silverlight アプリケーションの開発を検討しています。

次に、データ ストリームを操作して特定の形式 (G.711 a-Law など) の音声を生成し、PCM に変換して、追加の効果 (音量を上げるなど) を適用できるようにします。

I'm OK up to this point. I've got my data, converted the G.711 into PCM but my problem is being able to output this PCM audio to the sound card.

I basing a solution on some C# code intended for a .Net application but in Silverlight there is a problem with trying to take a copy of a delegate (function pointer) which will be the topic of a separate question once I've produced a simple code sample.

So, the question is... How can I output the PCM audio that I have held in a data structure (currently an array) in my Silverlight to the user? (Please don't say write the byte values to a text box)

If it were a MP3 or WMA file I would play it using a MediaElement but I don't want to have to make it into a file as this would put a crimp on applying dynamic effects to the audio.

Silverlight では低レベルのオーディオ サポートが貧弱である、または存在しないという投稿をいくつか見たことがあります。

4

4 に答える 4

4

簡単な答えは、バージョン 2 では Silverlight からの PCM 再生がサポートされていないということです。したがって、完全に管理された PCM から MP3 へのコンバーターを作成しない限り、行き詰まることになります。それでも、分離されたストレージから MediaElement を再生できるかどうかはわかりません。

Web サービスを使用して変換を実行できる可能性はありますか?

この質問も参照してください: Silverlight のサウンド API はどこにありますか? または、ブラウザーで実行する音楽アプリを作成するにはどうすればよいですか?

更新: Silverlight 3 はカスタム オーディオ ソースをサポートします。ただし、おそらく DRM の理由から、WMA または MP3 で効果を実行するためにサンプルをインターセプトすることはできないため、独自のデコーダーを作成する必要がある可能性があります。

于 2009-02-25T13:00:22.433 に答える
2

簡単な答えは、MediaElement + MediaStreamSource を使用することです

これらをチェックしてください:

http://blogs.msdn.com/gillesk/archive/2009/03/23/playing-back-wave-files-in-silverlight.aspx

http://code.msdn.microsoft.com/wavmss/Release/ProjectReleases.aspx?ReleaseId=2417

基本的には、G.711 a-Law を PCM に変換するデコーダーをマネージ コードで記述し、生の値に必要な変更を加えてから、それらを MediaStreamSource に渡します。

于 2009-04-06T21:33:11.893 に答える
0

Mark Heath の答えは正しいです - 特定の形式のみがサポートされています - mp3 と WMA の特定のフレーバー (残念ながら、PCM に「近い」WMA ロスレスではありません)。

Silverlight で PCM データを再生するには、次のようにします。
* PCM を mp3 データに変換し、メモリに保存します。* ManagedMediaHelpers
で紹介されているテクニックを使用して mp3 データを再生します。ここでのアイデアには、mp3 チャンクを MediaElement に提供して再生する Mp3MediaStreamSource (System.Windows.Media.MediaStreamSource から派生) というクラスが含まれます。チャンクはストリームにある必要がありますが、もちろんメモリ ストリームで十分です。

私は当初、MediaStreamSource を介して PCM チャンクを提供できるのではないかと考えていましたが、これは機能しません。あなたの問題 (そして私が直面していた問題 - Speex オーディオ ファイル プレーヤーの作成) を本当に簡単に解決できるので、それは本当に残念です!

于 2009-03-06T16:24:24.490 に答える
0

Silverlight 3 は現在、直接 PCM 出力をサポートしているか、リリース時にサポートするようです。生の AV パイプラインに関するドキュメントにはまだ何も表示されません。

于 2009-03-20T16:59:03.210 に答える