だから私は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)
そしてそれをストリーミングします。サーバーが起動し、ミキサーを使用していませんが、ウェーブストリームの最初の再生中に音量が下がり、速度が上がります。スカイプの再生を聞くと、代わりにすべてが遅くなります。
これを達成するためのルートを教えてください。