web项目引用html5 video标签实现视频播放的坑
2017-07-12 14:25
1961 查看
项目框架:SpringMVC
最近项目中用到视频播放,打算采用html5 的video标签实现网页视频播放,考虑到兼容性与样式又采用了jquery的video.js插件,使用过程中视频播放都没问题,但是在视频播放的时候运行容器(jetty、tomcat)都会报IO异常:
tomcat:
jetty:下报的是IO异常下的EofException;
百度了下知道EofException是内部类BlockDataInputStream.的方法peekByte抛出的异常,意思就是到达了文件的末尾,程序却没有正常结束读取文件内容。
结合前台查看视频文件的加载方式(分段流加载),而错误总是出现在刷新页面或者来回点击进度条的时候,所以猜测是客户端关闭导致流的输出未正常结束而导致的错误,问了下架构师说可能跟服务器有关系,暂时无法解决,但是日志老是打出那么一大堆错误也很蛋疼,于是我就改写了框架的总体异常过滤器将异常过滤掉:
并在spring配置文件里面将处理类重新指定:
最近项目中用到视频播放,打算采用html5 的video标签实现网页视频播放,考虑到兼容性与样式又采用了jquery的video.js插件,使用过程中视频播放都没问题,但是在视频播放的时候运行容器(jetty、tomcat)都会报IO异常:
tomcat:
2017-07-04 12:24:57,167 [http-nio-8888-exec-9] ERROR com.icinfo.framework.core.web.handler.GlobalHandlerExceptionResolver - java.io.IOException: Broken pipe org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:393) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:426) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:339) at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:418) at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:406) at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:97) at org.springframework.util.StreamUtils.copy(StreamUtils.java:127) at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.writeContent(ResourceHttpRequestHandler.java:443) at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.handleRequest(ResourceHttpRequestHandler.java:268)
jetty:下报的是IO异常下的EofException;
百度了下知道EofException是内部类BlockDataInputStream.的方法peekByte抛出的异常,意思就是到达了文件的末尾,程序却没有正常结束读取文件内容。
结合前台查看视频文件的加载方式(分段流加载),而错误总是出现在刷新页面或者来回点击进度条的时候,所以猜测是客户端关闭导致流的输出未正常结束而导致的错误,问了下架构师说可能跟服务器有关系,暂时无法解决,但是日志老是打出那么一大堆错误也很蛋疼,于是我就改写了框架的总体异常过滤器将异常过滤掉:
public class NdrcGlobalHandlerExceptionResolver extends DefaultHandlerExceptionResolver { private static final Logger logger = LoggerFactory.getLogger(NdrcGlobalHandlerExceptionResolver.class); @Override protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { if(!(ex instanceof IOException)){ logger.error(ex.getMessage(), ex);} //错误编码 String errorCode = ""; //错误信息 String errorMsg = ex.getMessage(); //EofException则忽略 if(ex instanceof IOException){ Map<String, Object> model = new HashMap<String, Object>(); model.put("ex", ex); return new ModelAndView(); } //判断是否框架异常 if (ex instanceof GenericException) { GenericException be = (GenericException) ex; errorCode = be.getErrorCode(); errorMsg = be.getMessage(); } //Ajax请求处理 if (WebUtils.isAjax(request)) { try { response.setContentType("application/json"); response.setStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR); AjaxResult result = AjaxResult.error(errorCode, errorMsg); //转成json格式 ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(result); PrintWriter pw = response.getWriter(); pw.write(json); pw.close(); } catch (Exception e) { logger.error(errorMsg, e); } return null; } else { // 跳转到异常页面 Map<String, Object> model = new HashMap<String, Object>(); model.put("ex", ex); return new ModelAndView("error", model); } } }
并在spring配置文件里面将处理类重新指定:
<!-- 异常视图处理 --> <bean id="exceptionResolver" class="com.icinfo.ndrc.support.NdrcGlobalHandlerExceptionResolver"> <!-- 设置日志输出级别,不定义则默认不输出警告等错误日志信息 --> <property name="warnLogCategory" value="WARN"></property> </bean>
相关文章推荐
- HTML5-video标签-实现点击预览图播放或暂停视频
- HTML5 audio与video标签实现视频播放,音频播放
- HTML5 audio与video标签实现视频播放,音频播放
- Web视频播放 之 【HTML5 Video标签】
- html5-video视频标签播放视频实现过程中遇到的一系列问题。
- HTML5 audio与video标签实现视频播放,音频播放
- Web视频播放 之 【HTML5 Video标签】
- 【实例】HTML5中video播放视频实现特效
- HTML5添加 video 视频标签后仍然无法播放的解决方法 IIS添加MIEI类型
- HTML5添加 video 视频标签后仍然无法播放的解决方法
- 验证是否支持html5的Video标签及MP4视频播放
- 巧用transform实现HTML5 video标签视频比例拉伸
- 验证是否支持html5的Video标签及MP4视频播放
- HTML5添加 video 视频标签后仍然无法播放的解决方法 IIS添加MIEI类型
- Webkit中HTML5 Video的实现分析 (四) - 视频加载及播放的时序图
- html5 实现video标签的自定义播放进度条
- 兼容html5 video标签视频播放,html5media.min.js
- html5的video标签插入mp4视频放在iis服务器访问无法播放解决方案
- 使用HTML5的video标签播放视频
- HTML5添加 video 视频标签后仍然无法播放的解决方法