HiAPI
博客

使用指南

在 HiAPI API 上使用 flux-3-max/image-to-video 构建短视频

面向开发者的工作流:首帧选择、运动提示词、多镜头剪辑与原生音频

2026年11月3日
封面图:深松绿底色上三块被斜线剖分为平涂色面的几何棱柱,以浅鼠尾草绿与雾绿构成,构图克制留白。
使用 HiAPI API 上的 flux-3-max/image-to-video 生成的 4 镜头短视频序列——首帧选择、运动提示词与多镜头拼接,全部在一个工作流中完成。

为什么图生视频适合短视频制作

短视频的成败取决于第一秒。这使静态图像成为你手上最有价值的资产,也使图生视频成为这类工作的自然原语。你从一张已经掌控的画面开始——产品图、人物肖像、风格化背景——然后要求模型将其延展为运动。

与文生视频相比,后者每一次渲染都像重新掷骰子。你描述一个场景,得到某个结果,然后花许多轮迭代试图找回脑海中设想的构图。而在图生视频中,构图、色调和主体身份在生成第一帧运动之前就已锁定。你的提示词只需回答一个问题:从这里开始,什么会改变?

这种分工恰好对应短视频内容的实际生产方式。一部短片很少是一次连续生成——它由若干节拍组成:钩子、演示、反应、收尾卡。每个节拍都可以是一次独立的图生视频调用,由它自己的静态图作为种子,这意味着你可以重新生成某个节拍而不触动其他节拍。

这一原语也契合交付格式。短视频很短,因此每个请求范围明确、推理成本低,输出可直接放入编辑时间线。下游步骤——裁剪、转场、字幕、音频混合——都留在你现有的管线中,而非塞进一次庞大的生成调用里。

图生视频不适用的情况:当你确实需要在一个无法拍摄的环境中实现单一连续的镜头运动,或者镜头没有稳定的锚定帧。在这些情况下,文本驱动的方式更诚实。但对于大多数短视频工作,一个锚定的首帧加上运动提示词,既更可预测,也更容易迭代。

选择真正能动的首帧

图生视频中最常见的失败,是一张漂亮的源图却让模型无从动画化。平坦、均匀布光、构图紧密的画面是一张好照片,却是一个糟糕的种子。在把任何内容送给模型之前,请从运动潜力而非图像质量的角度评估这张静态图。

主体分离

模型需要知道什么该动、什么该保持不动。主体边缘清晰、与背景区分明显,就能给它一个明确的答案。当主体融入背景——色调相近、剪影后方纹理繁杂、大量重叠——运动往往会在整个画面上涂抹开,而不是跟随你的主体。

运动空间

运动需要空间。如果主体从边缘到边缘填满画面,平移或推近就无处可去,肢体运动会发生裁切。留有一点头部空间、可见地面或一侧开放背景的画面,能给模型执行镜头运动和身体动作的余地,而不会在边缘产生伪影。

单一的明确焦点

短视频在手机上观看,第一秒常常处于静音状态。具有单一主导焦点的静态图能瞬间被读懂,并给运动一个主体。拥挤的画面迫使模型分散注意力,得到的片段会显得躁动却并不动感。

景深线索

具备前景、中景和背景的画面——即使定义松散——也能支撑视差。在分层画面上做轻微的镜头运动,能产生令人信服的纵深感。平坦画面则产生幻灯片效果。

实用检查清单

  • 是否有一个清晰且可信地能运动的主体?
  • 背景是否足够分明,能保持不动?
  • 预期运动方向上是否有空白空间?
  • 画面在缩小后是否仍然可读?
  • 这个场景两秒钟的片段会好看吗?

如果一张画面在其中两项或更多项上不合格,请重拍或换一个种子,而不是试图用提示词来修复。提示词工程无法挽救一个没有运动空间的构图。

为 flux-3-max/image-to-video 编写运动提示词

