Skip to content

渲染与导出

从故事板和资产生成最终视频。

渲染管线

┌─────────────────────────────────────────────────────────────────────┐
│                        渲染管线                                       │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ┌─────────┐    ┌─────────────┐    ┌──────────┐    ┌──────────┐ │
│  │ 故事板  │───▶│  图像生成   │───▶│  口型同步 │───▶│   合成   │ │
│  └─────────┘    └─────────────┘    └──────────┘    └──────────┘ │
│       │               │                 │               │         │
│       │               │                 │               ▼         │
│       │               │                 │         ┌──────────┐   │
│       │               ▼                 ▼         │   导出   │   │
│       │         ┌─────────────┐    ┌──────────┐   └──────────┘   │
│       │         │    角色     │    │   音频    │                  │
│       │         │    图片     │    │   TTS    │                  │
│       │         └─────────────┘    └──────────┘                  │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

渲染步骤

1. 场景图像生成

为每个故事板帧生成图像:

typescript
import { imageGenerationService } from '@/core/services';

const result = await imageGenerationService.generateImage(
  '侦探在昏暗办公室里的戏剧性场景,黑色电影风格',
  {
    model: 'seedream-5.0',  // 或 'flux', 'dalle-3'
    resolution: '16:9',
    quality: 'high',
  }
);

支持的模型

模型提供商适用于
seedream-5.0MiniMax动画、插画
fluxReplicate逼真、写实
dalle-3OpenAI创意、艺术
sdxlStability稳定、可靠

2. 角色图像生成

生成角色肖像:

typescript
import { imageGenerationService } from '@/core/services';

const result = await imageGenerationService.generateImage(
  '年轻亚裔男性侦探的肖像,表情严肃',
  {
    model: 'seedream-5.0',
    characterId: 'detective_01',  // 用于一致性
  }
);

3. 口型同步动画

将角色唇部运动与音频同步:

typescript
import { lipSyncService } from '@/core/services';

const result = await lipSyncService.syncLip(
  characterImageUrl,   // 角色肖像
  audioUrl,           // TTS 或录音
  {
    model: 'wav2lip',  // 或 'facerender'
    quality: 'high',
  }
);

4. 音频生成(TTS)

生成语音音频:

typescript
import { ttsService } from '@/core/services';

const result = await ttsService.synthesize({
  text: '您好,欢迎观看节目。',
  config: {
    provider: 'edge',  // 或 'elevenlabs', 'alibaba'
    voice: 'zh-CN-XiaoxiaoNeural',
    speed: 1.0,
    pitch: 1.0,
  },
});

视频合成

组装最终视频:

typescript
import { videoCompositorService } from '@/core/services';

const result = await videoCompositorService.composeVideo(
  scenes,  // 场景对象数组
  {
    format: 'mp4',
    resolution: '1080p',
    fps: 30,
    transitions: ['fade', 'dissolve'],
  }
);

导出选项

格式

格式扩展名编解码器适用于
MP4.mp4H.264通用兼容性
WebM.webmVP9网络、透明
MOV.movProRes后期制作

质量预设

预设分辨率码率文件大小(1分钟)
720p1280×7205 Mbps~35 MB
1080p1920×108010 Mbps~70 MB
4K3840×216035 Mbps~250 MB

导出设置

typescript
interface ExportOptions {
  format: 'mp4' | 'webm' | 'mov';
  resolution: '720p' | '1080p' | '4K';
  fps: 24 | 30 | 60;
  quality: 'low' | 'medium' | 'high';
  includeSubtitles: boolean;
  includeAudio: boolean;
}

漫画管线

对于漫画/动漫风格输出:

typescript
import { mangaPipelineService } from '@/core/services';

const result = await mangaPipelineService.generateFromNovel(
  novelContent,
  scenes.map(scene => ({
    id: scene.id,
    description: scene.description,
    imagePrompt: scene.imagePrompt,
    dialogue: scene.dialogue,
    character: scene.character,
  })),
  {
    image: { model: 'seedream-5.0' },
    video: { model: 'seedance-2.0' },
    lipSync: { model: 'wav2lip' },
  }
);

进度跟踪

typescript
mangaPipelineService.onProgress((progress) => {
  console.log(`阶段:${progress.stage}`);
  console.log(`总体进度:${progress.overallProgress}%`);
  console.log(`阶段进度:${progress.stageProgress}%`);
  console.log(`场景:${progress.currentSceneIndex + 1}/${progress.totalScenes}`);
});

下一步

MIT License © 2026 Agions