0

Silverlight 5 で効果音と audiosink を使用してマイクの音をリアルタイムで再生しようとしていますが、ここで音が途切れてしまうのは、私が使用したコードです

protected override void OnSamples(long sampleTime, long sampleDuration, byte[] sampleData)
{
  try
  {
    SoundEffect effect = new SoundEffect(sampleData, 8000, AudioChannels.Mono);
    effect.Play();
   }
   catch
   { }
 }

ヘルプまたは代替手段はありますか?

4

1 に答える 1

0

これは、SoundEffectクラスが対象としているシナリオではないと確信しています。一貫性のあるオーディオストリームを再生するには、さまざまなフレーム間で少なくとも何らかのバッファリングと一貫性が必要です。この種のことを機能させるために私が過去に行ったことは、AudioSinkから入ってくるオーディオを一時的にバッファリングし、MediaStreamSourceで利用できるようにして、それを再生することです。MediaStreamSourceには、借りることができる多くの場所の優れた基本的な実装があります(奇妙な部分は、すべてのWAVヘッダーを正しく取得することです)が、それでもバッファリングコードを自分で作成する必要があります。最も簡単な方法は、キューを使用して送信された各バイト配列を保持し、MediaStreamSourceにGetSampleAsync()メソッドでバイト配列をプルさせることです。

ここから始めてください:http://dotnet.dzone.com/news/creating-sound-using

于 2011-12-04T15:03:45.517 に答える