我試圖附加用於長途電話的USB設備,這些設備具有用於麥克風和揚聲器的pnp聲音控制器。現在我有兩個揚聲器和兩個麥克風用於輸入輸出,如下圖所示。 。現在我的動機是將音頻流從系統麥克風傳輸到USB麥克風,從USB揚聲器傳輸到系統揚聲器。如何將系統麥克風音頻流傳輸到連接的設備麥克風音頻流
我試圖用虛擬有線軟件來解決這個問題,但是這個我需要依靠第三方。什麼可以是可以使用C#獲得的解決方案。
我沒有這方面的知識,所以不知道如何開始。谷歌搜索後,我發現
能幫助我,我不知道怎麼辦。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
List<NAudio.Wave.WaveInCapabilities> sources = new List<NAudio.Wave.WaveInCapabilities>();
for (int i = 0; i < NAudio.Wave.WaveIn.DeviceCount; i++)
{
sources.Add(NAudio.Wave.WaveIn.GetCapabilities(i));
}
sourceList.Items.Clear();
foreach (var source in sources)
{
ListViewItem item = new ListViewItem(source.ProductName);
item.SubItems.Add(new ListViewItem.ListViewSubItem(item, source.Channels.ToString()));
sourceList.Items.Add(item);
}
}
NAudio.Wave.WaveIn sourceStream,sourceStream1 = null;
NAudio.Wave.DirectSoundOut waveOut = null;
private void button2_Click(object sender, EventArgs e)
{
if (sourceList.SelectedItems.Count == 0) return;
int deviceNumber = sourceList.SelectedItems[0].Index;
sourceStream = new NAudio.Wave.WaveIn();
sourceStream.DeviceNumber = 0;
sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(44100, NAudio.Wave.WaveIn.GetCapabilities(deviceNumber).Channels);
NAudio.Wave.WaveInProvider waveIn = new NAudio.Wave.WaveInProvider(sourceStream1);
sourceStream.
waveOut = new NAudio.Wave.DirectSoundOut();
waveOut.Init(waveIn);
sourceStream1.StartRecording();
waveOut.Play();
}
private void button3_Click(object sender, EventArgs e)
{
if (waveOut != null)
{
waveOut.Stop();
waveOut.Dispose();
waveOut = null;
}
if (sourceStream != null)
{
sourceStream.StopRecording();
sourceStream.Dispose();
sourceStream = null;
}
}
private void button4_Click(object sender, EventArgs e)
{
button3_Click(sender, e);
this.Close();
}
}
使用此代碼我可以發送麥克風音頻揚聲器,但我怎樣才能實現我的任務使用此。
這不是答案,但它會給你一個提示http://www.daveamenta.com/2011-05/programmatically-or-command-line-change-the-default-sound-playback-device-in -windows-7 /它在C++中,但你可以將它編譯成DLL或EXE,並從你的C#代碼中調用它。 –
你能否詳細說明一下,爲什麼你想這麼做?目標是什麼?對我來說,看起來你想同時使用系統麥克風和USB麥克風 - 對吧?也許你可以用兩個設備來分辨問題,可能會有更好的解決方案。 –
@DanielGilbert usb麥克風只能輸入端口,沒有用於聲音輸入的物理麥克風(連接到外部聲卡)。我的目標是開發使用c#操作的電話,通過發送命令到我的設備工作完美。如果我將耳機直接連接到我的設備上,它的工作原理非常完美但我想通過連接到系統的耳機交換聲音。所以我可以從我的外部硬件中取出麥克風和揚聲器插孔。 –