2015-07-21 167 views
0

我一直在用Web Audio API和Node.js開發音頻會議應用程序。一個人會說話,而其他連接的客戶應該會聽到他的聲音。Web音頻API和直播延遲

在客戶端,我使用libopus編碼PCM樣本,然後將它們發送到服務器。

在服務器端,我只是將這些編碼數據包發回給連接的用戶,最後在每個客戶端上,我將這些數據包解碼爲可以使用Web Audio API播放的樣本。

當我在本地環境中測試應用程序時,一切正常。在生產環境中,當客戶端可以從本地外部連接時,就會出現幾個主要問題。

  1. 某些客戶端的音頻似乎會延遲增加。 例如,如果數據流已經持續1分鐘,某些客戶端的延遲可能會高達10秒,並且在幾分鐘後,某些客戶端的延遲甚至會更長30-50秒。

  2. 有些客戶沒有問題。

  3. 特別是遇到延遲的客戶,聲音極其低調。這可能會發生在沒有延遲音頻的客戶端。

+0

我想我們需要一些代碼來幫助你! –

回答

1

這是因爲你可以有不同的採樣率與不同的聲卡。所以在這種情況下,音頻高音和滯後(從PC1-> PC2),隨着時間的推移低音和延遲(來自PC2-> PC1)。在這種情況下,PC1的採樣率低於PC2。

你必須寫一個重採樣器來解決這個問題。 檢查在不同PC上採樣率:

var audioCtx = new AudioContext(); 
var mySampleRate = audioCtx.sampleRate; 

檢查有關無的WebRTC解決我的帖子:Can I stream microphone audio from client to client using nodejs?

你可以給我使用的鏈接作品庫嗎?也許我會在我的項目中迭代這個。

+0

https://github.com/Mido22/recordOpus/tree/8f0c312a3f45834d57c43f0758d773ccdd03d2e3/client/scripts libopus + opus.js. – dvalinn

+0

謝謝:)我會試試這個 – Cracker0dks

+0

只是澄清,這不是我的項目,我只是從那裏拿了那些圖書館。 – dvalinn