所以我查看了http://channel9.msdn.com/coding4fun/articles/Skype-Voice-Changer。我开始阅读拦截 Skype 音频。
我的理解是,最重要的部分是
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);
}
}
因此,您设置了一个 TCPServer,您可以将 mic-data 从 Skype 流式传输到。然后用修改后的数据替换流并将其提供给 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)
并流式传输。当服务器启动并且我没有使用混音器但波流开始播放时,音量降低并且速度增加。当我听到 Skype 播放时,它反而变慢了。
请给我一条完成此任务的路线。