feat(video): 添加移动端HLS视频流播放列表生成功能

- 实现AppVideoStreamController提供HLS播放列表生成接口
- 添加HlsStreamRequest和HlsStreamResponse数据传输对象
- 实现HlsStreamService服务类处理视频流逻辑
- 支持生成JSON格式和m3u8文件格式的播放列表
- 提供视频片段查询和设备视频HLS播放列表生成功能
- 支持EVENT和VOD两种播放列表类型
- 集成设备存储操作器获取视频文件列表
- 实现播放列表内容构建和视频片段时长计算功能
This commit is contained in:
2025-12-26 15:37:22 +08:00
parent c583d4b007
commit 1916dd96a2
4 changed files with 502 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
package com.ycwl.basic.model.mobile.video.dto;
import lombok.Data;
import jakarta.validation.constraints.NotNull;
/**
* HLS视频流请求参数
* 用于生成设备视频的HLS播放列表
*
* @author Claude Code
* @date 2025-12-26
*/
@Data
public class HlsStreamRequest {
/**
* 设备ID
*/
@NotNull(message = "设备ID不能为空")
private Long deviceId;
/**
* 视频时长(分钟),默认2分钟
* 获取最近N分钟的视频
*/
private Integer durationMinutes = 2;
/**
* 是否为Event播放列表
* true: 使用EVENT类型(适合固定时长的视频回放)
* false: 使用VOD类型(适合点播)
*/
private Boolean eventPlaylist = true;
}

View File

@@ -0,0 +1,86 @@
package com.ycwl.basic.model.mobile.video.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* HLS视频流响应
* 包含生成的m3u8播放列表内容
*
* @author Claude Code
* @date 2025-12-26
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class HlsStreamResponse {
/**
* 设备ID
*/
private Long deviceId;
/**
* m3u8播放列表内容
*/
private String playlistContent;
/**
* 视频片段数量
*/
private Integer segmentCount;
/**
* 总时长(秒)
*/
private Double totalDurationSeconds;
/**
* 视频片段列表
*/
private List<VideoSegment> segments;
/**
* 播放列表类型(EVENT/VOD)
*/
private String playlistType;
/**
* 视频片段信息
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class VideoSegment {
/**
* 视频片段URL
*/
private String url;
/**
* 片段时长(秒)
*/
private Double duration;
/**
* 片段序号
*/
private Integer sequence;
/**
* 片段开始时间
*/
private String startTime;
/**
* 片段结束时间
*/
private String endTime;
}
}