• springBoot视频在线播放,支持快进,分片播放


    1、主要是通过ResourceHttpRequestHandler类来实现,ResourceHttpRequestHandler本身支持分片加载,前端在请求头中携带Range: bytes = 0-5001,就可以从后台自动截取对应大小视频内容。

    第一步,先自定义实现一个ResourceHttpRequestHandler。代码如下:

    1. package com.tec666.moviebar.config;
    2. import org.springframework.core.io.FileSystemResource;
    3. import org.springframework.core.io.Resource;
    4. import org.springframework.stereotype.Component;
    5. import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
    6. import javax.servlet.http.HttpServletRequest;
    7. /**
    8. * @author longge93
    9. */
    10. @Component
    11. public class NonStaticResourceHttpRequestHandler extends ResourceHttpRequestHandler {
    12. public final static String ATTR_FILE = "NON-STATIC-FILE";
    13. @Override
    14. protected Resource getResource(HttpServletRequest request) {
    15. String filePath = (String) request.getAttribute(ATTR_FILE);
    16. return new FileSystemResource(filePath);
    17. }
    18. }

    第二步,在视频播放controller中,把本地文件路径传入ResourceHttpRequestHandler。代码如下:

    1. @Controller
    2. @RequestMapping(value = "/api/baseResource")
    3. public class BaseSourceApiController {
    4. @Autowired
    5. private NonStaticResourceHttpRequestHandler nonStaticResourceHttpRequestHandler;
    6. private final Logger logger = LoggerFactory.getLogger(this.getClass());
    7. @RequestMapping(value = "/video", method = RequestMethod.GET)
    8. public void video(
    9. HttpServletRequest request,
    10. HttpServletResponse response
    11. ) {
    12. try {
    13. String path = "D:/abc.mp4";
    14. File file = new File(path);
    15. if (file.exists()) {
    16. request.setAttribute(NonStaticResourceHttpRequestHandler.ATTR_FILE, path);
    17. nonStaticResourceHttpRequestHandler.handleRequest(request, response);
    18. } else {
    19. response.setStatus(HttpServletResponse.SC_NOT_FOUND);
    20. response.setCharacterEncoding(StandardCharsets.UTF_8.toString());
    21. }
    22. } catch (Exception e) {
    23. }
    24. }
    25. }

     

  • 相关阅读:
    第二十章《Java Swing》第5节:常用组件
    【软件工程】介绍
    3D手眼标定之原理(3D Vision Roboot Eye-to-hand Calibration)
    分享个包含各省、市、区的编码数据的在线静态资源脚本
    17.Excel vba开发-根据分数判断等级
    如何使用选择工具
    将JMeter测试结果写入Excel【BeanShell取样器】
    MySQL 主从复制与读写分离
    【5G 接口协议】GTP-U协议介绍
    Json和全局异常处理
  • 原文地址:https://blog.csdn.net/wsfzj123/article/details/133851725