Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言处理麦克风和扬声器#_C#_Rtp_Multimedia - Fatal编程技术网

C# 用C语言处理麦克风和扬声器#

C# 用C语言处理麦克风和扬声器#,c#,rtp,multimedia,C#,Rtp,Multimedia,我需要使用RTP多播协议进行语音聊天,因此我需要一个C#dll库,可以处理扬声器和麦克风,以获取用户声音并通过网络发送。 推荐使用c#的简单和非常简单的库以及简单示例。使用NAudio.dll库,我们可以使用c#处理麦克风和扬声器,代码如下: 1-此代码将为我们提供麦克风设备 List<NAudio.Wave.WaveInCapabilities> sources = new List<NAudio.Wave.WaveInCapabilities>();

我需要使用RTP多播协议进行语音聊天,因此我需要一个C#dll库,可以处理扬声器和麦克风,以获取用户声音并通过网络发送。
推荐使用c#的简单和非常简单的库以及简单示例。

使用NAudio.dll库,我们可以使用c#处理麦克风和扬声器,代码如下: 1-此代码将为我们提供麦克风设备

        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));
        }
        sourceListView.Items.Clear();

        foreach (var source in sources)
        {
            ListViewItem item = new ListViewItem(source.ProductName);
            item.SubItems.Add(new ListViewItem.ListViewSubItem(item, source.Channels.ToString()));
            sourceListView.Items.Add(item);
        }
List sources=newlist();
对于(int i=0;i
2-此代码将开始从麦克风捕获音频并将其输出到扬声器

    private NAudio.Wave.WaveIn sourceStream = null;
    private NAudio.Wave.DirectSoundOut waveOut = null;

    private void btnStart_Click(object sender, EventArgs e)
    {
        if (sourceListView.SelectedItems.Count == 0) return;
        //NAudio.Wave.MixingWaveProvider32 mixer=sourceStream.GetMixerLine();
        int deviceNumber = sourceListView.SelectedItems[0].Index;
        sourceStream = new NAudio.Wave.WaveIn();
        sourceStream.DeviceNumber = deviceNumber;
        sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(9600,8, NAudio.Wave.WaveIn.GetCapabilities(deviceNumber).Channels);
        NAudio.Wave.WaveInProvider waveIn = new NAudio.Wave.WaveInProvider(sourceStream);
        waveOut = new NAudio.Wave.DirectSoundOut();
        waveOut.Init(waveIn);
        sourceStream.StartRecording();
        sourceStream.DataAvailable += new EventHandler<NAudio.Wave.WaveInEventArgs>(sourceStream_DataAvailable);
        waveOut.Play();
    }

    void sourceStream_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e)
    {

    }

    private void btnStop_Click(object sender, EventArgs e)
    {
        if (waveOut != null)
        {
            waveOut.Stop();
            waveOut.Dispose();
            waveOut = null;
        }
        if (sourceStream != null)
        {
            sourceStream.StopRecording();
            sourceStream.Dispose();
            sourceStream = null;
        }
    }
private NAudio.Wave.WaveIn sourceStream=null;
private NAudio.Wave.DirectSoundOut waveOut=null;
私有void btnStart_单击(对象发送方,事件参数e)
{
if(sourceListView.SelectedItems.Count==0)返回;
//NAudio.Wave.MixingWaveProvider32 mixer=sourceStream.GetMixerLine();
int deviceNumber=sourceListView.SelectedItems[0]。索引;
sourceStream=new NAudio.Wave.WaveIn();
sourceStream.DeviceNumber=设备编号;
sourceStream.WaveFormat=新的NAudio.Wave.WaveFormat(9600,8,NAudio.Wave.WaveIn.GetCapabilities(deviceNumber).Channels);
NAudio.Wave.WaveInProvider waveIn=新的NAudio.Wave.WaveInProvider(源流);
waveOut=新的NAudio.Wave.DirectSoundOut();
waveOut.Init(waveIn);
sourceStream.StartRecording();
sourceStream.DataAvailable+=新的事件处理程序(sourceStream\u DataAvailable);
waveOut.Play();
}
void sourceStream_DataAvailable(对象发送方,NAudio.Wave.WaveInEventArgs e)
{
}
私有void btnStop_单击(对象发送方,事件参数e)
{
如果(waveOut!=null)
{
waveOut.Stop();
waveOut.Dispose();
waveOut=null;
}
if(sourceStream!=null)
{
sourceStream.StopRecording();
Dispose();
sourceStream=null;
}
}
这是一个非常简单的示例,您可以从以下网站下载NAudio.dll库:

欢迎来到Stackoverflow。对我来说,这似乎不是个好主意。如果您有特定的编程问题,请询问。你可以阅读和阅读