我正在开发一个项目,我有一个简单的ip摄像头,它有一个带有内部地址和Web服务器的mjpg流。我想通过我的servlet提供摄像头的馈送,这样摄像头就不需要为每次安装提供端口转发。我理想的情况是用户只输入mjpg位置的URL(位于他们的网络上),servlet将处理其余的。
我对如何开始实现这一点非常无能,或者如果它甚至可能,因为我实际上并没有自己创建mjpg流,我正在使用已经存在的那个。有没有办法在不向我的网络服务器发出大量请求的情况下执行此操作?
我身边的另一个问题是,我只能使用可以在J2ME中运行的库。
答案 0 :(得分:1)
在servlet中,您只需检查HttpRequestObject的URL,方法,并可能接受标头,然后使用相应摄像头的IP地址创建HttpURLConnection,进行连接。当您从相机获得响应时,从响应中复制相应的条目并将它们设置在ServletResponse对象中,然后获取相机响应输入流和客户端请求的输出流,并将字节从一个流复制到另一个流,当你完成后关闭所有东西。
如果您可以部署像Jersey这样的JAX-RS参考实现,这将更容易。
答案 1 :(得分: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了吗?我很确定它已经可以做到了。