java - Spring Boot 提供 m3u8 播放列表
问题描述
我正在尝试通过 Spring Boot 提供 m3u8 播放列表。我有一个正在运行的 ffmpeg 进程,它实时转码多播并将文件发送到 /src/resources/public/output.m3u8。我看到播放列表正在更新并且新的 .ts 文件正在正确生成,但是当尝试在视频播放器中观看流时,它只播放一定数量的视频。有没有办法在 Java 中正确地提供正在运行的播放列表而不是静态地提供它?
编辑:当使用 python 启动一个基本的 http 服务器时python3 -m http.server
,我可以很好地查看流。是否有 Spring Boot 方式来完成相同的任务?
解决方案
使用 Spring 4.1,您的方法将起作用,没有任何问题。如果您想查看,下面是另一种方法
@RequestMapping(value = "/VMS-49001/playlist/{listName:.+}")
public ResponseEntity<byte[]> testphoto() throws IOException {
InputStream in = servletContext.getResourceAsStream("/images/no_image.jpg");
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/vnd.apple.mpegurl"));
headers.setContentDispositionFormData(fileName, fileName);
return new ResponseEntity<byte[]>(IOUtils.toByteArray(in), headers, HttpStatus.CREATED);
}
推荐阅读
- angular - Angular“let-col”没有传递所有属性
- ios - 我们如何使用 swift 和 iOS 11+ 进行直线图像转换
- gams-math - GAMS中是否有标准的正态累积分布函数?
- jquery - 模态内容刷新和提交
- javascript - javascript中的冒泡排序无法运行?
- python - 显然我没有在字符串格式化期间转换所有参数,但我不知道出了什么问题
- excel - 将一张表中的表格数据引用到另一张表中的单元格
- python - 无法发布日期时间类型python
- c - 为什么在程序中两次使用gets()来获取两个不同数组的输入,即使是第一个数组也只返回第二个输入?
- android - 有没有办法绕过 MI 设备中的“自动启动”在 android 中运行后台服务?