//#region 图转视频类型 import { BookBackTaskType } from "./bookEnum"; /** 图片转视频的方式 */ export enum ImageToVideoModels { /** runway 生成视频 */ RUNWAY = "RUNWAY", /** luma 生成视频 */ LUMA = "LUMA", /** 可灵生成视频 */ KLING = "KLING", /** Pika 生成视频 */ PIKA = "PIKA", /** MJ 图转视频 */ MJ_VIDEO = "MJ_VIDEO", /** MJ 视频拓展 */ MJ_VIDEO_EXTEND = "MJ_VIDEO_EXTEND" } export const MappingTaskTypeToVideoModel = (type: BookBackTaskType | string) => { switch (type) { case BookBackTaskType.LUMA_VIDEO: return ImageToVideoModels.LUMA; case BookBackTaskType.RUNWAY_VIDEO: return ImageToVideoModels.RUNWAY; case BookBackTaskType.KLING_VIDEO: return ImageToVideoModels.KLING; case BookBackTaskType.MJ_VIDEO: return ImageToVideoModels.MJ_VIDEO; case BookBackTaskType.MJ_VIDEO_EXTEND: return ImageToVideoModels.MJ_VIDEO_EXTEND; default: return "UNKNOWN" } } /** * 图片转视频模型的名称转换 * @param model 图片转视频的模型类型 * @returns 模型的中文名称 */ export const GetImageToVideoModelsLabel = (model: ImageToVideoModels | string) => { switch (model) { case ImageToVideoModels.RUNWAY: return "Runway"; case ImageToVideoModels.LUMA: return "Luma"; case ImageToVideoModels.KLING: return "可灵"; case ImageToVideoModels.PIKA: return "Pika"; case ImageToVideoModels.MJ_VIDEO: return "MJ视频"; default: return "未知"; } } /** * 获取图像转视频模型选项的函数 * * 该函数返回一个包含所有可用图像转视频模型的选项数组。 * 每个选项包含一个标签(label)和一个值(value)。 * 标签通过调用 GetImageToVideoModelsLabel 函数获得,而值则直接使用 ImageToVideoModels 枚举值。 * * @returns 图像转视频模型选项数组,每个选项包含 label 和 value 属性 */ export const GetImageToVideoModelsOptions = () => { return [ { label: GetImageToVideoModelsLabel(ImageToVideoModels.MJ_VIDEO), value: ImageToVideoModels.MJ_VIDEO }, { label: GetImageToVideoModelsLabel(ImageToVideoModels.RUNWAY), value: ImageToVideoModels.RUNWAY }, { label: GetImageToVideoModelsLabel(ImageToVideoModels.LUMA), value: ImageToVideoModels.LUMA }, { label: GetImageToVideoModelsLabel(ImageToVideoModels.KLING), value: ImageToVideoModels.KLING }, { label: GetImageToVideoModelsLabel(ImageToVideoModels.PIKA), value: ImageToVideoModels.PIKA }, ] } //#endregion //#region 通用 /** 生成视频的方式 */ export enum VideoModel { /** 文生视频 */ TEXT_TO_VIDEO = "textToVideo", /** 图生视频 */ IMAGE_TO_VIDEO = "imageToVideo", } /** 图转视频的状态 */ export enum VideoStatus { /** 等待 */ WAIT = "wait", /** 处理中 */ PROCESSING = "processing", /** 完成 */ SUCCESS = "success", /** 失败 */ FAIL = "fail", } export const GetVideoStatus = (status: VideoStatus | string) => { switch (status) { case VideoStatus.WAIT: case "0": return "等待"; case VideoStatus.PROCESSING: case "1": return "处理中"; case VideoStatus.SUCCESS: case "3": return "完成"; case VideoStatus.FAIL: case '2': return "失败"; default: return "未知"; } } //#endregion //#region runway 相关 /** runway 生成视频的模型 */ export enum RunawayModel { GNE2 = "gen2", GNE3 = "gen3", } /** runway 合成视频的时长 */ export enum RunwaySeconds { FIVE = 5, TEN = 10, } //#endregion //#region 可灵相关 export enum KlingMode { /** 高性能 */ STD = "std", /** 高表现 */ PRO = "pro" } //#endregion //#region MJ Video /** * 对视频任务进行操作。不为空时,index、taskId必填 */ export enum MJVideoAction { Extend = "extend", } /** * 首帧图片,扩展时可为空 */ export enum MJVideoImageType { Base64 = "base64", Url = "url", } /** * MJ Video的动作幅度 */ export enum MJVideoMotion { High = "high", Low = "low", } /** * 获取MJ视频动作幅度的标签 * * @param model MJ视频动作幅度枚举值或字符串 * @returns 返回对应的中英文标签 */ export function GetMJVideoMotionLabel(model: MJVideoMotion | string) { switch (model) { case MJVideoMotion.High: return "高 (High)"; case MJVideoMotion.Low: return "低 (Low)"; default: return "无效" } } /** * 获取MJ视频动作幅度的选项列表 * * @returns 返回包含标签和值的选项数组,用于下拉选择框等UI组件 */ export function GetMJVideoMotionOptions() { return [ { label: GetMJVideoMotionLabel(MJVideoMotion.Low), value: MJVideoMotion.Low }, { label: GetMJVideoMotionLabel(MJVideoMotion.High), value: MJVideoMotion.High } ] } //#endregion