我有一个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不支持。
感谢
答案 0 :(得分:0)
您的代码运行正常。我刚刚从您的服务器获取ads5.swf,实际上它的长度为61894字节。您面临的问题是SWF文件只是电影播放器。下载后,播放器然后从服务器获取视频流。默认情况下(如果这是某种交钥匙流式传输解决方案),它可能会尝试从SWF来自的同一服务器获取流。