namespace FileShare_Services.Services.FileLibrary { /// /// 视频缩略图生成服务接口,负责从视频文件中截取缩略图并获取时长信息。 /// public interface IVideoThumbnailService { /// /// 为指定视频文件生成缩略图,如果已存在则直接返回。 /// /// 文件库根目录 ID。 /// 视频文件的绝对路径。 /// 取消令牌。 /// 生成的缩略图信息,失败时返回 null。 Task GenerateThumbnailAsync(int libraryRootId, string videoPath, CancellationToken ct = default); /// /// 将相对路径转换为缩略图存储目录下的绝对路径,并校验路径安全性。 /// /// 相对路径。 /// 绝对路径。 /// 当路径越权访问缩略图存储根目录之外的位置时抛出。 string GetAbsolutePath(string relativePath); /// /// 获取视频文件的总时长。 /// /// 视频文件的绝对路径。 /// 视频时长(秒),获取失败时返回 null。 double? GetVideoDuration(string videoPath); } /// /// 缩略图生成结果记录。 /// /// 缩略图相对于存储根目录的路径。 /// 缩略图的 MIME 类型。 public sealed record GeneratedThumbnail(string RelativePath, string ContentType); }