2013-11-01 102 views
1

我正在開發使用NAUDIO和插座VoIP服務器 - 客戶端應用程序到VoIP。
如何使用n音訊

我讀過naudio的文檔,我已經試過很多從麥克風獲取數據然後發送給客戶端的東西,你可以獲取數據,但你必須將它保存到一個字節數組首先發送它,就像使用TCP發送文件一樣。

如何從n音訊獲取數據,並在同一時間「流時,」使用UDP協議的客戶端發送。

在此先感謝。

回答

1

有一個名爲「網絡聊天」的NAudioDemo應用程序,它從麥克風記錄了演示,用壓縮編解碼器的音頻,並通過UDP發送出去。它還從UDP接收音頻,解壓縮並播放它。所以看着that code應該指出你在正確的方向。它沒有顯示的是在UDP之上使用任何協議,所以只有原始的壓縮音頻通過網絡發送,沒有時間戳或指示正在使用哪個編解碼器。

3

n音訊擁有例子中的網絡聊天演示如果你下載的源代碼,這確實展示瞭如何實現一個非常簡單的聊天應用程序的一個好工作。

基本上儘管你希望客戶端做的是這樣的:

void Initialize() 
{ 
    waveIn = new WaveIn(); 
    waveIn.BufferMilliseconds = 50; 
    waveIn.DeviceNumber = inputDeviceNumber; 
    waveIn.WaveFormat = codec.RecordFormat; 
    waveIn.DataAvailable += waveIn_DataAvailable; 
    waveIn.StartRecording(); 
    ... 
} 

void waveIn_DataAvailable(object sender, WaveInEventArgs e) 
{ 
    //Encode and send e.Buffer 
} 

有了這個,你得到一個字節數組每50毫秒(或然而長你設置你緩衝到),並將其發送到服務器。但是,您需要對其進行編碼,因爲發送未編碼的聲音會佔用過多的帶寬。 NAudio擁有自己的編解碼器,所以這應該不是什麼大問題。 NAudio的網絡聊天演示請參見here

另一個要考慮的,如果你打算實現一個客戶端到客戶端的VOIP(通過P2P或通過服務器本身流)是一個很好的網絡庫來處理所有的通信。我在類似的項目上使用Lidgren,這個項目工作得很好。它是開源的,但可以輕鬆設置以滿足您的需求。