2012-07-11 222 views
0

我有一個關於TCP /即時串流/同步問題(編程語言:JAVA):TCP-流:音頻/視頻同步

比方說,我有一個客戶,是從一個捕捉音頻和視頻相機。它通過TCP-sockets同時發送音頻和視頻數據(通過線程)到服務器,即在兩個不同的線程上同時接收音頻和視頻流。

[我知道,UDP通常用於實時的流媒體應用,但也有原因,爲什麼我使用的是TCP ..]

所以,問題是:是否有任何機會,以擺脫通過TCP同步嗎?在不同的套接字上有兩個流(一個用於音頻,一個用於視頻),可能有問題,即一個數據包必須重新發送,但丟失數據包的重新發送會成爲問題(我的意思是,通過TCP重新發送數據包,這是否會造成永久性延遲,或者客戶端是否會在幾毫秒內更快地發送丟失的數據包和下一個數據包)?

我正在將音頻和視頻信號同時發送到服務器。他們會一直在服務器上同時到達嗎?如果沒有,是否有辦法產生/模擬問題?

我已經做了一些測試,音頻和視頻始終保持同步。但我不確定,如果它永遠如此(甚至在流式傳輸超過5小時後)。

謝謝。

回答

0

如果您使用兩個不同的套接字,則無法保證。 TCP以正確的順序保證數據傳輸,但如果您使用兩個不同的音頻和視頻流,則不適用。

但是,如果連接速度夠快就不會有問題。它儘可能快地發送它。如果一個數據流被「堵塞」,它會延遲並失去同步,但我懷疑發送視頻的情況會發生(只要它不是太高的FPS或分辨率)。

我認爲使用一個單一的流會更安全,但我認爲你的方式沒問題。這完全取決於:客戶端的速度,服務器的速度以及網絡的速度。