2016-01-15 37 views
-1

我正在嘗試編寫混音控制檯的代碼,並且在編碼之前我需要一些建議(希望我的問題不會「脫離主題」)。「streaming」localy:UDP,TCP,別的?

在我的項目中,在混音控制檯的每個「條帶」上,我都可以輸入聲源:音頻文件播放器,麥克風......我成功完成了第一部分。在名爲「Master」的最後一個條紋中,我必須收集所有聲音信號以將它們混合在一起。對於第一個測試,我只會嘗試添加它們(並查看會發生什麼)。

但我的問題是:從條紋發送聲音給我的主人的最佳方式是什麼?滯後時間必須很短:如果我在播放音樂時唱歌,麥克風收集的聲音必須立即到達主「混合」,而不是15秒後...

所以,我想過使用一個簡單的UDP轉移:它與TCP的快速比較。因爲我會在本地地址127.0.0.1(而不是整個互聯網)上「流」每個條帶,我可以認爲「數據報丟失」是微不足道的嗎?或者我應該嘗試在我的UDP上實現類似RTP(真的更重......)的東西嗎?或者我沒有想過的其他東西?

我不發佈任何代碼,因爲現在我的目標是有一些很好的建議之前以書面線和生產線,並注意到,我在錯誤的道路......

謝謝您的解答。問候。

回答

2

如果您從紐約發送TCP數據包到東京,它將花費少於300毫秒。如果你通過一個城市發送一個TCP數據包,那麼通過互聯網應該少於25毫秒。如果你通過Wifi發送一個數據包,它應該少於幾毫秒,通過本地局域網你應該得到0.1毫秒。

注意:如果你發送一個數據包到月球並返回它將需要2.5秒。

但是,如果您使用UDP,它可能會更快,或者它可能會更慢,或者它可能根本不會到達。 UDP是一種有損協議,因此不能保證數據包將被接收,並且沒有內建的方法來檢測這樣的數據包是否丟失。

總之,使用TCP。微秒差異不會像丟失數據包那麼重要。