我正在使用SKype4Com,似乎每当我播放一个wav文件时,我都无法改回麦克风。我真的必须结束通话,然后再打电话再次使用我的麦克风。这是一些代码:
DeviceType = TCallIoDeviceType.callIoDeviceTypeFile
var filename = Path.GetTempFileName();
using (this.Speak = new SpeechSynthesizer())
{
this.Speak.SetOutputToWaveFile(
filename,
new System.Speech.AudioFormat.SpeechAudioFormatInfo(
16000,
System.Speech.AudioFormat.AudioBitsPerSample.Sixteen,
System.Speech.AudioFormat.AudioChannel.Mono));
this.Speak.Speak(reply);
this.Speak.SetOutputToDefaultAudioDevice();
this.Speak.Speak(reply);
CurrentCall.set_InputDevice(DeviceType, filename);
this.skype.SendMessage(pMessage.FromHandle, reply);
this.Speak.SetOutputToNull();
this.Speak.Dispose();
CurrentCall.set_InputDevice(DeviceType,"");
}
CurrentCall.set_InputDevice(TCallIoDeviceType.callIoDeviceTypeSoundcard, "default");
Dispatcher.Invoke(new Action(() =>
{
tb1.Text += "sound card: ";
tb1.Text += CurrentCall.get_InputDevice(TCallIoDeviceType.callIoDeviceTypeSoundcard);
tb1.Text += Environment.NewLine;
tb1.Text += "port: ";
tb1.Text += CurrentCall.get_InputDevice(TCallIoDeviceType.callIoDeviceTypePort);
tb1.Text += Environment.NewLine;
tb1.Text += "file: ";
tb1.Text += CurrentCall.get_InputDevice(TCallIoDeviceType.callIoDeviceTypeFile);
tb1.Text += Environment.NewLine;
}));
}
我有什么想法可以让它发挥作用?汽车结束后,我只是听到了沉默。
答案 0 :(得分:0)
您可以尝试检查您播放的文件是否仍然忙碌。
do
{
System.Threading.Thread.Sleep(1000);
} while (IsBusy(filename));
CurrentCall.set_InputDevice(DeviceType,"");
IsBusy
方法声明如下:
public bool IsBusy(string filePath)
{
try
{
using (FileStream stream = File.OpenWrite(filePath))
{
stream.Close();
return false;
}
}
catch (IOException)
{
return true;
}
}
答案 1 :(得分:0)
有一种方法可以使用tcp将音频输入skype,所以我改为使用了。