所以我看了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);
}
}
因此,您设置了一个TCPServer,您可以将Skype数据从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播放时,它会全部变慢。
请给我一条完成此任务的途径。
答案 0 :(得分:0)
您需要使用BufferedWaveProvider
。当您从WaveIn
收到数据时,请将收到的数据放入BufferedWaveProvider
。然后,您可以将其与来自Skype的输入混合,或者完全替换它。