You've already forked FrameTour-BE
feat(video): 添加移动端HLS视频流播放列表生成功能
- 实现AppVideoStreamController提供HLS播放列表生成接口 - 添加HlsStreamRequest和HlsStreamResponse数据传输对象 - 实现HlsStreamService服务类处理视频流逻辑 - 支持生成JSON格式和m3u8文件格式的播放列表 - 提供视频片段查询和设备视频HLS播放列表生成功能 - 支持EVENT和VOD两种播放列表类型 - 集成设备存储操作器获取视频文件列表 - 实现播放列表内容构建和视频片段时长计算功能
This commit is contained in:
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user