210 lines
4.8 KiB
TypeScript
210 lines
4.8 KiB
TypeScript
|
|
|
|||
|
|
//#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
|