* 24h回放节目下载
* @param request
* @param response
* @return
*/
public ModelAndView downLoad(HttpServletRequest request,
HttpServletResponse response) {
HttpURLConnection httpUrl = null;
URL url = null;
try{
/************************客户端下载*********************/
// 得到文件名称
String fileName = request.getParameter("fileName");
// 得到请求地址
url = new URL( request.getParameter("requestUrl"));// 建立链接
httpUrl = (HttpURLConnection) url.openConnection();
BufferedInputStream input = new BufferedInputStream(httpUrl.getInputStream());
response.setHeader("Content-Transfer-Encoding","binary");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
// 设置下载文件头及文件名称
response.setHeader("Content-Disposition", "attachment; filename="
+ fileName);
ServletOutputStream responOutPut=response.getOutputStream();
byte[] buffer = new byte[1024*100];
int i = 0;
while ((i = input.read(buffer)) > 0) {
responOutPut.write(buffer, 0, i);
responOutPut.flush();
}
input.close();
responOutPut.close();
}catch(Exception e){
e.printStackTrace();
}
return null;
}
以上的代码
url是通过网络层接口的来的,视频文件是边生成边下载。服务器生成的速度的1s/10mb 输出流下载速度是1s/600kb
为什么动态视频文件超过500MB通过输出流下载结束后会少掉十几MB 时间也缺少 但是可以正常播放
各位大声求解啊!!!!!!急急急急急
8 个解决方案
#1
时间也少的话是不是视频缺少一段?
#2
是的啊 视频缺少一段 比如服务器生成的是500MB 那我下载下来的就是480MB 时间简短了 大小也变了
#3
是中间缺少帧还是后面一段时间直接没有了?也就是一部影片时间短了后,有没有结束?
#4
是缺少的最后一段 也就是一部影片时间短了后,他结束了
#5
说明不是丢包问题,而是没下载完?
你在response.setHeader里面设置length试试。length是影片的大小。
你在response.setHeader里面设置length试试。length是影片的大小。
#6
*.*长度一样,无语了 求解
#7
<a title="md5在线解密加密" href=" http://md5.80p.cn/ " target="_blank">md5解密加密</a>
#8
楼主你在最后要flush下缓存,否则将会在缓存中留一块。
#1
时间也少的话是不是视频缺少一段?
#2
是的啊 视频缺少一段 比如服务器生成的是500MB 那我下载下来的就是480MB 时间简短了 大小也变了
#3
是中间缺少帧还是后面一段时间直接没有了?也就是一部影片时间短了后,有没有结束?
#4
是缺少的最后一段 也就是一部影片时间短了后,他结束了
#5
说明不是丢包问题,而是没下载完?
你在response.setHeader里面设置length试试。length是影片的大小。
你在response.setHeader里面设置length试试。length是影片的大小。
#6
*.*长度一样,无语了 求解
#7
<a title="md5在线解密加密" href=" http://md5.80p.cn/ " target="_blank">md5解密加密</a>
#8
楼主你在最后要flush下缓存,否则将会在缓存中留一块。