大多数薄弱的提示词都在描述场景。图像已经做了这件事。运动提示词应该描述随时间发生的变化——什么在动、朝哪个方向、以什么速度,以及在此过程中镜头如何表现。

以动作为先,而非主体

与其写“一个穿红夹克的女人站在街上”,不如写“当她将肩膀转向镜头时,夹克面料随之移动,然后静止下来”。第一种版本只是复述静态图;第二种告诉模型该动画化什么。点名运动元素、运动方向和终点。

明确指定镜头行为

镜头语言是运动提示词中杠杆最高的部分,因为它控制整个画面。有用的模式:

  • 固定镜头,主体运动——最安全、最可控的选项。
  • 缓慢推近——增加紧迫感,适合钩子。
  • 横向跟拍——即使主体静止,也能读作运动。
  • 手持漂移——增加能量,但可能引入需要裁剪的晃动。

如果你不指定,模型会替你选择,你就会更频繁地重掷。

在片段内安排运动节奏

描述弧线,而非仅仅是状态。“起初静止,转身在约三分之一处开始,到结尾时画面归于平静”给模型一个时间线。读起来像单一瞬间的提示词,往往产生要么没有运动,要么是匀速漂移,显得机械。

保持简短且具物理感

两到四句话通常足够。优先使用物理性、可观察的动词——转、抬、漂、定、展——而非“感觉”“传达”“戏剧性”这类解释性词汇。关于情绪的形容词属于静态图,而不属于运动描述。

每个镜头一个运动想法

如果你发现自己描述了三个同时发生的动作,那就是三个镜头。拆分开来能得到更干净的渲染,并在某个节拍失败时只重掷它。

组织 API 请求

每次生成都是对 HiAPI API 的一次请求,每个请求都应足够自描述,让你几个月后还能重建它。把请求载荷当作记录,而非草稿纸。

请求的结构

一次 flux-3-max/image-to-video 调用在概念上有三个块:源图、提示词和输出规格。大致如下伪代码:

request = {
    "model": "flux-3-max/image-to-video",
    "input": {
        "image": image_url_or_reference,
        "prompt": motion_prompt,
    },
    "params": {
        "duration": duration_seconds,
        "aspect_ratio": aspect_ratio,
        "seed": seed,
    },
}

图像是你的锚点——传入稳定、带版本的引用,而不是会被覆盖的本地文件。提示词就是上一节中的运动描述。其余都是你应该刻意固定的参数。

固定你想复现的内容

  • 种子。在打磨提示词时固定它,让输出的变化来自提示词而非采样噪声。想要多样性时再释放它。
  • 时长。短视频偏好短片,让一个序列中各镜头的时长保持一致,时间线的计算就会简单。
  • 宽高比。在项目层面一次性选定,所有静态图和输出都从它派生。

用镜头清单包裹请求

把每次生成作为一行存进一个小清单——镜头 id、图像引用、提示词、参数、输出引用。这一单一产物让你可以确定性地重跑任何镜头、对提示词修订做差异比较、追溯哪个输入产生了哪个片段。这就是迭代与猜测之间的区别。

异步处理响应

视频生成不是瞬时的。围绕提交-轮询来设计客户端,把任务 id 与清单行放在一起,并立即将输出写入持久存储,让下游组装永远不依赖某个请求处于活动状态。

组装多镜头序列

短视频是一个序列,构建它的最干净方式是把每个镜头当作一次独立生成,然后在时间线层组装。抵制要求一次长连续渲染的诱惑。

先规划节拍

在生成任何内容之前,先把序列写成镜头清单。对于一段十五秒的片段,三到五个镜头通常合适:一个赢得第一秒的钩子、一两个承载想法的节拍,以及一个落地的收尾画面。每个条目配一张静态图、一个运动提示词和一个时长。

保持跨镜头连续性

独立生成会产生漂移。用三个习惯来保护连续性:

  • 共享视觉词汇。使用同一次拍摄或同一风格参考的静态图,让色调和光照在各镜头间匹配。
  • 一致的宽高比和时长。统一的片段长度让剪切和转场变得简单。
  • 提示词一致性。在意图感受为同一场景的镜头间复用相同的镜头语言描述。

