markdown-ai-rewriter 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +135 -0
- package/dist/cli.js.map +1 -1
- package/dist/core/providers/anthropic.d.ts.map +1 -1
- package/dist/core/providers/anthropic.js +3 -2
- package/dist/core/providers/anthropic.js.map +1 -1
- package/dist/core/providers/azure-openai.d.ts.map +1 -1
- package/dist/core/providers/azure-openai.js +4 -3
- package/dist/core/providers/azure-openai.js.map +1 -1
- package/dist/core/providers/base.d.ts +2 -2
- package/dist/core/providers/base.d.ts.map +1 -1
- package/dist/core/providers/base.js +19 -4
- package/dist/core/providers/base.js.map +1 -1
- package/dist/core/providers/minimax.d.ts.map +1 -1
- package/dist/core/providers/minimax.js +4 -3
- package/dist/core/providers/minimax.js.map +1 -1
- package/dist/core/providers/openai-compatible.d.ts.map +1 -1
- package/dist/core/providers/openai-compatible.js +3 -2
- package/dist/core/providers/openai-compatible.js.map +1 -1
- package/dist/core/providers/openai.d.ts.map +1 -1
- package/dist/core/providers/openai.js +4 -3
- package/dist/core/providers/openai.js.map +1 -1
- package/dist/core/rewriter.d.ts +9 -0
- package/dist/core/rewriter.d.ts.map +1 -1
- package/dist/core/rewriter.js +116 -11
- package/dist/core/rewriter.js.map +1 -1
- package/dist/core/text-providers/anthropic.d.ts +12 -0
- package/dist/core/text-providers/anthropic.d.ts.map +1 -0
- package/dist/core/text-providers/anthropic.js +78 -0
- package/dist/core/text-providers/anthropic.js.map +1 -0
- package/dist/core/text-providers/azure-openai.d.ts +15 -0
- package/dist/core/text-providers/azure-openai.d.ts.map +1 -0
- package/dist/core/text-providers/azure-openai.js +87 -0
- package/dist/core/text-providers/azure-openai.js.map +1 -0
- package/dist/core/text-providers/base.d.ts +12 -0
- package/dist/core/text-providers/base.d.ts.map +1 -0
- package/dist/core/text-providers/base.js +66 -0
- package/dist/core/text-providers/base.js.map +1 -0
- package/dist/core/text-providers/deepseek.d.ts +6 -0
- package/dist/core/text-providers/deepseek.d.ts.map +1 -0
- package/dist/core/text-providers/deepseek.js +12 -0
- package/dist/core/text-providers/deepseek.js.map +1 -0
- package/dist/core/text-providers/doubao.d.ts +6 -0
- package/dist/core/text-providers/doubao.d.ts.map +1 -0
- package/dist/core/text-providers/doubao.js +12 -0
- package/dist/core/text-providers/doubao.js.map +1 -0
- package/dist/core/text-providers/gemini.d.ts +6 -0
- package/dist/core/text-providers/gemini.d.ts.map +1 -0
- package/dist/core/text-providers/gemini.js +12 -0
- package/dist/core/text-providers/gemini.js.map +1 -0
- package/dist/core/text-providers/glm.d.ts +6 -0
- package/dist/core/text-providers/glm.d.ts.map +1 -0
- package/dist/core/text-providers/glm.js +12 -0
- package/dist/core/text-providers/glm.js.map +1 -0
- package/dist/core/text-providers/minimax.d.ts +20 -0
- package/dist/core/text-providers/minimax.d.ts.map +1 -0
- package/dist/core/text-providers/minimax.js +88 -0
- package/dist/core/text-providers/minimax.js.map +1 -0
- package/dist/core/text-providers/openai-compatible.d.ts +14 -0
- package/dist/core/text-providers/openai-compatible.d.ts.map +1 -0
- package/dist/core/text-providers/openai-compatible.js +82 -0
- package/dist/core/text-providers/openai-compatible.js.map +1 -0
- package/dist/core/text-providers/openai.d.ts +12 -0
- package/dist/core/text-providers/openai.d.ts.map +1 -0
- package/dist/core/text-providers/openai.js +77 -0
- package/dist/core/text-providers/openai.js.map +1 -0
- package/dist/core/text-providers/openrouter.d.ts +6 -0
- package/dist/core/text-providers/openrouter.d.ts.map +1 -0
- package/dist/core/text-providers/openrouter.js +12 -0
- package/dist/core/text-providers/openrouter.js.map +1 -0
- package/dist/core/text-providers/qwen.d.ts +6 -0
- package/dist/core/text-providers/qwen.d.ts.map +1 -0
- package/dist/core/text-providers/qwen.js +12 -0
- package/dist/core/text-providers/qwen.js.map +1 -0
- package/dist/core/text-providers/wenxin.d.ts +6 -0
- package/dist/core/text-providers/wenxin.d.ts.map +1 -0
- package/dist/core/text-providers/wenxin.js +12 -0
- package/dist/core/text-providers/wenxin.js.map +1 -0
- package/dist/core/video-generator.d.ts +65 -0
- package/dist/core/video-generator.d.ts.map +1 -0
- package/dist/core/video-generator.js +140 -0
- package/dist/core/video-generator.js.map +1 -0
- package/dist/core/video-providers/doubao.d.ts +52 -0
- package/dist/core/video-providers/doubao.d.ts.map +1 -0
- package/dist/core/video-providers/doubao.js +148 -0
- package/dist/core/video-providers/doubao.js.map +1 -0
- package/dist/core/video-providers/index.d.ts +6 -0
- package/dist/core/video-providers/index.d.ts.map +1 -0
- package/dist/core/video-providers/index.js +16 -0
- package/dist/core/video-providers/index.js.map +1 -0
- package/dist/core/video-providers/kling.d.ts +27 -0
- package/dist/core/video-providers/kling.d.ts.map +1 -0
- package/dist/core/video-providers/kling.js +113 -0
- package/dist/core/video-providers/kling.js.map +1 -0
- package/dist/core/video-providers/minimax.d.ts +30 -0
- package/dist/core/video-providers/minimax.d.ts.map +1 -0
- package/dist/core/video-providers/minimax.js +133 -0
- package/dist/core/video-providers/minimax.js.map +1 -0
- package/dist/core/video-providers/runway.d.ts +22 -0
- package/dist/core/video-providers/runway.d.ts.map +1 -0
- package/dist/core/video-providers/runway.js +121 -0
- package/dist/core/video-providers/runway.js.map +1 -0
- package/dist/core/video-providers/types.d.ts +41 -0
- package/dist/core/video-providers/types.d.ts.map +1 -0
- package/dist/core/video-providers/types.js +3 -0
- package/dist/core/video-providers/types.js.map +1 -0
- package/dist/index.d.ts +21 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -14
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +36 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { VideoProvider, VideoGenerationOptions, VideoGenerationResult } from './types';
|
|
2
|
+
export declare const DEFAULT_DOUBAO_VIDEO_URL = "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks";
|
|
3
|
+
export declare const DEFAULT_DOUBAO_VIDEO_QUERY_URL = "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks";
|
|
4
|
+
/**
|
|
5
|
+
* Seedance 模型列表
|
|
6
|
+
*
|
|
7
|
+
* 文生视频 (T2V):
|
|
8
|
+
* - seedance-2.0-lite-t2v-250428 (Seedance 2.0 Lite)
|
|
9
|
+
* - seedance-1.5-pro-t2v-250328 (Seedance 1.5 Pro)
|
|
10
|
+
* - seedance-1.0-pro-t2v (Seedance 1.0 Pro)
|
|
11
|
+
* - seedance-1.0-lite-t2v (Seedance 1.0 Lite)
|
|
12
|
+
*
|
|
13
|
+
* 图生视频 (I2V):
|
|
14
|
+
* - seedance-2.0-lite-i2v-250428 (Seedance 2.0 Lite)
|
|
15
|
+
* - seedance-1.5-pro-i2v-250328 (Seedance 1.5 Pro)
|
|
16
|
+
* - seedance-1.0-pro-i2v (Seedance 1.0 Pro)
|
|
17
|
+
* - seedance-1.0-lite-i2v (Seedance 1.0 Lite)
|
|
18
|
+
*/
|
|
19
|
+
export declare const SEEDANCE_MODELS: {
|
|
20
|
+
'seedance-2.0-lite-t2v': string;
|
|
21
|
+
'seedance-2.0-lite-i2v': string;
|
|
22
|
+
'seedance-1.5-pro-t2v': string;
|
|
23
|
+
'seedance-1.5-pro-i2v': string;
|
|
24
|
+
'seedance-1.0-pro-t2v': string;
|
|
25
|
+
'seedance-1.0-pro-i2v': string;
|
|
26
|
+
'seedance-1.0-lite-t2v': string;
|
|
27
|
+
'seedance-1.0-lite-i2v': string;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* 火山引擎豆包视频生成 Provider (Seedance)
|
|
31
|
+
*
|
|
32
|
+
* 支持模型:
|
|
33
|
+
* - Seedance 2.0 Lite (默认,最新)
|
|
34
|
+
* - Seedance 1.5 Pro
|
|
35
|
+
* - Seedance 1.0 Pro / Lite
|
|
36
|
+
*/
|
|
37
|
+
export declare class DoubaoVideoProvider implements VideoProvider {
|
|
38
|
+
name: string;
|
|
39
|
+
private apiKey;
|
|
40
|
+
private model;
|
|
41
|
+
private pollInterval;
|
|
42
|
+
private maxPollAttempts;
|
|
43
|
+
private verbose;
|
|
44
|
+
constructor(apiKey: string, model?: string, options?: {
|
|
45
|
+
pollInterval?: number;
|
|
46
|
+
maxPollAttempts?: number;
|
|
47
|
+
verbose?: boolean;
|
|
48
|
+
});
|
|
49
|
+
generateVideo(options: VideoGenerationOptions): Promise<VideoGenerationResult>;
|
|
50
|
+
private sleep;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=doubao.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doubao.d.ts","sourceRoot":"","sources":["../../../src/core/video-providers/doubao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEvF,eAAO,MAAM,wBAAwB,wEAAwE,CAAC;AAC9G,eAAO,MAAM,8BAA8B,wEAAwE,CAAC;AAEpH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,eAAe;;;;;;;;;CAY3B,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACvD,IAAI,SAAkB;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,OAAO,CAAU;gBAGvB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAuC,EAC9C,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;IAS5E,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA4HpF,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DoubaoVideoProvider = exports.SEEDANCE_MODELS = exports.DEFAULT_DOUBAO_VIDEO_QUERY_URL = exports.DEFAULT_DOUBAO_VIDEO_URL = void 0;
|
|
4
|
+
exports.DEFAULT_DOUBAO_VIDEO_URL = 'https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks';
|
|
5
|
+
exports.DEFAULT_DOUBAO_VIDEO_QUERY_URL = 'https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks';
|
|
6
|
+
/**
|
|
7
|
+
* Seedance 模型列表
|
|
8
|
+
*
|
|
9
|
+
* 文生视频 (T2V):
|
|
10
|
+
* - seedance-2.0-lite-t2v-250428 (Seedance 2.0 Lite)
|
|
11
|
+
* - seedance-1.5-pro-t2v-250328 (Seedance 1.5 Pro)
|
|
12
|
+
* - seedance-1.0-pro-t2v (Seedance 1.0 Pro)
|
|
13
|
+
* - seedance-1.0-lite-t2v (Seedance 1.0 Lite)
|
|
14
|
+
*
|
|
15
|
+
* 图生视频 (I2V):
|
|
16
|
+
* - seedance-2.0-lite-i2v-250428 (Seedance 2.0 Lite)
|
|
17
|
+
* - seedance-1.5-pro-i2v-250328 (Seedance 1.5 Pro)
|
|
18
|
+
* - seedance-1.0-pro-i2v (Seedance 1.0 Pro)
|
|
19
|
+
* - seedance-1.0-lite-i2v (Seedance 1.0 Lite)
|
|
20
|
+
*/
|
|
21
|
+
exports.SEEDANCE_MODELS = {
|
|
22
|
+
// Seedance 2.0
|
|
23
|
+
'seedance-2.0-lite-t2v': 'seedance-2.0-lite-t2v-250428',
|
|
24
|
+
'seedance-2.0-lite-i2v': 'seedance-2.0-lite-i2v-250428',
|
|
25
|
+
// Seedance 1.5
|
|
26
|
+
'seedance-1.5-pro-t2v': 'seedance-1.5-pro-t2v-250328',
|
|
27
|
+
'seedance-1.5-pro-i2v': 'seedance-1.5-pro-i2v-250328',
|
|
28
|
+
// Seedance 1.0
|
|
29
|
+
'seedance-1.0-pro-t2v': 'seedance-1.0-pro-t2v',
|
|
30
|
+
'seedance-1.0-pro-i2v': 'seedance-1.0-pro-i2v',
|
|
31
|
+
'seedance-1.0-lite-t2v': 'seedance-1.0-lite-t2v',
|
|
32
|
+
'seedance-1.0-lite-i2v': 'seedance-1.0-lite-i2v',
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* 火山引擎豆包视频生成 Provider (Seedance)
|
|
36
|
+
*
|
|
37
|
+
* 支持模型:
|
|
38
|
+
* - Seedance 2.0 Lite (默认,最新)
|
|
39
|
+
* - Seedance 1.5 Pro
|
|
40
|
+
* - Seedance 1.0 Pro / Lite
|
|
41
|
+
*/
|
|
42
|
+
class DoubaoVideoProvider {
|
|
43
|
+
constructor(apiKey, model = 'seedance-2.0-lite-t2v-250428', options) {
|
|
44
|
+
this.name = 'doubao-video';
|
|
45
|
+
this.apiKey = apiKey;
|
|
46
|
+
this.model = model;
|
|
47
|
+
this.pollInterval = options?.pollInterval || 5000;
|
|
48
|
+
this.maxPollAttempts = options?.maxPollAttempts || 120;
|
|
49
|
+
this.verbose = options?.verbose || false;
|
|
50
|
+
}
|
|
51
|
+
async generateVideo(options) {
|
|
52
|
+
const { prompt, duration = 5, aspectRatio = '16:9', } = options;
|
|
53
|
+
if (this.verbose) {
|
|
54
|
+
console.log(`🎬 [豆包] 开始生成视频...`);
|
|
55
|
+
console.log(` 模型: ${this.model}`);
|
|
56
|
+
console.log(` 时长: ${duration}s`);
|
|
57
|
+
console.log(` 宽高比: ${aspectRatio}`);
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
// 1. 创建视频生成任务
|
|
61
|
+
const createResponse = await fetch(exports.DEFAULT_DOUBAO_VIDEO_URL, {
|
|
62
|
+
method: 'POST',
|
|
63
|
+
headers: {
|
|
64
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
65
|
+
'Content-Type': 'application/json',
|
|
66
|
+
},
|
|
67
|
+
body: JSON.stringify({
|
|
68
|
+
model: this.model,
|
|
69
|
+
content: [
|
|
70
|
+
{
|
|
71
|
+
type: 'text',
|
|
72
|
+
text: prompt,
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
video_gen_params: {
|
|
76
|
+
duration,
|
|
77
|
+
aspect_ratio: aspectRatio,
|
|
78
|
+
},
|
|
79
|
+
}),
|
|
80
|
+
});
|
|
81
|
+
if (!createResponse.ok) {
|
|
82
|
+
const errorText = await createResponse.text();
|
|
83
|
+
throw new Error(`创建视频任务失败: ${createResponse.status} - ${errorText}`);
|
|
84
|
+
}
|
|
85
|
+
const createResult = await createResponse.json();
|
|
86
|
+
if (createResult.error) {
|
|
87
|
+
throw new Error(`创建视频任务失败: ${createResult.error.message}`);
|
|
88
|
+
}
|
|
89
|
+
const taskId = createResult.id;
|
|
90
|
+
if (!taskId) {
|
|
91
|
+
throw new Error('未返回任务 ID');
|
|
92
|
+
}
|
|
93
|
+
if (this.verbose) {
|
|
94
|
+
console.log(` 任务 ID: ${taskId}`);
|
|
95
|
+
console.log(` 等待视频生成...`);
|
|
96
|
+
}
|
|
97
|
+
// 2. 轮询任务状态
|
|
98
|
+
let attempts = 0;
|
|
99
|
+
while (attempts < this.maxPollAttempts) {
|
|
100
|
+
await this.sleep(this.pollInterval);
|
|
101
|
+
attempts++;
|
|
102
|
+
const queryResponse = await fetch(`${exports.DEFAULT_DOUBAO_VIDEO_QUERY_URL}/${taskId}`, {
|
|
103
|
+
method: 'GET',
|
|
104
|
+
headers: {
|
|
105
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
if (!queryResponse.ok) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const queryResult = await queryResponse.json();
|
|
112
|
+
if (this.verbose && attempts % 6 === 0) {
|
|
113
|
+
console.log(` 状态: ${queryResult.status} (${attempts * this.pollInterval / 1000}s)`);
|
|
114
|
+
}
|
|
115
|
+
if (queryResult.status === 'succeeded') {
|
|
116
|
+
const videoContent = queryResult.content?.find(c => c.type === 'video_url');
|
|
117
|
+
const videoUrl = videoContent?.video_url;
|
|
118
|
+
if (!videoUrl) {
|
|
119
|
+
throw new Error('未返回视频 URL');
|
|
120
|
+
}
|
|
121
|
+
if (this.verbose) {
|
|
122
|
+
console.log(`✅ [豆包] 视频生成成功!`);
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
success: true,
|
|
126
|
+
videoUrl,
|
|
127
|
+
taskId,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
if (queryResult.status === 'failed') {
|
|
131
|
+
throw new Error(`视频生成失败: ${queryResult.error?.message || '未知错误'}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
throw new Error(`视频生成超时(等待 ${this.maxPollAttempts * this.pollInterval / 1000}s)`);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
return {
|
|
138
|
+
success: false,
|
|
139
|
+
error: error.message,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
sleep(ms) {
|
|
144
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
exports.DoubaoVideoProvider = DoubaoVideoProvider;
|
|
148
|
+
//# sourceMappingURL=doubao.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doubao.js","sourceRoot":"","sources":["../../../src/core/video-providers/doubao.ts"],"names":[],"mappings":";;;AAEa,QAAA,wBAAwB,GAAG,qEAAqE,CAAC;AACjG,QAAA,8BAA8B,GAAG,qEAAqE,CAAC;AAEpH;;;;;;;;;;;;;;GAcG;AACU,QAAA,eAAe,GAAG;IAC7B,eAAe;IACf,uBAAuB,EAAE,8BAA8B;IACvD,uBAAuB,EAAE,8BAA8B;IACvD,eAAe;IACf,sBAAsB,EAAE,6BAA6B;IACrD,sBAAsB,EAAE,6BAA6B;IACrD,eAAe;IACf,sBAAsB,EAAE,sBAAsB;IAC9C,sBAAsB,EAAE,sBAAsB;IAC9C,uBAAuB,EAAE,uBAAuB;IAChD,uBAAuB,EAAE,uBAAuB;CACjD,CAAC;AAEF;;;;;;;GAOG;AACH,MAAa,mBAAmB;IAQ9B,YACE,MAAc,EACd,QAAgB,8BAA8B,EAC9C,OAAgF;QAVlF,SAAI,GAAG,cAAc,CAAC;QAYpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,GAAG,CAAC;QACvD,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA+B;QACjD,MAAM,EACJ,MAAM,EACN,QAAQ,GAAG,CAAC,EACZ,WAAW,GAAG,MAAM,GACrB,GAAG,OAAO,CAAC;QAEZ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC;YACH,cAAc;YACd,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,gCAAwB,EAAE;gBAC3D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;oBACxC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,MAAM;yBACb;qBACF;oBACD,gBAAgB,EAAE;wBAChB,QAAQ;wBACR,YAAY,EAAE,WAAW;qBAC1B;iBACF,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,aAAa,cAAc,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,IAAI,EAI7C,CAAC;YAEF,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,aAAa,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC9B,CAAC;YAED,YAAY;YACZ,IAAI,QAAQ,GAAG,CAAC,CAAC;YAEjB,OAAO,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACpC,QAAQ,EAAE,CAAC;gBAEX,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,sCAA8B,IAAI,MAAM,EAAE,EAAE;oBAC/E,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE;wBACP,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;qBACzC;iBACF,CAAC,CAAC;gBAEH,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;oBACtB,SAAS;gBACX,CAAC;gBAED,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,IAAI,EAK3C,CAAC;gBAEF,IAAI,IAAI,CAAC,OAAO,IAAI,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvC,OAAO,CAAC,GAAG,CAAC,UAAU,WAAW,CAAC,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,CAAC;gBACxF,CAAC;gBAED,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;oBACvC,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;oBAC5E,MAAM,QAAQ,GAAG,YAAY,EAAE,SAAS,CAAC;oBAEzC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;oBAC/B,CAAC;oBAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBACjB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBAChC,CAAC;oBAED,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,QAAQ;wBACR,MAAM;qBACP,CAAC;gBACJ,CAAC;gBAED,IAAI,WAAW,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACpC,MAAM,IAAI,KAAK,CAAC,WAAW,WAAW,CAAC,KAAK,EAAE,OAAO,IAAI,MAAM,EAAE,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,CAAC,OAAO;aACrB,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;CACF;AAnJD,kDAmJC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { MiniMaxVideoProvider, DEFAULT_MINIMAX_VIDEO_URL } from './minimax';
|
|
2
|
+
export { DoubaoVideoProvider, DEFAULT_DOUBAO_VIDEO_URL, SEEDANCE_MODELS } from './doubao';
|
|
3
|
+
export { KlingVideoProvider, DEFAULT_KLING_VIDEO_URL } from './kling';
|
|
4
|
+
export { RunwayVideoProvider } from './runway';
|
|
5
|
+
export type { VideoProvider, VideoGenerationOptions, VideoGenerationResult } from './types';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/video-providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RunwayVideoProvider = exports.DEFAULT_KLING_VIDEO_URL = exports.KlingVideoProvider = exports.SEEDANCE_MODELS = exports.DEFAULT_DOUBAO_VIDEO_URL = exports.DoubaoVideoProvider = exports.DEFAULT_MINIMAX_VIDEO_URL = exports.MiniMaxVideoProvider = void 0;
|
|
4
|
+
var minimax_1 = require("./minimax");
|
|
5
|
+
Object.defineProperty(exports, "MiniMaxVideoProvider", { enumerable: true, get: function () { return minimax_1.MiniMaxVideoProvider; } });
|
|
6
|
+
Object.defineProperty(exports, "DEFAULT_MINIMAX_VIDEO_URL", { enumerable: true, get: function () { return minimax_1.DEFAULT_MINIMAX_VIDEO_URL; } });
|
|
7
|
+
var doubao_1 = require("./doubao");
|
|
8
|
+
Object.defineProperty(exports, "DoubaoVideoProvider", { enumerable: true, get: function () { return doubao_1.DoubaoVideoProvider; } });
|
|
9
|
+
Object.defineProperty(exports, "DEFAULT_DOUBAO_VIDEO_URL", { enumerable: true, get: function () { return doubao_1.DEFAULT_DOUBAO_VIDEO_URL; } });
|
|
10
|
+
Object.defineProperty(exports, "SEEDANCE_MODELS", { enumerable: true, get: function () { return doubao_1.SEEDANCE_MODELS; } });
|
|
11
|
+
var kling_1 = require("./kling");
|
|
12
|
+
Object.defineProperty(exports, "KlingVideoProvider", { enumerable: true, get: function () { return kling_1.KlingVideoProvider; } });
|
|
13
|
+
Object.defineProperty(exports, "DEFAULT_KLING_VIDEO_URL", { enumerable: true, get: function () { return kling_1.DEFAULT_KLING_VIDEO_URL; } });
|
|
14
|
+
var runway_1 = require("./runway");
|
|
15
|
+
Object.defineProperty(exports, "RunwayVideoProvider", { enumerable: true, get: function () { return runway_1.RunwayVideoProvider; } });
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/video-providers/index.ts"],"names":[],"mappings":";;;AAAA,qCAA4E;AAAnE,+GAAA,oBAAoB,OAAA;AAAE,oHAAA,yBAAyB,OAAA;AACxD,mCAA0F;AAAjF,6GAAA,mBAAmB,OAAA;AAAE,kHAAA,wBAAwB,OAAA;AAAE,yGAAA,eAAe,OAAA;AACvE,iCAAsE;AAA7D,2GAAA,kBAAkB,OAAA;AAAE,gHAAA,uBAAuB,OAAA;AACpD,mCAA+C;AAAtC,6GAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { VideoProvider, VideoGenerationOptions, VideoGenerationResult } from './types';
|
|
2
|
+
export declare const DEFAULT_KLING_VIDEO_URL = "https://api.klingai.com/v1/videos/text2video";
|
|
3
|
+
export declare const DEFAULT_KLING_VIDEO_QUERY_URL = "https://api.klingai.com/v1/videos/text2video";
|
|
4
|
+
/**
|
|
5
|
+
* 快手可灵视频生成 Provider (Kling)
|
|
6
|
+
*
|
|
7
|
+
* 支持模型:
|
|
8
|
+
* - kling-v1 (默认)
|
|
9
|
+
* - kling-v1-5
|
|
10
|
+
* - kling-v1-6
|
|
11
|
+
*/
|
|
12
|
+
export declare class KlingVideoProvider implements VideoProvider {
|
|
13
|
+
name: string;
|
|
14
|
+
private apiKey;
|
|
15
|
+
private model;
|
|
16
|
+
private pollInterval;
|
|
17
|
+
private maxPollAttempts;
|
|
18
|
+
private verbose;
|
|
19
|
+
constructor(apiKey: string, model?: string, options?: {
|
|
20
|
+
pollInterval?: number;
|
|
21
|
+
maxPollAttempts?: number;
|
|
22
|
+
verbose?: boolean;
|
|
23
|
+
});
|
|
24
|
+
generateVideo(options: VideoGenerationOptions): Promise<VideoGenerationResult>;
|
|
25
|
+
private sleep;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=kling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kling.d.ts","sourceRoot":"","sources":["../../../src/core/video-providers/kling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEvF,eAAO,MAAM,uBAAuB,iDAAiD,CAAC;AACtF,eAAO,MAAM,6BAA6B,iDAAiD,CAAC;AAE5F;;;;;;;GAOG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,IAAI,SAAiB;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,OAAO,CAAU;gBAGvB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAmB,EAC1B,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;IAS5E,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAwHpF,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KlingVideoProvider = exports.DEFAULT_KLING_VIDEO_QUERY_URL = exports.DEFAULT_KLING_VIDEO_URL = void 0;
|
|
4
|
+
exports.DEFAULT_KLING_VIDEO_URL = 'https://api.klingai.com/v1/videos/text2video';
|
|
5
|
+
exports.DEFAULT_KLING_VIDEO_QUERY_URL = 'https://api.klingai.com/v1/videos/text2video';
|
|
6
|
+
/**
|
|
7
|
+
* 快手可灵视频生成 Provider (Kling)
|
|
8
|
+
*
|
|
9
|
+
* 支持模型:
|
|
10
|
+
* - kling-v1 (默认)
|
|
11
|
+
* - kling-v1-5
|
|
12
|
+
* - kling-v1-6
|
|
13
|
+
*/
|
|
14
|
+
class KlingVideoProvider {
|
|
15
|
+
constructor(apiKey, model = 'kling-v1', options) {
|
|
16
|
+
this.name = 'kling-video';
|
|
17
|
+
this.apiKey = apiKey;
|
|
18
|
+
this.model = model;
|
|
19
|
+
this.pollInterval = options?.pollInterval || 5000;
|
|
20
|
+
this.maxPollAttempts = options?.maxPollAttempts || 120;
|
|
21
|
+
this.verbose = options?.verbose || false;
|
|
22
|
+
}
|
|
23
|
+
async generateVideo(options) {
|
|
24
|
+
const { prompt, duration = 5, aspectRatio = '16:9', } = options;
|
|
25
|
+
if (this.verbose) {
|
|
26
|
+
console.log(`🎬 [可灵] 开始生成视频...`);
|
|
27
|
+
console.log(` 模型: ${this.model}`);
|
|
28
|
+
console.log(` 时长: ${duration}s`);
|
|
29
|
+
console.log(` 宽高比: ${aspectRatio}`);
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
// 1. 创建视频生成任务
|
|
33
|
+
const createResponse = await fetch(exports.DEFAULT_KLING_VIDEO_URL, {
|
|
34
|
+
method: 'POST',
|
|
35
|
+
headers: {
|
|
36
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
37
|
+
'Content-Type': 'application/json',
|
|
38
|
+
},
|
|
39
|
+
body: JSON.stringify({
|
|
40
|
+
model: this.model,
|
|
41
|
+
prompt,
|
|
42
|
+
duration: String(duration),
|
|
43
|
+
aspect_ratio: aspectRatio,
|
|
44
|
+
mode: 'std', // std 或 pro
|
|
45
|
+
}),
|
|
46
|
+
});
|
|
47
|
+
if (!createResponse.ok) {
|
|
48
|
+
const errorText = await createResponse.text();
|
|
49
|
+
throw new Error(`创建视频任务失败: ${createResponse.status} - ${errorText}`);
|
|
50
|
+
}
|
|
51
|
+
const createResult = await createResponse.json();
|
|
52
|
+
if (createResult.code !== 0) {
|
|
53
|
+
throw new Error(`创建视频任务失败: ${createResult.message}`);
|
|
54
|
+
}
|
|
55
|
+
const taskId = createResult.data?.task_id;
|
|
56
|
+
if (!taskId) {
|
|
57
|
+
throw new Error('未返回任务 ID');
|
|
58
|
+
}
|
|
59
|
+
if (this.verbose) {
|
|
60
|
+
console.log(` 任务 ID: ${taskId}`);
|
|
61
|
+
console.log(` 等待视频生成...`);
|
|
62
|
+
}
|
|
63
|
+
// 2. 轮询任务状态
|
|
64
|
+
let attempts = 0;
|
|
65
|
+
while (attempts < this.maxPollAttempts) {
|
|
66
|
+
await this.sleep(this.pollInterval);
|
|
67
|
+
attempts++;
|
|
68
|
+
const queryResponse = await fetch(`${exports.DEFAULT_KLING_VIDEO_QUERY_URL}/${taskId}`, {
|
|
69
|
+
method: 'GET',
|
|
70
|
+
headers: {
|
|
71
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
if (!queryResponse.ok) {
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const queryResult = await queryResponse.json();
|
|
78
|
+
if (this.verbose && attempts % 6 === 0) {
|
|
79
|
+
console.log(` 状态: ${queryResult.data?.task_status} (${attempts * this.pollInterval / 1000}s)`);
|
|
80
|
+
}
|
|
81
|
+
if (queryResult.data?.task_status === 'succeed') {
|
|
82
|
+
const videoUrl = queryResult.data.task_result?.videos?.[0]?.url;
|
|
83
|
+
if (!videoUrl) {
|
|
84
|
+
throw new Error('未返回视频 URL');
|
|
85
|
+
}
|
|
86
|
+
if (this.verbose) {
|
|
87
|
+
console.log(`✅ [可灵] 视频生成成功!`);
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
success: true,
|
|
91
|
+
videoUrl,
|
|
92
|
+
taskId,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (queryResult.data?.task_status === 'failed') {
|
|
96
|
+
throw new Error(`视频生成失败: ${queryResult.message || '未知错误'}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
throw new Error(`视频生成超时(等待 ${this.maxPollAttempts * this.pollInterval / 1000}s)`);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
return {
|
|
103
|
+
success: false,
|
|
104
|
+
error: error.message,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
sleep(ms) {
|
|
109
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.KlingVideoProvider = KlingVideoProvider;
|
|
113
|
+
//# sourceMappingURL=kling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kling.js","sourceRoot":"","sources":["../../../src/core/video-providers/kling.ts"],"names":[],"mappings":";;;AAEa,QAAA,uBAAuB,GAAG,8CAA8C,CAAC;AACzE,QAAA,6BAA6B,GAAG,8CAA8C,CAAC;AAE5F;;;;;;;GAOG;AACH,MAAa,kBAAkB;IAQ7B,YACE,MAAc,EACd,QAAgB,UAAU,EAC1B,OAAgF;QAVlF,SAAI,GAAG,aAAa,CAAC;QAYnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,GAAG,CAAC;QACvD,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA+B;QACjD,MAAM,EACJ,MAAM,EACN,QAAQ,GAAG,CAAC,EACZ,WAAW,GAAG,MAAM,GACrB,GAAG,OAAO,CAAC;QAEZ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC;YACH,cAAc;YACd,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,+BAAuB,EAAE;gBAC1D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;oBACxC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM;oBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;oBAC1B,YAAY,EAAE,WAAW;oBACzB,IAAI,EAAE,KAAK,EAAE,YAAY;iBAC1B,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,aAAa,cAAc,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,IAAI,EAI7C,CAAC;YAEF,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,aAAa,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;YAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC9B,CAAC;YAED,YAAY;YACZ,IAAI,QAAQ,GAAG,CAAC,CAAC;YAEjB,OAAO,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACpC,QAAQ,EAAE,CAAC;gBAEX,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,qCAA6B,IAAI,MAAM,EAAE,EAAE;oBAC9E,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE;wBACP,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;qBACzC;iBACF,CAAC,CAAC;gBAEH,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;oBACtB,SAAS;gBACX,CAAC;gBAED,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,IAAI,EAQ3C,CAAC;gBAEF,IAAI,IAAI,CAAC,OAAO,IAAI,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvC,OAAO,CAAC,GAAG,CAAC,UAAU,WAAW,CAAC,IAAI,EAAE,WAAW,KAAK,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,CAAC;gBACnG,CAAC;gBAED,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;oBAChD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;oBAEhE,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;oBAC/B,CAAC;oBAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBACjB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBAChC,CAAC;oBAED,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,QAAQ;wBACR,MAAM;qBACP,CAAC;gBACJ,CAAC;gBAED,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,KAAK,QAAQ,EAAE,CAAC;oBAC/C,MAAM,IAAI,KAAK,CAAC,WAAW,WAAW,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,CAAC,OAAO;aACrB,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;CACF;AA/ID,gDA+IC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { VideoProvider, VideoGenerationOptions, VideoGenerationResult } from './types';
|
|
2
|
+
export declare const DEFAULT_MINIMAX_VIDEO_URL = "https://api.minimax.io/v1/video_generation";
|
|
3
|
+
export declare const DEFAULT_MINIMAX_VIDEO_QUERY_URL = "https://api.minimax.io/v1/query/video_generation";
|
|
4
|
+
export declare const DEFAULT_MINIMAX_FILE_URL = "https://api.minimax.io/v1/files/retrieve";
|
|
5
|
+
/**
|
|
6
|
+
* MiniMax 视频生成 Provider (Hailuo)
|
|
7
|
+
*
|
|
8
|
+
* 支持模型:
|
|
9
|
+
* - MiniMax-Hailuo-2.3 (默认)
|
|
10
|
+
* - MiniMax-Hailuo-02
|
|
11
|
+
* - T2V-01-Director
|
|
12
|
+
* - T2V-01
|
|
13
|
+
*/
|
|
14
|
+
export declare class MiniMaxVideoProvider implements VideoProvider {
|
|
15
|
+
name: string;
|
|
16
|
+
private apiKey;
|
|
17
|
+
private model;
|
|
18
|
+
private pollInterval;
|
|
19
|
+
private maxPollAttempts;
|
|
20
|
+
private verbose;
|
|
21
|
+
constructor(apiKey: string, model?: string, options?: {
|
|
22
|
+
pollInterval?: number;
|
|
23
|
+
maxPollAttempts?: number;
|
|
24
|
+
verbose?: boolean;
|
|
25
|
+
});
|
|
26
|
+
generateVideo(options: VideoGenerationOptions): Promise<VideoGenerationResult>;
|
|
27
|
+
private getVideoUrl;
|
|
28
|
+
private sleep;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=minimax.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimax.d.ts","sourceRoot":"","sources":["../../../src/core/video-providers/minimax.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEvF,eAAO,MAAM,yBAAyB,+CAA+C,CAAC;AACtF,eAAO,MAAM,+BAA+B,qDAAqD,CAAC;AAClG,eAAO,MAAM,wBAAwB,6CAA6C,CAAC;AAEnF;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IACxD,IAAI,SAAmB;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,OAAO,CAAU;gBAGvB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAA6B,EACpC,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;IAS5E,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;YAiHtE,WAAW;IA6BzB,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MiniMaxVideoProvider = exports.DEFAULT_MINIMAX_FILE_URL = exports.DEFAULT_MINIMAX_VIDEO_QUERY_URL = exports.DEFAULT_MINIMAX_VIDEO_URL = void 0;
|
|
4
|
+
exports.DEFAULT_MINIMAX_VIDEO_URL = 'https://api.minimax.io/v1/video_generation';
|
|
5
|
+
exports.DEFAULT_MINIMAX_VIDEO_QUERY_URL = 'https://api.minimax.io/v1/query/video_generation';
|
|
6
|
+
exports.DEFAULT_MINIMAX_FILE_URL = 'https://api.minimax.io/v1/files/retrieve';
|
|
7
|
+
/**
|
|
8
|
+
* MiniMax 视频生成 Provider (Hailuo)
|
|
9
|
+
*
|
|
10
|
+
* 支持模型:
|
|
11
|
+
* - MiniMax-Hailuo-2.3 (默认)
|
|
12
|
+
* - MiniMax-Hailuo-02
|
|
13
|
+
* - T2V-01-Director
|
|
14
|
+
* - T2V-01
|
|
15
|
+
*/
|
|
16
|
+
class MiniMaxVideoProvider {
|
|
17
|
+
constructor(apiKey, model = 'MiniMax-Hailuo-2.3', options) {
|
|
18
|
+
this.name = 'minimax-video';
|
|
19
|
+
this.apiKey = apiKey;
|
|
20
|
+
this.model = model;
|
|
21
|
+
this.pollInterval = options?.pollInterval || 5000;
|
|
22
|
+
this.maxPollAttempts = options?.maxPollAttempts || 120;
|
|
23
|
+
this.verbose = options?.verbose || false;
|
|
24
|
+
}
|
|
25
|
+
async generateVideo(options) {
|
|
26
|
+
const { prompt, duration = 6, resolution = '1080P', promptOptimizer = true, } = options;
|
|
27
|
+
if (this.verbose) {
|
|
28
|
+
console.log(`🎬 [MiniMax] 开始生成视频...`);
|
|
29
|
+
console.log(` 模型: ${this.model}`);
|
|
30
|
+
console.log(` 时长: ${duration}s`);
|
|
31
|
+
console.log(` 分辨率: ${resolution}`);
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
// 1. 创建视频生成任务
|
|
35
|
+
const createResponse = await fetch(exports.DEFAULT_MINIMAX_VIDEO_URL, {
|
|
36
|
+
method: 'POST',
|
|
37
|
+
headers: {
|
|
38
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
39
|
+
'Content-Type': 'application/json',
|
|
40
|
+
},
|
|
41
|
+
body: JSON.stringify({
|
|
42
|
+
model: this.model,
|
|
43
|
+
prompt,
|
|
44
|
+
duration,
|
|
45
|
+
resolution,
|
|
46
|
+
prompt_optimizer: promptOptimizer,
|
|
47
|
+
}),
|
|
48
|
+
});
|
|
49
|
+
if (!createResponse.ok) {
|
|
50
|
+
const errorText = await createResponse.text();
|
|
51
|
+
throw new Error(`创建视频任务失败: ${createResponse.status} - ${errorText}`);
|
|
52
|
+
}
|
|
53
|
+
const createResult = await createResponse.json();
|
|
54
|
+
if (createResult.base_resp?.status_code !== 0) {
|
|
55
|
+
throw new Error(`创建视频任务失败: ${createResult.base_resp?.status_msg}`);
|
|
56
|
+
}
|
|
57
|
+
const taskId = createResult.task_id;
|
|
58
|
+
if (!taskId) {
|
|
59
|
+
throw new Error('未返回任务 ID');
|
|
60
|
+
}
|
|
61
|
+
if (this.verbose) {
|
|
62
|
+
console.log(` 任务 ID: ${taskId}`);
|
|
63
|
+
console.log(` 等待视频生成...`);
|
|
64
|
+
}
|
|
65
|
+
// 2. 轮询任务状态
|
|
66
|
+
let attempts = 0;
|
|
67
|
+
while (attempts < this.maxPollAttempts) {
|
|
68
|
+
await this.sleep(this.pollInterval);
|
|
69
|
+
attempts++;
|
|
70
|
+
const queryResponse = await fetch(`${exports.DEFAULT_MINIMAX_VIDEO_QUERY_URL}?task_id=${taskId}`, {
|
|
71
|
+
method: 'GET',
|
|
72
|
+
headers: {
|
|
73
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
if (!queryResponse.ok) {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
const queryResult = await queryResponse.json();
|
|
80
|
+
if (this.verbose && attempts % 6 === 0) {
|
|
81
|
+
console.log(` 状态: ${queryResult.status} (${attempts * this.pollInterval / 1000}s)`);
|
|
82
|
+
}
|
|
83
|
+
if (queryResult.status === 'success' && queryResult.file_id) {
|
|
84
|
+
const videoUrl = await this.getVideoUrl(queryResult.file_id);
|
|
85
|
+
if (this.verbose) {
|
|
86
|
+
console.log(`✅ [MiniMax] 视频生成成功!`);
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
success: true,
|
|
90
|
+
videoUrl,
|
|
91
|
+
taskId,
|
|
92
|
+
fileId: queryResult.file_id,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (queryResult.status === 'failed') {
|
|
96
|
+
throw new Error(`视频生成失败: ${queryResult.base_resp?.status_msg || '未知错误'}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
throw new Error(`视频生成超时(等待 ${this.maxPollAttempts * this.pollInterval / 1000}s)`);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
return {
|
|
103
|
+
success: false,
|
|
104
|
+
error: error.message,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async getVideoUrl(fileId) {
|
|
109
|
+
const response = await fetch(`${exports.DEFAULT_MINIMAX_FILE_URL}?file_id=${fileId}`, {
|
|
110
|
+
method: 'GET',
|
|
111
|
+
headers: {
|
|
112
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
if (!response.ok) {
|
|
116
|
+
throw new Error(`获取视频 URL 失败: ${response.status}`);
|
|
117
|
+
}
|
|
118
|
+
const result = await response.json();
|
|
119
|
+
if (result.base_resp?.status_code !== 0) {
|
|
120
|
+
throw new Error(`获取视频 URL 失败: ${result.base_resp?.status_msg}`);
|
|
121
|
+
}
|
|
122
|
+
const downloadUrl = result.file?.download_url;
|
|
123
|
+
if (!downloadUrl) {
|
|
124
|
+
throw new Error('未返回视频下载 URL');
|
|
125
|
+
}
|
|
126
|
+
return downloadUrl;
|
|
127
|
+
}
|
|
128
|
+
sleep(ms) {
|
|
129
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
exports.MiniMaxVideoProvider = MiniMaxVideoProvider;
|
|
133
|
+
//# sourceMappingURL=minimax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimax.js","sourceRoot":"","sources":["../../../src/core/video-providers/minimax.ts"],"names":[],"mappings":";;;AAEa,QAAA,yBAAyB,GAAG,4CAA4C,CAAC;AACzE,QAAA,+BAA+B,GAAG,kDAAkD,CAAC;AACrF,QAAA,wBAAwB,GAAG,0CAA0C,CAAC;AAEnF;;;;;;;;GAQG;AACH,MAAa,oBAAoB;IAQ/B,YACE,MAAc,EACd,QAAgB,oBAAoB,EACpC,OAAgF;QAVlF,SAAI,GAAG,eAAe,CAAC;QAYrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,GAAG,CAAC;QACvD,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA+B;QACjD,MAAM,EACJ,MAAM,EACN,QAAQ,GAAG,CAAC,EACZ,UAAU,GAAG,OAAO,EACpB,eAAe,GAAG,IAAI,GACvB,GAAG,OAAO,CAAC;QAEZ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,CAAC;YACH,cAAc;YACd,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,iCAAyB,EAAE;gBAC5D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;oBACxC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM;oBACN,QAAQ;oBACR,UAAU;oBACV,gBAAgB,EAAE,eAAe;iBAClC,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,aAAa,cAAc,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,IAAI,EAG7C,CAAC;YAEF,IAAI,YAAY,CAAC,SAAS,EAAE,WAAW,KAAK,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,aAAa,YAAY,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;YACrE,CAAC;YAED,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC;YACpC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC9B,CAAC;YAED,YAAY;YACZ,IAAI,QAAQ,GAAG,CAAC,CAAC;YAEjB,OAAO,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACpC,QAAQ,EAAE,CAAC;gBAEX,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,uCAA+B,YAAY,MAAM,EAAE,EAAE;oBACxF,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE;wBACP,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;qBACzC;iBACF,CAAC,CAAC;gBAEH,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;oBACtB,SAAS;gBACX,CAAC;gBAED,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,IAAI,EAI3C,CAAC;gBAEF,IAAI,IAAI,CAAC,OAAO,IAAI,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvC,OAAO,CAAC,GAAG,CAAC,UAAU,WAAW,CAAC,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,CAAC;gBACxF,CAAC;gBAED,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;oBAC5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;oBAE7D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBACjB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;oBACrC,CAAC;oBAED,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,QAAQ;wBACR,MAAM;wBACN,MAAM,EAAE,WAAW,CAAC,OAAO;qBAC5B,CAAC;gBACJ,CAAC;gBAED,IAAI,WAAW,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACpC,MAAM,IAAI,KAAK,CAAC,WAAW,WAAW,CAAC,SAAS,EAAE,UAAU,IAAI,MAAM,EAAE,CAAC,CAAC;gBAC5E,CAAC;YACH,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,CAAC,OAAO;aACrB,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,MAAc;QACtC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,gCAAwB,YAAY,MAAM,EAAE,EAAE;YAC5E,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;aACzC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gBAAgB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAGjC,CAAC;QAEF,IAAI,MAAM,CAAC,SAAS,EAAE,WAAW,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC;QAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;CACF;AArKD,oDAqKC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { VideoProvider, VideoGenerationOptions, VideoGenerationResult } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Runway 视频生成 Provider (Gen-4.5)
|
|
4
|
+
*
|
|
5
|
+
* 支持模型:
|
|
6
|
+
* - gen4.5 (默认)
|
|
7
|
+
* - gen4
|
|
8
|
+
* - gen3a_turbo
|
|
9
|
+
*
|
|
10
|
+
* 注意:需要安装 @runwayml/sdk
|
|
11
|
+
*/
|
|
12
|
+
export declare class RunwayVideoProvider implements VideoProvider {
|
|
13
|
+
name: string;
|
|
14
|
+
private apiKey;
|
|
15
|
+
private model;
|
|
16
|
+
private verbose;
|
|
17
|
+
constructor(apiKey: string, model?: string, options?: {
|
|
18
|
+
verbose?: boolean;
|
|
19
|
+
});
|
|
20
|
+
generateVideo(options: VideoGenerationOptions): Promise<VideoGenerationResult>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=runway.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runway.d.ts","sourceRoot":"","sources":["../../../src/core/video-providers/runway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEvF;;;;;;;;;GASG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACvD,IAAI,SAAkB;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAU;gBAGvB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAiB,EACxB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;IAO3B,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA8ErF"}
|