2012-01-05 71 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?我很确定它已经可以做到这一点。

相关问题