高级功能

连续场景生成

利用首尾帧控制功能,创建无缝衔接的连续视频序列

核心原理

Doubao-Seedance-1.5-pro 模型支持返回生成视频的尾帧图片。通过将前一段视频的尾帧作为下一段视频的首帧,可以实现多段视频的无缝拼接,生成长篇幅的连续故事。

技术要点:

  • • 设置 returnLastFrame: true 获取尾帧
  • • 将 lastFrameUrl 作为下一段的 firstFrameUrl
  • • 在提示词中描述从首帧到尾帧的过渡方式
  • • 控制每段视频的时长,确保节奏一致

操作步骤

1
生成第一段视频

使用首帧生成第一段视频,并开启"返回尾帧"选项

2
获取尾帧图片

从第一段视频的响应中获取 lastFrameUrl

3
作为下一段首帧

将尾帧作为第二段视频的首帧,继续生成

4
重复过程

重复上述步骤,生成长篇幅的连续故事

代码示例
使用 coze-coding-dev-sdk 实现连续场景生成
import { VideoGenerationClient, Config } from 'coze-coding-dev-sdk';

const config = new Config();
const client = new VideoGenerationClient(config);

const scenePrompts = [
  '一个女孩在森林中行走,阳光透过树叶洒下',
  '女孩发现了一座隐藏的瀑布,镜头缓慢推进',
  '女孩坐在瀑布旁,享受宁静的时光'
];

const videoUrls: string[] = [];
let lastFrameUrl: string | null = null;

for (const prompt of scenePrompts) {
  const contentItems = [
    { type: 'text', text: prompt }
  ];

  if (lastFrameUrl) {
    contentItems.unshift({
      type: 'image_url',
      image_url: { url: lastFrameUrl },
      role: 'first_frame'
    });
  }

  const response = await client.videoGeneration(contentItems, {
    model: 'doubao-seedance-1-5-pro-251215',
    resolution: '720p',
    ratio: '16:9',
    duration: 5,
    returnLastFrame: true,  // 关键:返回尾帧
  });

  if (response.videoUrl) {
    videoUrls.push(response.videoUrl);
    lastFrameUrl = response.lastFrameUrl;  // 保存尾帧
  }
}

console.log('连续视频生成完成:', videoUrls);

应用场景

故事板可视化
将多个关键帧连接成连续的场景,快速验证故事创意
时间序列展示
展示一个场景在不同时间的变化,如一天的光照变化
产品演示视频
展示产品从不同角度的变化,或使用前后的对比
连续广告创作
创建连续的广告场景,讲述一个完整的故事
最佳实践
获得最佳连续视频效果的技巧

保持风格一致

确保所有场景的描述风格保持一致,避免突兀的风格变化

控制视频时长

使用相同的时长设置,确保视频节奏一致

描述过渡方式

在提示词中详细描述场景之间的过渡方式,如"平滑过渡"、"缓慢推进"

添加上下文

在每段描述中包含前一段的上下文,帮助模型理解场景的连续性

使用音频增强

开启音频生成,让视频更加生动和专业

开始创建连续场景
在视频生成页面尝试首尾帧生成功能