新增引擎: - engines/wan-api-adapter.js — 阿里百炼万相2.7视频生成(文生+图生) - engines/planar-tracker.py — OpenCV平面追踪(追踪/稳定/文字贴合/运动数据) - engines/audio-stem-splitter.js — 音频三轨分离(对白/BGM/SFX)+自动混音建议 - engines/auto-cut-director.js — 自动剪辑控制层(脚本解析→追踪→分轨→合成) - tools/test-wan-api.js — 万相API测试脚本 更新: - .env.example — 万相配置模板 - MODEL-ROUTER.hdlp — 万相状态: 待接入→已接入 铸渊 ICE-GL-ZY001 · D140 · 2026-06-23
80 lines
2.3 KiB
JavaScript
80 lines
2.3 KiB
JavaScript
/**
|
|
* 万相API测试脚本
|
|
* D140 · 铸渊 ICE-GL-ZY001
|
|
*
|
|
* 验证万相2.7文生视频API是否正常工作
|
|
* 用法: node tools/test-wan-api.js
|
|
*/
|
|
|
|
const { submitT2VTask, queryWanTask, API_KEY, WAN_T2V_SPEC } = require('../engines/wan-api-adapter');
|
|
|
|
async function main() {
|
|
console.log('=== 万相2.7 API 测试 ===\n');
|
|
|
|
// 1. 检查密钥
|
|
if (!API_KEY) {
|
|
console.error('❌ ALIYUN_BAILIAN_API_KEY 未配置');
|
|
console.error(' 请在 video-ai-system/.env 中设置');
|
|
process.exit(1);
|
|
}
|
|
console.log('✅ API Key 已配置:', API_KEY.substring(0, 15) + '...');
|
|
console.log('✅ 模型:', WAN_T2V_SPEC.model);
|
|
|
|
// 2. 提交一个简单的测试任务
|
|
const testPrompt = '一只小猫在月光下奔跑,毛发随风飘动,背景是星空和湖泊,电影级画面';
|
|
console.log('\n📝 测试提示词:', testPrompt);
|
|
console.log('⏱ 时长: 5秒 分辨率: 720P 比例: 16:9\n');
|
|
|
|
try {
|
|
const { taskId, preflight } = await submitT2VTask({
|
|
prompt: testPrompt,
|
|
duration: 5,
|
|
resolution: '720P',
|
|
ratio: '16:9',
|
|
});
|
|
|
|
console.log('\n✅ 任务提交成功!');
|
|
console.log(' Task ID:', taskId);
|
|
console.log(' 预校验:', preflight.valid ? '通过' : '失败');
|
|
|
|
// 3. 轮询查询
|
|
console.log('\n⏳ 轮询查询中...\n');
|
|
|
|
let pollCount = 0;
|
|
const maxPolls = 80;
|
|
|
|
while (pollCount < maxPolls) {
|
|
pollCount++;
|
|
await new Promise(r => setTimeout(r, 15000)); // 15秒间隔
|
|
|
|
const result = await queryWanTask(taskId);
|
|
|
|
if (result.status === 'completed') {
|
|
console.log('\n🎉 视频生成成功!');
|
|
console.log(' 视频URL:', result.videoUrl);
|
|
console.log(' 元数据:', JSON.stringify(result.videoMeta, null, 2));
|
|
process.exit(0);
|
|
}
|
|
|
|
if (result.status === 'failed') {
|
|
console.error('\n❌ 生成失败:', result.error);
|
|
console.error(' 原始响应:', JSON.stringify(result.rawResponse, null, 2).substring(0, 500));
|
|
process.exit(1);
|
|
}
|
|
|
|
// 仍在生成
|
|
const elapsed = pollCount * 15;
|
|
console.log(` [${elapsed}s] 生成中... (task: ${taskId.substring(0, 8)}...)`);
|
|
}
|
|
|
|
console.error('\n⏰ 轮询超时');
|
|
process.exit(1);
|
|
|
|
} catch (err) {
|
|
console.error('\n❌ 测试失败:', err.message);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
main();
|