我想要實現兩部安卓客戶端的實時語音通訊,安卓客戶端都在內網,因此需要一外網pc做數據的中轉服務器,安卓語音發送端通過audiotrack錄制PCM音頻數據並實時發送到服務器,服務器接收數據並不斷讀入一個緩沖區,開啟另一個線程循環讀取緩沖區的數據同時將數據發送到另一個安卓客戶端,問題就在於服務器的緩沖區要怎麼做?怎麼保證緩沖區的數據同時被兩個線程操作時的有序穩定 求大神指教,假設網絡良好,不考慮網絡波動帶來的數據處理問題。
關鍵是語音流. 對隊列也比較贊同. 不過考慮並發多線程問題. 緩沖區 內部劃分應該分: 發送區, 資源區, 接受區. 對消息進行編號. 例如2s一個語音段, 發送成功就成功, 不然丟棄. 編號之後, 可以同時並發發送. 發送區進行資源鎖定, 進入server 資源區後解鎖. 接受區也是一樣的, 維護一個順序索引. 按順序發送資源區給接收端. 如果丟包你, 怎麼處理. 就是語音丟失鬧 . 後面再有也不要你. 鎖定之後就好. 其實生產--消費者思路. 至於實現, 如何並發, 並發 ,對外封裝調用.