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);
}