1

だから私はhttp://channel9.msdn.com/coding4fun/articles/Skype-Voice-Changerを見ました。Intercepting Skype Audio を読み始めました。

私が理解しているのは、最も重要な部分は

void OnMicServerExecute(object sender, DataReceivedEventArgs args)
{
  toolStripStatusLabel1.Text = "Got " + args.Buffer.Length + " bytes";
  if (outStream != null)
  {
    // give the input audio to the beginning of our audio graph
    bufferStream.SetLatestInBuffer(args.Buffer);
    // process it out through the effects
    outputStream.Read(args.Buffer, 0, args.Buffer.Length);
    // play it back
    outStream.Write(args.Buffer, 0, args.Buffer.Length);
  }
}

したがって、skype からマイクデータをストリーミングする TCPServer をセットアップします。次に、ストリームを変更したデータに置き換えて outStream に渡します。これは再び反対側に配信されます。したがって、 outputStream には何らかの形でコンテンツが含まれている必要があります。ここで問題が発生します。マイクを LINE-IN に接続しています。LINE-IN ストリームを、現在使用しているサウンド ファイルとミックスしたい

void abspielen(string Dateiname, float ZielAmplitude)
{
  Klangwiedergabegeraet = new WaveOutEvent();
  Klangwiedergabegeraet.DeviceNumber = cbAusgabegeraete.SelectedIndex;
  timer1.Enabled = true;
  ISampleProvider StueckchenHalter = null;
  try
  {
    StueckchenHalter = CreateInputStreamS(Dateiname,ZielAmplitude);
  }
  catch (Exception createException)
  {
    MessageBox.Show(String.Format("{0}", createException.Message), "Error Loading File");
      return;
  }
  try
  {
    Klangwiedergabegeraet.Init(new SampleToWaveProvider(StueckchenHalter));
  }
  catch (Exception initException)
  {
    MessageBox.Show(String.Format("{0}", initException.Message), "Error Initializing Output");
      return;
  }
  Klangwiedergabegeraet.Play();
}

Skype に転送されます。

ミキサーに頭を悩ませ、配信されている e.buffer から何かを使用できるようにするのに問題があります

void waveInStream_DataAvailable(object sender, WaveInEventArgs e)

そしてそれをストリーミングします。サーバーが起動し、ミキサーを使用していませんが、ウェーブストリームの最初の再生中に音量が下がり、速度が上がります。スカイプの再生を聞くと、代わりにすべてが遅くなります。

これを達成するためのルートを教えてください。

4

1 に答える 1

0

を使用する必要がありますBufferedWaveProvider。からデータを受信したらWaveIn、受信したデータを に入れますBufferedWaveProvider。次に、それを Skype からの入力と混合するか、完全に置き換えることができます。

于 2012-11-06T10:54:18.767 に答える