获取所有的mp4在线播放地址,并当前端调用该接口时返回mp4视频文件名及其播放地址,mp4视频存放在D盘的video文件夹下

    @ApiOperation("获取所有MP4播放地址")@GetMapping("/get/video/address")public List<Map<String, String>> getVideoAddress() {File file = new File("D:\\video");List<Map<String, String>> fileNs = new ArrayList<Map<String, String>>();String filename = "";File[] subFile = file.listFiles();for (File value : subFile) {// 判断是否为文件夹if (!value.isDirectory()) {Map<String, String> jsonVideos = new HashMap<>();String subFileName = value.getName();// 判断是否为mp4结尾if (subFileName.trim().toLowerCase().endsWith(".mp4")) {filename = "http://localhost:8080/video/alone/video/play" + subFileName;String chFileName = VIDEO_EN_CH.get(subFileName);jsonVideos.put("filename",chFileName);jsonVideos.put("address",filename);fileNs.add(jsonVideos);}}}return fileNs;}

单个视频在线播放接口,这里需要传mp4文件名

    @ApiOperation("单个MP4播放")@GetMapping(value = "/alone/video/play/{filename}" ,produces ="application/json;charset=utf-8")public void aloneVideoPlay(HttpServletRequest request, @PathVariable("filename") String fileName, HttpServletResponse response) {InputStream is = null;OutputStream os = null;try {response.setContentType("video/mp4");File file = new File("D:\\video\\" + fileName);response.addHeader("Content-Length", "" + file.length());is = new FileInputStream(file);os = response.getOutputStream();IOUtils.copy(is, os);} catch (Exception e) {log.error("播放MP4失败", e);} finally {if (null != os) {try {os.close();} catch (IOException e) {e.printStackTrace();}}}}

完整Controller

@Api(tags = "视频Controller")
@RestController
@RequestMapping("/video")
public class VideoController {@ApiOperation("获取所有MP4播放地址")@GetMapping("/get/video/address")public List<Map<String, String>> getVideoAddress() {File file = new File("D:\\video");List<Map<String, String>> fileNs = new ArrayList<Map<String, String>>();String filename = "";File[] subFile = file.listFiles();for (File value : subFile) {// 判断是否为文件夹if (!value.isDirectory()) {Map<String, String> jsonVideos = new HashMap<>();String subFileName = value.getName();// 判断是否为mp4结尾if (subFileName.trim().toLowerCase().endsWith(".mp4")) {filename = "http://localhost:8080/video/alone/video/play" + subFileName;String chFileName = VIDEO_EN_CH.get(subFileName);jsonVideos.put("filename",chFileName);jsonVideos.put("address",filename);fileNs.add(jsonVideos);}}}return fileNs;}@ApiOperation("单个MP4播放")@GetMapping(value = "/alone/video/play/{filename}" ,produces ="application/json;charset=utf-8")public void aloneVideoPlay(HttpServletRequest request, @PathVariable("filename") String fileName, HttpServletResponse response) {InputStream is = null;OutputStream os = null;try {response.setContentType("video/mp4");File file = new File("D:\\video\\" + fileName);response.addHeader("Content-Length", "" + file.length());is = new FileInputStream(file);os = response.getOutputStream();IOUtils.copy(is, os);} catch (Exception e) {log.error("播放MP4失败", e);} finally {if (null != os) {try {os.close();} catch (IOException e) {e.printStackTrace();}}}}}

扩展对视频进行分页

PageUtil

public class PageUtil {/*** 开始分页* @param list* @param pageNum 页码* @param pageSize 每页多少条数据* @return*/public static List startPage(List list, Integer pageNum,Integer pageSize) {if (list == null) {return null;}if (list.size() == 0) {return null;}Integer count = list.size(); // 记录总数Integer pageCount = 0; // 页数if (count % pageSize == 0) {pageCount = count / pageSize;} else {pageCount = count / pageSize + 1;}int fromIndex = 0; // 开始索引int toIndex = 0; // 结束索引if (pageNum != pageCount) {fromIndex = (pageNum - 1) * pageSize;toIndex = fromIndex + pageSize;} else {fromIndex = (pageNum - 1) * pageSize;toIndex = count;}List pageList = list.subList(fromIndex, toIndex);return pageList;}
}

获取所有MP4播放地址(分页),需要前端调该接口时,传两个参数,pageNum及pageSize,页码和每页多少条

    @ApiOperation("获取所有MP4播放地址")@PostMapping("/get/video/address")public List<Map<String, String>> getVideoAddress(@RequestBody Map<String, String> json) {File file = new File("D:\\video");List<Map<String, String>> fileNs = new ArrayList<Map<String, String>>();String filename = "";File[] subFile = file.listFiles();for (File value : subFile) {// 判断是否为文件夹if (!value.isDirectory()) {Map<String, String> jsonVideos = new HashMap<>();String subFileName = value.getName();// 判断是否为mp4结尾if (subFileName.trim().toLowerCase().endsWith(".mp4")) {filename = "http://localhost:8080/video/alone/video/play" + subFileName;String chFileName = VIDEO_EN_CH.get(subFileName);jsonVideos.put("filename",chFileName);jsonVideos.put("address",filename);fileNs.add(jsonVideos);}}}String pageNum = json.get("pageNum");String pageSize = json.get("pageSize");return PageUtil.startPage(fileNs, Integer.parseInt(pageNum), Integer.parseInt(pageSize));}

SpringBoot接口实现视频在线播放相关推荐

  1. WordPress 7B2主题插件分享 – 动漫视频在线播放插件Selection

    简介: 这个插件和上篇分享的统计插件都是基于7B2主题开发的,用在其他主题可能产生无法使用的可能或者CSS错乱的问题 这款插件就厉害了,可以让7B2主题从一个博客主题变成视频在线播放网站,此插件是开源 ...

  2. php实现在线视频播放,HTML如何实现视频在线播放

    本篇文章主要给大家介绍HTML视频在线播放的具体实现方法. 对于学习HTML的新手来说,可能觉得实现视频在线播放的功能会有一点难度.其实大家只要熟练掌握其中主要的标签,就会非常容易去实现. 下面我们就 ...

  3. 让你的Onedrive网盘秒变网站,文件展示,直连下载,视频在线播放

    之前我们介绍了免费的5TB的Onedrive网盘,不但能做本地硬盘使用,还能扩展你的硬盘,今天我们就来介绍一下另一款Onedrive网盘的神器OneIndex,这是针对Onedrive网盘的一个开源程 ...

  4. 39. 实战:基于api接口实现视频解析播放(32接口,窗口化操作,可导出exe,附源码)

    目录 前言 目的 思路 代码实现 需要导入的模块 1. 导入解析网站列表,实现解析过程 2. 设计UI界面 3. 设置窗口居中和循环执行 4. 注意事项 完整源码 运行效果 总结 前言 本节将类似34 ...

  5. html5ios播放视频在线播放,ios-iPhone上的HTML5视频自动播放

    这是克服您在网站上进行视频自动播放的所有难题的小技巧: 1)检查视频是否正在播放.2)在诸如单击或触摸身体等事件时触发视频播放. 注意:除非用户与设备进行交互,否则某些浏览器不允许视频自动播放. 因此 ...

  6. asp.net实现视频在线播放

    利用ASP.net实现在线音频.视频播放功能 ASP.net实现音乐,视频播放功能的实例: 今天主要介绍的是借助于微软提供的Media Player插件来实现 该插件默认是没有添在加工具箱面板上的,需 ...

  7. 92game帝国CMS电影视频在线播放网站源码 自适应手机端

    介绍: 模板用帝国CMS为核心,适合做视频播放和下载站点, 默认可以播放优酷土豆腾讯等视频站点的视频(通用播放分享代码,非解析! ), 集成CKPLAYER播放器,可以上传和外链自己的MP4.FLV格 ...

  8. php在线点播,php如何实现视频在线播放

    如题,我在弄一个可以播放视频的页面,是服务器端的,用php如何能实现呢? 回复讨论(解决方案) 只能是动态调用视频地址 在客户端的插件中进行播放 和语言没关系 不知道是不是这个意思 你可以通过html ...

  9. Java实现视频在线播放flv视频

    1.首先使用Idea创建一个Spring Boot项目. 2.在application.properties文件下加入以下代码,进行DEBUG日志输出,配置pom.xml文件: #logging日志配 ...

最新文章

  1. centos vim 安装插件本质研究
  2. .jsp后缀语言_ARM汇编语言入门(三)
  3. 性能测试, 压力测试 , 负载测试和 容量测试 的区别与联系
  4. ASP.NET 连接MySql数据库
  5. oracle以32位运行,Oracle在 32位系统上运行突破sga1.7g的方法
  6. ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction
  7. comptia a+_CompTIA认证考试– A +,Network + Security +,CASP,Linux +和IT基础实践测试和网站
  8. echo输出不重复行到文件 shell_Shell脚本echo指令使用小技巧
  9. 云计算机是对什么技术的发展,云计算是对什么技术的发展与运用
  10. python爬取百度的工具_Python爬虫之小试牛刀——使用Python抓取百度街景图像
  11. windows 电脑如何查看电脑显卡内存(显存)、CPU型号、内存、USB集线器等配置信息 win+r dxdiag
  12. 科技的成就(三十六)
  13. 内核与驱动文件的version magic匹配问题
  14. idea中*mapper.xml文件字体颜色变成黄色的解决办法
  15. 远程桌面无法连接远程计算机是什么原因?
  16. cmdy5(cmdy5庆余年)
  17. Python——生成激活码
  18. 中国石油大学《输气管道设计与管理(含课程设计)》第一阶段在线作业
  19. 更新TTK失败,请检查网络连接
  20. MARKETS AND MARKET LOGIC——The Market‘s Principles (5)

热门文章

  1. python的tesseract库几个重要的命令
  2. Orange pi GPIO输出控制,裸机点灯大法(二)!
  3. python机器学习初探
  4. win10查看服务器共享文件夹权限,win10共享文件夹win7没有权限访问的解决教程
  5. 回归预测 | MATLAB实现GWO-LSTM灰狼算法优化长短期记忆神经网络多输入单输出回归预测
  6. 图像在计算机中通过什么方式表示_线性代数在数据科学中的十大强大应用(二)...
  7. ZOJ 2975 Kinds of Fuwas(暴力)
  8. ec20 以太网_整车通讯系统——车载以太网系统系列文章(第一篇)
  9. 记录win10安装Dexdump并脱壳
  10. 淘宝短视频多模态融合识别