2012-01-05 126 views
3

我正在一個項目中,我有一個簡單的IP攝像頭,它有一個內部地址和Web服務器的mjpg流。我想通過我的小服務器提供攝像頭的信息,以便攝像機不需要爲每個安裝提供端口轉發。我的理想情況是用戶只能輸入mjpg位置的URL(位於他們的網絡上),而servlet會處理其餘的。如何通過servlet服務內部網絡攝像頭mjpeg流?

我對如何開始實現這個還是非常無知,或者如果它甚至有可能,因爲我實際上並沒有自己創建mjpg流,我正在使用已經存在的那個流。有沒有辦法做到這一點,而不會對我的Web服務器做出大量的請求?

我身邊還有一個刺我只限於可以在J2ME中工作的庫。

回答

1

在一個servlet中,你可以簡單地檢查HttpRequestObject的URL,方法,並可能接受頭,然後創建一個HttpURLConnection與相應的相機的IP地址,進行連接。當你從攝像機獲得響應時,從響應中複製適當的條目並將它們設置在ServletResponse對象中,然後獲取相機響應輸入流和客戶端請求的輸出流,並將字節從一個流複製到另一個流並在完成後關閉所有內容。

如果您可以部署像Jersey這樣的JAX-RS參考實現,這將更容易。

0

好的。所以你基本上想要通過一個servlet代理幾臺攝像機來連接?

它不應該太難。你只需要在你的servlet中打開一個到你請求的URL的套接字連接。

假設您使用的是HTTP,如果您有「http:// myservlet/servlet?url = http:// camera_url_here」的請求,您應該只能打開一個到相機URL的連接,將收到的字節寫入HttpServletResponse的OutputStream。您可能希望將套接字連接插入到Map中,以便您不必不必要地連接兩次相同的相機。不要忘記在HttpServletResponse對象中複製/設置正確的MIME類型。您是否看過http://www.videolan.org/vlc/streaming.html?我很確定它已經可以做到這一點。

相關問題