为剪辑而设计

镜头在相接处不必完美匹配——它们需要干净地剪切。在每个片段的头部和尾部多生成一点,这样你就有可供裁剪的余量。在运动中结束一个镜头并切到新角度,远比试图让每一帧都匹配更能掩盖细微的连续性错误。

在模型之外组装

拼接、转场和字幕叠加在你的编辑层完成——脚本驱动的管线或时间线工具。模型的工作是产出好片段;时间线的工作是把它们变成视频。让镜头清单与剪辑保持同步,这样重新生成的片段可以直接放入而无需重建序列。

处理原生音频

flux-3-max/image-to-video 在生成画面的同时生成音频。这很方便,但它改变了你规划序列的方式:音频是生成的一部分,而非后期制作的补充。

为声音而提示,而非仅为运动

如果某个镜头应有特定的声音特征——环境街道噪声、机械嗡鸣、面料摩擦——就在提示词里说明。运动描述往往隐含声音,明确点名有助于模型将音频事件与视觉节拍对齐。如果某个镜头应该安静,也要说明;静音是有效的设计选择,也是有用的对比。

围绕音频事件规划剪切

逐镜头生成的音频在各镜头之间不会连续。这使每次剪切都成为潜在的音频跳变。两种可行策略:

  • 在运动处剪切。把转场放在高运动时刻,让声音的不连续读作冲击而非错误。
  • 切到底轨。在序列下铺一条连续的音乐或环境音轨,让生成的音频作为质感居于其下,从而掩盖逐镜头的不连续。

尽早决定保留什么

并非每段生成的音频都可用。片段一返回就立即评估,在清单中标记音频是保留、压低还是替换,并让剪辑遵循该决定。在最终组装时才发现一半片段需要替换音频,代价高昂。

留出余量混音

将生成的音频保持在适度音量,并在其上方为旁白或音乐预留空间。原生音频往往密度较高;在混音中留出余量,能保留日后添加解说而无需重新渲染画面的选项。

迭代与成本纪律

打磨是视频项目悄悄变贵的地方。让质量和花费都可预测的纪律很简单:只重跑发生变化的部分。

一次只改一个变量

当某个镜头不奏效时,判断问题出在画面还是提示词。先修画面——它评估起来更便宜,且约束下游一切。画面正确后,在固定种子下迭代提示词,这样你能将差异归因于提示词文本。同时改变图像、提示词和参数,不会告诉你哪个改动起了作用。

用清单作为差异工具

因为每个请求都记录了其输入和参数,重跑就变成机械操作:选出提示词发生变化的行,提交它们,其余不动。一个五镜头序列中修改了一个提示词,应该只花费一次生成,而非五次。

廉价预览,刻意定稿

用较低保真度或较短时长做探索性渲染,以确定构图和节奏,然后在镜头清单锁定后渲染最终版本。探索性渲染用于决策;最终渲染用于交付。混淆两者是预算蒸发的方式。

为整个序列做版本管理

锁定序列时给镜头清单打标签。如果后续更改破坏了连续性,你可以回到已知良好的版本,而不是凭记忆重建提示词。带版本的参数是“可重跑的管线”与“一堆一次性渲染”之间的区别。

按镜头而非按分钟预算

因为每个镜头都是独立请求,成本随镜头数量和修订数量扩展——这两者你都直接控制。按镜头清单规划,让生成花费在你决定增加节拍的那一刻就可见,而不是在月底才看到。当前定价见 HiAPI 定价面板。

从一张静态图和一个运动提示词开始,针对 HiAPI API 上的 flux-3-max/image-to-video,让镜头清单从那里生长。

立即开始构建持久 AI 产物

获取 API 密钥,通过一个基于任务(task)的 API 调用图像、视频和音频模型。

阅读 API 文档