2010-01-26 257 views
3

我在想,如果它的不可能性,以創建一個客戶端(或web客戶端),可以連接兩個用戶,然後將它發送自己的網絡攝像頭流給對方。 沒有使用Red5或任何其他閃存/媒體服務器,應該會發生這種情況。 我可以使用什麼協議?什麼API等等網絡攝像頭流對等網絡

+1

我實際上在這裏工作了一段時間與我的高級設計。我沒有遇到一個好的解決方案。我最終做的是用DirectShow從網絡攝像頭中提取數據,並使用我創建的簡單UDP協議(有點像RTP)發送數據。 – Will 2010-01-26 21:06:11

回答

2

作爲一個超級簡單的方法,看看UDP教程:

http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.aspx

如果UDP最終是有點太不可靠的(它不保證數據將到達它那裏被髮送),你也可以嘗試TCP連接。

然而,你會打的最大問題之一是試圖通過NAT來獲得。除非先建立連接,否則大多數防火牆都會阻止傳入的數據。您可以使用UPnP來解決這個問題,但它可能會採取一些代碼:

http://www.codeproject.com/KB/IP/upnpnattraversal.aspx

希望這有助於。使用UDP,你只需要看10行代碼來發送和接收數據,而TCP多一點,但更可靠。谷歌這兩個更多的信息。

從那裏它相當簡單。你從網絡攝像頭獲取數據。將它作爲.jpg保存到MemoryStream(System.IO)。然後通過TCP或UDP發送數據。

1

你可能會希望直接使用TCP或UDP,併發送/收到的原始字節。任何更高級別的協議根本是不必要的開銷

+0

關於NAT的其他答案的一些觀點值得一讀 - 至少有一個客戶端需要打開一個可靠的端口,其他端口可以連接到一個已知的地址/號碼。 – Peter 2010-01-27 23:43:36

1

我有一點補充,爲了得到兩個客戶端,無論它們各自背後的防火牆來相互交談使用UDP,你需要做的NAT穿越。這就是Skype的工作原理。

STUN Article

1

Adob​​e狀態會讓你做到這一點。