测试视频复刻

This commit is contained in:
Azmat@qq.com
2026-08-27 18:27:08 +08:00
parent b3bf159e08
commit 52c5cdae1d
7 changed files with 299 additions and 106 deletions
+15 -9
View File
@@ -901,13 +901,17 @@ NO_EMBEDDED_CAPTIONS_REQUIREMENT = (
"只保留商品包装上参考图中原有的真实物理文字与标识。旁白和环境音可以保留,但不要把声音转成画面文字。"
)
# 故事板图会作为 Seedance 的参考图。导演信息应由页面从结构化脚本渲染,
# 不能烧进参考图,否则边框、时间标签和旁白文字会被视频模型误当成待保留的画面元素
STORYBOARD_VIDEO_KEYFRAME_REQUIREMENT = (
"视频关键帧硬性规则】这张图将直接作为视频生成参考图:只生成一张干净、全幅、写实的 9:16 关键画面,"
"画面必须完整呈现本段最关键的角色、商品、场景、动作和空间关系。"
"禁止拼图、多宫格、故事板边框、时间轴、机位标注、旁白文字、标题、价格贴片、字幕、UI 或任何叠加文字;"
"只保留商品包装参考图中原有的真实物理文字与标识。"
# 故事板是创作者确认镜头节奏的导演稿,因此必须由 image-2 直接生成完整排版图;
# 视频提示词会明确要求只提取其中的角色、商品、场景、动作和节奏,忽略版式文字
STORYBOARD_DIRECTOR_LAYOUT_REQUIREMENT = (
"导演故事板成图硬性要求】输出必须是一张完整、正式、可交付的电商短视频导演故事板图片,而不是无说明的拼图或单张海报。"
"整体为竖版 9:16,采用清爽专业的影视分镜排版:顶部 1 行标题区,标出“导演故事板”、本段时长和画幅;"
"主体严格按照本段脚本的秒级分镜,优先整理为 3 个连续时间段(例如 0–5s、5–10s、10–15s;若脚本时长不同则按实际时间划分)。"
"每个时间段必须包含三部分:左侧约 22% 宽的浅色信息栏,清晰写时间、景别、机位/运镜和简短动作;右侧约 78% 的写实主画面;"
"画面底部横条使用扬声器图标与“口播/旁白:”呈现该时间段对应旁白。各段按时间自上而下排列,边框、间距、对齐统一。"
"右侧画面要真实展现该秒级分镜的不同关键动作,人物脸、服装、商品外观、配色和场景连续一致;商品用法必须正确,包装真实文字和 Logo 不得改造。"
"故事板中的中文标注必须工整、简洁、可读,只写脚本已有的时间、机位、动作与旁白,不虚构价格、功效、活动或品牌信息。"
"禁止只给一张静态人物图、禁止无文字的四格拼图、禁止把三段画面重复成同一姿势。"
)
@@ -2720,7 +2724,7 @@ def build_storyboard_frame_prompt(project, segment, extra_prompt: str = "") -> s
)
cleaned = "\n".join(line for line in rendered.split("\n") if line.strip())
return _apply_storyboard_output_ratio(
f"{cleaned}\n{STORYBOARD_VIDEO_KEYFRAME_REQUIREMENT}", project
f"{cleaned}\n{STORYBOARD_DIRECTOR_LAYOUT_REQUIREMENT}", project
)
@@ -2748,6 +2752,8 @@ def build_video_segment_prompt(project, video_segment, scene, refs, user_prompt:
default = (
"{设定}{分镜}【脚本】{脚本}\n"
"严格按照脚本里的秒级分镜切换景别和动作,商品用法必须真实,不要诡异姿势或错误容器。"
"如果参考图是带时间、机位、旁白标注的导演故事板,只提取其中的角色、商品、场景、动作和时间顺序;"
"不要把边框、标题、时间码、扬声器图标或任何故事板文字生成进视频。"
"电商带货短视频,商品露出清晰,节奏有转化感。不要字幕,不要背景音乐,但是要有音效,逼真的音效。"
)
rendered = render_prompt(
@@ -2933,7 +2939,7 @@ def build_storyboard_frame_prompt_refs(project, segment, refs: list[dict], extra
)
cleaned = "\n".join(line for line in rendered.split("\n") if line.strip())
return _apply_storyboard_output_ratio(
f"{cleaned}\n{STORYBOARD_VIDEO_KEYFRAME_REQUIREMENT}", project
f"{cleaned}\n{STORYBOARD_DIRECTOR_LAYOUT_REQUIREMENT}", project
)