gpt4 book ai didi

c# - 如何将系统麦克风音频流传输到连接的设备麦克风音频流

转载 作者:太空狗 更新时间:2023-10-29 21:53:11 24 4
gpt4 key购买 nike

我正在尝试连接用于电话调用的 USB 设备,该设备具有用于麦克风和扬声器的 pnp 声音 Controller 。现在我有两个扬声器和两个麦克风用于输入输出,如下图所示。 <code>Speaker</code> mic .现在我的动机是将音频流从系统麦克风传输到 USB 麦克风,从 USB 扬声器传输到系统扬声器。

我试图用虚拟电缆软件解决这个问题,但我需要依赖第三方。使用 C# 可以获得什么可能的解决方案。

我没有这方面的知识,所以不知道如何开始。谷歌搜索后我发现

  1. CS Core
  2. N Audio

可以帮助我,我不知道如何。

 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();
}
}

使用此代码我可以将麦克风音频发送到扬声器,但我如何使用它来执行我的任务。

最佳答案

实际上,如果不编写任何自定义驱动程序,就无法做到这一点。您不能将音频数据渲染到输入设备。输入设备是用来读取数据的。输出设备(扬声器)用于写入数据。

有像虚拟音频电缆这样的程序,它们使用自定义驱动程序来绕过这些限制。

关于c# - 如何将系统麦克风音频流传输到连接的设备麦克风音频流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38240612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com