2013-05-29 58 views
-1

我需要使用RTP多播協議進行語音聊天,所以我需要一個C#dll庫,可以處理揚聲器和麥克風以獲取用戶聲音並通過網絡發送。 推薦使用c#簡單且簡單的示例庫。使用C#處理麥克風和揚聲器

+0

歡迎#1。這似乎不是[真正的問題](http://meta.stackexchange.com/questions/145677/what-is-a-real-question)給我。如果您有特定的編程問題,請詢問。你可以閱讀[FAQ]和[問] –

回答

0

使用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); 
     } 

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

這是一個非常簡單的例子,做這個問題,你可以從這個網站下載NAudio.dll庫: http://naudio.codeplex.com/releases/view/79035

相關問題