210 lines
4.8 KiB
TypeScript
Raw Normal View History

2025-09-04 16:58:42 +08:00
//#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 "未知";
}
}
/**
*
*
*
* labelvalue
* 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
/**
* indextaskId必填
*/
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