从服务器到客户端重新流式传输视频

时间:2013-05-25 15:24:07

标签: java servlets video streaming ip-camera

我有一个ipcamera,每当有多个用户连接到它时,它变得太慢了。 我正在考虑使用我的服务器从摄像头获取流,并且多个客户端应该能够从服务器而不是差的ipcamera流式传输。

我设置了一个快速而又脏的servlet,看看它是否有效:

@RequestMapping(value = "/", method = RequestMethod.GET, produces = "application/x-shockwave-flash")
public String getVideoStream(Locale locale, Model model, HttpServletRequest request, HttpServletResponse response) throws IOException {

logger.info("Start");

                       // An IPcamera stream example
URL url = new URL("http://www.earthcam.com/swf/ads5.swf");
URLConnection yc = url.openConnection();


OutputStream out = response.getOutputStream();
InputStream in = yc.getInputStream();
String mimeType = "application/x-shockwave-flash";  
byte[] bytes = new byte[100000];
int bytesRead;

response.setContentType(mimeType);

while ((bytesRead = in.read(bytes)) != -1) {
    out.write(bytes, 0, bytesRead);
}

logger.info("End");

我相信这可行,我现在的问题是:

bytesRead = in.read(bytes)

只读取61894个字节,就是这样:(为什么会发生这种情况?我试图让流错误吗?

顺便说一句:我试图用xuggler做这个,但我有一个错误,压缩SWF不支持。

感谢

1 个答案:

答案 0 :(得分:0)

您的代码运行正常。我刚刚从您的服务器获取ads5.swf,实际上它的长度为61894字节。您面临的问题是SWF文件只是电影播放器​​。下载后,播放器然后从服务器获取视频流。默认情况下(如果这是某种交钥匙流式传输解决方案),它可能会尝试从SWF来自的同一服务器获取流。