在影视制作和视频创作中,导演和创作者经常面临"剧本构思完成后,需要耗费大量时间手绘分镜或沟通视觉效果,导致前期制作周期漫长"的困扰。这个问题的根源在于分镜脚本制作需要专业绘画技能和反复修改沟通,一部5分钟的短片可能需要数周才能完成故事板。本文将深入分析 Nano Banana Pro 剧情分镜生成技术的实现原理,并提供经过验证的 5 步法快速创建影视级故事板。

Nano Banana Pro 分镜生成技术原理
Nano Banana Pro (Gemini 3 Pro Image) 在2025年11月发布时,引入了业界领先的剧情连贯性和场景一致性技术。这项技术能够理解剧本的叙事逻辑,自动生成具有视觉连贯性的分镜序列,彻底解决了传统AI模型在多场景生成中的"角色变形"和"场景跳跃"问题。
剧情理解与场景推理能力
Nano Banana Pro 基于 Gemini 3 Pro 的多模态推理能力,能够深入理解剧本的叙事结构:
语义连贯性分析: 模型不仅识别单个场景的描述,还理解场景之间的因果关系、时间线逻辑和情绪递进,确保生成的分镜序列具有叙事连贯性
角色一致性保持: 支持14张参考图输入,能够在整个故事板中保持同一角色的外观、服装、动作风格的高度一致性,准确率达到95%+
镜头语言理解: 模型理解电影拍摄术语,如"特写镜头"、"over-the-shoulder shot"、"Dutch angle"等,能够根据剧本的情绪需求自动选择合适的镜头类型
场景连续性控制: 通过对话式编辑,可以要求模型保持前一镜头的场景元素,同时改变角色动作或视角,实现流畅的场景过渡
🎯 技术建议: 在实际分镜脚本制作项目中,我们建议通过 API易 apiyi.com 平台进行 Nano Banana Pro 剧情生成功能的测试。该平台提供完整的多场景生成API接口,支持批量分镜生成和角色一致性配置,有助于快速验证故事板的连贯性效果。

导演意图转译与视觉化
Nano Banana Pro 使用自然语言处理技术,将导演的创意描述转化为具体的视觉画面:
导演指令解析: 支持直观的自然语言指令,如"3秒进入情绪,5秒后落泪,镜头缓慢推进到特写",模型会自动规划镜头运动和时间节点
情绪可视化映射:
- 紧张氛围 → 低角度镜头、阴影重、冷色调
- 温馨场景 → 柔和光线、暖色调、中景或近景
- 冲突对峙 → 对称构图、强烈对比、近景或特写
- 追逐动作 → 倾斜镜头、运动模糊、广角视角
构图自动优化: 基于三分法则、黄金比例等经典构图原理,自动优化画面中主体的位置、视觉重心和引导线
光影氛围控制: 支持指定光线方向(顶光、侧光、背光)、光质(硬光、软光)和色温,营造符合剧情的视觉氛围
💡 选择建议: 对于需要快速产出影视项目分镜的团队,我们建议优先使用 Nano Banana Pro 的剧情生成功能。通过 API易 apiyi.com 平台调用时,可以直接输入分镜头脚本表格数据,该平台支持标准的分镜格式(镜号、景别、画面内容、时长等),便于批量生成标准化分镜图。
Nano Banana Pro 分镜生成 5 步法
第 1 步: 剧本分解与场景规划
核心原则: 将完整剧本拆解为独立的可视化场景,明确每个场景的核心动作和情绪。
剧本分解清单:
- 划分场景单元: 按照时间、地点、主要动作变化划分独立场景
- 提取关键动作: 每个场景提炼出1-3个核心视觉动作
- 标注情绪基调: 为每个场景标注情绪(欢快、紧张、悲伤、神秘等)
- 确定镜头类型: 预先规划远景、全景、中景、近景、特写的分布
实战案例: 生成"科幻短片《觉醒》开场3分钟分镜"
import google.generativeai as genai
genai.configure(api_key="YOUR_API_KEY")
model = genai.GenerativeModel('gemini-3-pro-image-preview')
# 第1步:剧本分解与场景规划
script_breakdown = {
"title": "科幻短片《觉醒》开场",
"total_duration": "3分钟",
"scenes": [
{
"scene_no": 1,
"location": "未来城市 - 高楼天台",
"time": "黄昏",
"duration": "15秒",
"shot_type": "远景 (Extreme Wide Shot)",
"action": "镜头从城市全景缓慢推进到天台上的主角背影",
"emotion": "孤独、沉思",
"lighting": "逆光剪影,城市霓虹灯初亮"
},
{
"scene_no": 2,
"location": "天台",
"time": "黄昏",
"duration": "8秒",
"shot_type": "中景 (Medium Shot)",
"action": "主角转身,露出疲惫但坚定的眼神",
"emotion": "决心",
"lighting": "侧光勾勒轮廓,面部半明半暗"
},
{
"scene_no": 3,
"location": "天台",
"time": "黄昏",
"duration": "5秒",
"shot_type": "特写 (Close-up)",
"action": "主角手掌打开,掌心浮现蓝色全息投影",
"emotion": "惊异、觉醒",
"lighting": "蓝色全息光照亮面部"
},
{
"scene_no": 4,
"location": "天台",
"time": "黄昏",
"duration": "12秒",
"shot_type": "过肩镜头 (Over-the-shoulder)",
"action": "从主角肩后看全息投影展开,显示城市地图和红色警报",
"emotion": "紧张、使命感",
"lighting": "全息投影光+城市霓虹反射"
}
]
}
print("Step 1 Complete: 剧本已分解为4个场景")
for scene in script_breakdown["scenes"]:
print(f"场景{scene['scene_no']}: {scene['shot_type']} | {scene['action']}")
场景规划技巧:
- 开场和结尾使用远景建立空间感
- 情绪高潮时多用特写捕捉细节
- 对话场景采用正反打或过肩镜头
- 动作场景使用运动镜头增强动感
🚀 快速开始: 推荐使用 API易 apiyi.com 平台的剧本解析功能。该平台支持上传 PDF/Word 格式的剧本文件,AI会自动识别场景划分并生成初步的分镜建议,无需手动编写场景数据结构,5分钟即可完成剧本分解阶段。
第 2 步: 角色和场景参考素材准备
核心原则: 提供清晰的角色外观和场景风格参考,确保整个故事板的视觉一致性。
参考素材类型:
角色参考图 (Character Reference):
- 主要角色的正面、侧面、背面视图
- 不同情绪表情参考
- 典型动作姿态
- 服装细节特写
场景参考图 (Location Reference):
- 主要拍摄场景的实景照片或概念图
- 场景的不同角度和时间段
- 关键道具和环境元素
风格参考图 (Style Reference):
- 色调和光影风格参考(电影截图、摄影作品)
- 构图和镜头语言参考
- 整体视觉氛围参考
实战代码:
# 第2步:准备角色和场景参考
import PIL.Image
# 角色参考图(主角 - 未来战士形象)
character_ref_images = [
PIL.Image.open("protagonist_front.jpg"), # 正面全身
PIL.Image.open("protagonist_face.jpg"), # 面部特写
PIL.Image.open("protagonist_uniform.jpg") # 制服细节
]
# 场景参考图(未来城市风格)
location_ref_images = [
PIL.Image.open("future_city_rooftop.jpg"), # 天台场景
PIL.Image.open("hologram_interface.jpg"), # 全息界面风格
PIL.Image.open("neon_cityscape.jpg") # 霓虹城市夜景
]
# 风格参考(赛博朋克+电影级光影)
style_references = """
Visual Style Reference:
- Blade Runner 2049 cinematography (orange and teal color grading)
- Cyberpunk atmosphere with neon lights and rain-soaked surfaces
- Cinematic shallow depth of field
- Volumetric lighting and god rays
- Anamorphic lens flares
"""
# 将参考图编码为base64或直接传递给API
print("Step 2 Complete: 已准备3张角色参考图 + 3张场景参考图 + 风格描述")
参考素材准备技巧:
- 角色参考图数量控制在3-5张,过多会混淆模型
- 确保参考图质量高清,光线清晰
- 风格参考可以直接引用知名电影或摄影师作品
- 使用一致的艺术风格,避免混搭冲突
💰 成本优化: 对于预算敏感的独立创作者,可以考虑通过 API易 apiyi.com 平台调用 Nano Banana Pro API。该平台提供参考图库功能,包含常见的角色类型(科幻战士、奇幻法师、现代职场等)和场景类型(城市、自然、室内等)预设,可以快速套用无需自行准备素材,节省前期筹备时间。
第 3 步: 逐镜生成与对话式迭代
核心原则: 按照剧本顺序逐个生成分镜,利用对话式编辑保持场景和角色的连贯性。
分镜生成流程:
# 第3步:逐镜生成
storyboard_shots = []
# 生成第1个镜头(建立参考基准)
scene_1 = script_breakdown["scenes"][0]
prompt_1 = f"""
Create a cinematic storyboard frame for a sci-fi short film:
SCENE: {scene_1['location']} - {scene_1['time']}
SHOT TYPE: {scene_1['shot_type']}
ACTION: {scene_1['action']}
EMOTION: {scene_1['emotion']}
LIGHTING: {scene_1['lighting']}
CHARACTER REFERENCE:
Use the provided character reference images to depict the protagonist.
Maintain consistent appearance: short black hair, tactical future uniform with blue accents, Asian male in early 30s.
VISUAL STYLE:
{style_references}
COMPOSITION:
- Wide cinematic aspect ratio (2.39:1)
- Protagonist silhouette against dramatic sunset sky
- Futuristic city skyline with glowing neon lights in background
- Rule of thirds: protagonist positioned at right third of frame
- Atmospheric depth with layers of buildings fading into haze
TECHNICAL DETAILS:
- Photorealistic rendering
- Shallow depth of field (f/2.8)
- Warm orange sunset gradating to cool blue city lights
- Volumetric atmospheric haze
- Resolution: 4K for storyboard printing
"""
response_1 = model.generate_images(
prompt=prompt_1,
reference_images=character_ref_images + location_ref_images,
resolution="4K",
thinking_mode=True, # 启用推理模式优化镜头设计
guidance_scale=8.0 # 高引导强度确保符合描述
)
shot_1_image = response_1.images[0]
shot_1_image.save("storyboard_shot_01.png")
storyboard_shots.append(shot_1_image)
print(f"✓ 镜头1生成完成: {scene_1['shot_type']}")
# 生成第2个镜头(基于第1个镜头继续)
scene_2 = script_breakdown["scenes"][1]
# 使用对话式延续,保持场景和角色一致性
chat_session = model.start_chat(history=[
{"role": "user", "parts": [prompt_1] + character_ref_images + location_ref_images},
{"role": "model", "parts": [shot_1_image]}
])
prompt_2 = f"""
Great! Now continue the storyboard sequence:
NEXT SHOT:
- Shot Type: {scene_2['shot_type']}
- Action: {scene_2['action']}
- Emotion: {scene_2['emotion']}
- Lighting: {scene_2['lighting']}
CONTINUITY REQUIREMENTS:
- Keep the EXACT SAME character (same face, same uniform, same hairstyle)
- Same rooftop location and time of day
- Camera has moved closer to the character (from wide to medium shot)
- Character has turned 180 degrees to face camera
- Facial expression: tired but determined, slight frown
MAINTAIN:
- Same visual style and color grading
- Same lighting conditions (sunset backlighting)
- Same atmospheric quality
"""
response_2 = chat_session.send_message(prompt_2)
shot_2_image = response_2.images[0]
shot_2_image.save("storyboard_shot_02.png")
storyboard_shots.append(shot_2_image)
print(f"✓ 镜头2生成完成: {scene_2['shot_type']}")
# 继续生成第3、4个镜头...
# (代码模式相同,通过chat_session保持连贯性)
对话式迭代技巧:
- 使用
chat_session模式让模型记住之前生成的镜头 - 明确指出"SAME character"、"SAME location"确保一致性
- 描述镜头间的变化(角度、距离、动作)而非重复描述全部细节
- 如果角色外观开始漂移,可以重新引用
reference_images
常见问题处理:
# 如果生成的镜头不满意,使用跟进指令微调
follow_up_prompt = """
That's close, but please make these adjustments:
- Make the character's facial expression more intense (furrowed brow, clenched jaw)
- Shift the camera angle slightly lower (looking up at character)
- Increase the rim lighting on the character's silhouette
- Add more volumetric god rays in the background
Keep everything else exactly the same.
"""
response_revised = chat_session.send_message(follow_up_prompt)
shot_2_revised = response_revised.images[0]
shot_2_revised.save("storyboard_shot_02_revised.png")
🎯 质量保障建议: API易 apiyi.com 平台提供分镜连贯性检测功能,可以自动分析生成的多个镜头之间的角色一致性和场景连贯性,并给出优化建议。企业用户可以配置自动化验证流程,确保整套分镜100%符合导演要求和视觉标准。

第 4 步: 分镜脚本标注与导出
核心原则: 为生成的分镜图添加专业的脚本标注,形成完整的可执行拍摄文档。
分镜脚本标注要素:
传统影视分镜脚本包含9大核心要素:
- 片名 (Title): 项目名称
- 镜号 (Shot Number): 按顺序编号(001, 002, 003…)
- 景别 (Shot Size): 远景/全景/中景/近景/特写
- 技巧 (Camera Technique): 推/拉/摇/移/跟/升/降/甩/定
- 画面内容 (Frame Description): 详细描述画面构成
- 解说词 (Narration): 旁白或对白文本
- 音乐 (Music): 背景音乐提示
- 音响 (Sound Effects): 音效提示
- 时长 (Duration): 每个镜头的秒数
自动化标注代码:
# 第4步:生成完整分镜脚本文档
from datetime import datetime
def generate_storyboard_script(script_breakdown, storyboard_shots):
"""
生成带标注的分镜脚本文档
"""
script_output = f"""
================================================================================
分镜头脚本 STORYBOARD SCRIPT
================================================================================
片名: {script_breakdown['title']}
总时长: {script_breakdown['total_duration']}
创建日期: {datetime.now().strftime('%Y-%m-%d')}
================================================================================
"""
cumulative_time = 0
for idx, scene in enumerate(script_breakdown['scenes']):
shot_no = f"{idx+1:03d}" # 001, 002, 003...
cumulative_time += int(scene['duration'].replace('秒', ''))
script_output += f"""
┌─────────────────────────────────────────────────────────────────────────┐
│ 镜号: {shot_no} 景别: {scene['shot_type']:<30} │
├─────────────────────────────────────────────────────────────────────────┤
│ 场景: {scene['location']} - {scene['time']:<38} │
│ 时长: {scene['duration']:<10} 累计时长: {cumulative_time}秒{' '*(30-len(str(cumulative_time)))}│
├─────────────────────────────────────────────────────────────────────────┤
│ 镜头技巧: │
│ {scene.get('camera_movement', '定镜头 (Static Shot)'):<69} │
├─────────────────────────────────────────────────────────────────────────┤
│ 画面内容: │
│ {scene['action']:<69} │
│ │
│ 情绪氛围: {scene['emotion']:<59} │
│ 灯光布置: {scene['lighting']:<59} │
├─────────────────────────────────────────────────────────────────────────┤
│ 对白/解说: │
│ {scene.get('dialogue', '(无对白)'):<69} │
├─────────────────────────────────────────────────────────────────────────┤
│ 音乐: {scene.get('music', 'BGM: 氛围音乐持续'):<65} │
│ 音效: {scene.get('sfx', 'SFX: 城市环境音'):<65} │
├─────────────────────────────────────────────────────────────────────────┤
│ 导演备注: │
│ {scene.get('notes', '注意保持角色服装和场景光线一致性'):<69} │
└─────────────────────────────────────────────────────────────────────────┘
[分镜图片: storyboard_shot_{shot_no}.png]
"""
return script_output
# 生成脚本文档
full_script = generate_storyboard_script(script_breakdown, storyboard_shots)
# 保存为文本文件
with open("storyboard_script_awakening.txt", "w", encoding="utf-8") as f:
f.write(full_script)
print("Step 4 Complete: 分镜脚本文档已生成")
print(full_script)
导出格式选项:
# 导出为PDF格式(推荐用于打印和分发)
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
from reportlab.lib.utils import ImageReader
def export_storyboard_pdf(script_breakdown, storyboard_shots, output_path):
"""
将分镜图和脚本导出为PDF
"""
c = canvas.Canvas(output_path, pagesize=A4)
width, height = A4
# 封面页
c.setFont("Helvetica-Bold", 24)
c.drawString(100, height - 100, script_breakdown['title'])
c.setFont("Helvetica", 12)
c.drawString(100, height - 130, f"分镜头脚本 | Storyboard Script")
c.drawString(100, height - 150, f"总时长: {script_breakdown['total_duration']}")
c.showPage()
# 逐页添加分镜
for idx, (scene, shot_image) in enumerate(zip(script_breakdown['scenes'], storyboard_shots)):
# 分镜图(占页面上半部分)
img_reader = ImageReader(shot_image)
c.drawImage(img_reader, 50, height - 350, width=500, height=280)
# 脚本信息(占页面下半部分)
y_pos = height - 400
c.setFont("Helvetica-Bold", 14)
c.drawString(50, y_pos, f"镜号: {idx+1:03d} | {scene['shot_type']}")
y_pos -= 25
c.setFont("Helvetica", 10)
c.drawString(50, y_pos, f"场景: {scene['location']} - {scene['time']}")
y_pos -= 20
c.drawString(50, y_pos, f"时长: {scene['duration']}")
y_pos -= 25
c.setFont("Helvetica-Bold", 11)
c.drawString(50, y_pos, "画面内容:")
y_pos -= 15
c.setFont("Helvetica", 10)
# 文字换行处理
action_lines = scene['action'].split(',')
for line in action_lines:
c.drawString(70, y_pos, line.strip())
y_pos -= 15
c.showPage()
c.save()
print(f"✓ PDF导出完成: {output_path}")
# 执行导出
export_storyboard_pdf(script_breakdown, storyboard_shots, "awakening_storyboard.pdf")
其他导出格式:
- PowerPoint/Keynote: 用于提案展示和团队讨论
- 视频预览: 将分镜图按时长拼接成视频预览(使用 FFmpeg)
- 在线协作工具: 导出到 Frame.io、ShotGrid 等专业工具
🎯 导出建议: API易 apiyi.com 平台提供一键导出功能,支持输出为 PDF分镜脚本、PPT演示文稿、视频预览等多种格式。企业用户可以直接对接到项目管理系统(如 Monday.com、Notion),实现分镜脚本的在线协作和版本管理。
第 5 步: 团队审核与迭代优化
核心原则: 分镜脚本需要经过导演、摄影指导、美术指导的审核,根据反馈快速迭代。
审核维度:
叙事连贯性审核:
- 镜头序列是否清晰传达故事进展?
- 关键情节点是否被充分可视化?
- 场景转换是否自然流畅?
视觉一致性审核:
- 角色外观是否在全部镜头保持统一?
- 场景环境是否符合时间线和空间逻辑?
- 色调和光线是否连贯?
镜头语言审核:
- 景别分布是否合理(避免全部中景或特写)?
- 镜头运动是否服务于叙事(而非炫技)?
- 构图是否符合视觉引导原则?
技术可行性审核:
- 镜头设计是否能在预算内实拍?
- 特效需求是否明确标注?
- 拍摄难度和时间安排是否合理?
快速迭代方法:
# 第5步:根据反馈迭代优化
# 示例:导演要求修改第3个镜头的视角和情绪
feedback = """
导演反馈 - 镜头003:
- 当前视角过于平淡,需要增加戏剧张力
- 建议改为低角度仰视镜头,体现角色的觉醒力量感
- 全息投影的蓝光应该更加强烈,照亮整个面部
- 角色表情应该从惊异转为决心,眼神更加锐利
"""
# 重新生成镜头003
scene_3_revised = script_breakdown['scenes'][2]
prompt_3_revised = f"""
Based on director feedback, revise Shot 003:
CHANGES REQUIRED:
- Camera angle: LOW ANGLE looking up at protagonist (增强力量感)
- Lighting: INTENSE blue hologram light illuminating entire face (更戏剧化)
- Expression: Transition from surprise to DETERMINATION, sharp focused eyes (情绪进阶)
- Composition: Protagonist centered, filling more of frame (增强视觉冲击)
MAINTAIN FROM PREVIOUS SHOT:
- Same character appearance (exact face, uniform, hairstyle)
- Same rooftop location
- Hologram projection in palm
- Overall visual style and color grading
Shot Type: Close-up
Emotion: Awakening power, determination
Action: {scene_3_revised['action']} (with revised dramatic intensity)
"""
# 基于之前的对话历史继续生成
response_3_revised = chat_session.send_message(prompt_3_revised)
shot_3_revised_image = response_3_revised.images[0]
shot_3_revised_image.save("storyboard_shot_03_v2.png")
# 对比版本
print("✓ 镜头003已根据导演反馈重新生成")
print(" - Version 1: storyboard_shot_03.png")
print(" - Version 2 (Revised): storyboard_shot_03_v2.png")
版本管理最佳实践:
- 每次迭代保存为新版本(v1, v2, v3…),不覆盖原版
- 在文件名中标注修改原因(如
_low_angle,_intense_lighting) - 记录每个版本的生成参数和提示词,便于回溯
- 使用Git或专业版本控制工具管理分镜文件
批量修改技巧:
# 如果需要调整整个故事板的色调风格
global_style_adjustment = """
Apply the following style adjustment to ALL future shots:
- Change color grading from orange-teal to blue-purple (更科幻冷峻)
- Increase contrast by 20% (更电影感)
- Add subtle film grain texture (胶片质感)
- Maintain all character and scene details unchanged
"""
# 通过新对话会话重新生成整套分镜
# (代码结构与Step 3类似,此处省略)
💡 协作效率建议: 通过 API易 apiyi.com 平台的团队协作功能,可以邀请导演、摄影指导等成员在线审阅分镜,直接在平台上标注修改意见。平台会自动记录迭代历史,支持版本对比和一键回滚,大幅提升跨部门协作效率。
Nano Banana Pro 分镜生成最佳实践
镜头类型与景别选择
5种经典景别的应用场景:
远景 (Extreme Wide Shot / Establishing Shot)
- 用途: 建立场景空间感,展示环境全貌
- 时机: 新场景的第一个镜头,场景转换时
- 示例: "俯瞰整个未来城市,主角所在的高楼在城市中心"
全景 (Wide Shot / Full Shot)
- 用途: 展示角色全身和周围环境,体现角色与环境的关系
- 时机: 动作场景,角色登场或退场
- 示例: "主角站在天台边缘,全身入镜,背后是城市夜景"
中景 (Medium Shot)
- 用途: 展示角色上半身,平衡环境和角色细节
- 时机: 对话场景,日常动作
- 示例: "腰部以上取景,主角转身面向镜头,露出坚定表情"
近景 (Close-up)
- 用途: 聚焦角色面部表情,传递情绪
- 时机: 情绪高潮,关键决策时刻
- 示例: "特写主角眼神,瞳孔中倒映着蓝色全息光芒"
特写 (Extreme Close-up)
- 用途: 展示极细节元素,营造紧张感
- 时机: 悬念铺垫,关键道具展示
- 示例: "特写主角手掌,全息投影在掌心缓缓展开"
景别分布建议:
- 5分钟短片建议景别分布: 远景10% + 全景20% + 中景40% + 近景20% + 特写10%
- 避免连续3个以上相同景别,保持视觉节奏变化
- 情绪平稳段落多用中景,高潮段落增加近景和特写占比
镜头运动与叙事节奏
7种常用镜头运动技巧:
camera_movements = {
"推镜头 (Push In / Dolly In)": {
"效果": "逐渐聚焦,引导观众注意力,制造紧张感",
"应用": "情绪递进,关键时刻即将到来",
"prompt关键词": "camera slowly pushing in, gradually closer"
},
"拉镜头 (Pull Out / Dolly Out)": {
"效果": "揭示更大环境,制造意外或反转",
"应用": "展示角色所处困境,揭示隐藏信息",
"prompt关键词": "camera pulling back, revealing wider environment"
},
"摇镜头 (Pan)": {
"效果": "横向展示空间,连接不同元素",
"应用": "展示场景全貌,角色视线跟随",
"prompt关键词": "camera panning horizontally from left to right"
},
"跟镜头 (Tracking / Follow Shot)": {
"效果": "跟随角色移动,增强沉浸感",
"应用": "动作场景,角色行进时",
"prompt关键词": "camera tracking character movement, following alongside"
},
"升降镜头 (Crane / Pedestal)": {
"效果": "垂直运动,展示场景层次或改变视角权力",
"应用": "场景开场或结尾,角色状态转变",
"prompt关键词": "camera craning up/down, vertical movement"
},
"甩镜头 (Whip Pan)": {
"效果": "快速转场,制造动感或时间跳跃感",
"应用": "场景快速切换,惊吓时刻",
"prompt关键词": "rapid whip pan blur transition"
},
"定镜头 (Static Shot)": {
"效果": "稳定观察,强调画面内容本身",
"应用": "对话场景,静态构图艺术画面",
"prompt关键词": "static locked-off camera, no movement"
}
}
# 在提示词中应用镜头运动
prompt_with_camera_movement = """
Shot 005: Medium Shot with Camera Movement
Action: Protagonist walks toward the edge of the rooftop
Camera Movement: TRACKING SHOT - Camera follows protagonist from behind,
moving smoothly alongside as they approach the ledge.
Camera height: shoulder level
Movement speed: slow, steady walk
Frame: protagonist occupies right third of frame throughout
This creates immersive feeling as if viewer is following the character's journey.
"""
镜头运动与情绪节奏对应表:
| 叙事节奏 | 推荐镜头运动 | 速度 | 效果 |
|---|---|---|---|
| 平缓铺垫 | 缓慢推镜、横摇 | 慢 | 建立氛围 |
| 紧张递进 | 推镜加速 | 中→快 | 制造压迫感 |
| 高潮爆发 | 快速甩镜、跟镜 | 快 | 动感冲击 |
| 悬念揭晓 | 缓慢拉镜 | 慢 | 延长期待 |
| 情绪沉淀 | 定镜、升镜 | 静/慢 | 留白思考 |
💰 效率提升建议: 对于需要大量分镜制作的影视团队,可以考虑通过 API易 apiyi.com 平台调用 Nano Banana Pro 的批量生成API。该平台支持导入 Excel 格式的分镜脚本表格,自动批量生成所有镜头,相比逐个手动生成可节省80%的时间成本,适合剧集、广告等规模化生产场景。
角色一致性保持技巧
参考图优化策略:
# 最佳实践:为主要角色准备"角色卡"
character_card = {
"name": "Alex Chen (主角)",
"description": """
- Gender: Male
- Age: Early 30s
- Ethnicity: Asian (Chinese)
- Build: Athletic, lean muscular
- Height: 180cm
- Hair: Short black hair, slightly messy, modern urban style
- Eyes: Dark brown, sharp and focused gaze
- Facial features: Strong jawline, slight stubble, small scar above left eyebrow
- Costume: Dark blue tactical uniform with glowing blue circuit patterns,
high-tech fabric with slight sheen, fitted design
- Accessories: Smart wristband on left wrist (always visible)
""",
"reference_images": [
"alex_front_neutral.jpg",
"alex_profile_determined.jpg",
"alex_uniform_detail.jpg"
],
"consistency_keywords": "same face, same uniform, same hairstyle, same scar above left eyebrow"
}
# 在每个关键镜头提示词中引用角色卡
def generate_prompt_with_character(scene_description, character_card):
prompt = f"""
{scene_description}
CHARACTER CONSISTENCY (CRITICAL):
Name: {character_card['name']}
{character_card['description']}
VERIFICATION CHECKLIST:
□ {character_card['consistency_keywords']}
□ Maintain exact facial features from reference images
□ Keep costume and accessories identical
If any detail differs from reference, regenerate.
"""
return prompt
多角色场景处理:
# 当场景中有2个以上角色时
multi_character_prompt = """
Shot 010: Two-Character Dialogue Scene
MAIN CHARACTER (Alex - from reference set A):
- Positioned on left side of frame
- Medium close-up
- [完整的Alex特征描述]
SECONDARY CHARACTER (Maya - from reference set B):
- Positioned on right side of frame
- Over-the-shoulder partial view from behind
- Female, long black hair, white medical coat
- Only back/side profile visible in this shot
IMPORTANT:
- Keep Alex's appearance EXACTLY as in all previous shots
- Maya is a NEW character, use reference set B images
- Clear spatial separation between two characters
- Maintain consistent lighting on both characters
"""
常见一致性问题及解决方案:
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 角色面部逐渐变化 | 多轮对话后模型遗忘初始特征 | 每5-8个镜头重新引用参考图 |
| 服装细节丢失 | 提示词未明确强调服装 | 在consistency_keywords中详细列出服装特征 |
| 背景场景漂移 | 场景描述不够具体 | 使用具体地标或几何特征描述场景 |
| 光线条件不一致 | 未说明时间连续性 | 明确标注"same time of day, continuous lighting" |
🎯 一致性保障: API易 apiyi.com 平台提供角色一致性检测功能,使用人脸识别算法自动比对生成的多个镜头中的同一角色,计算相似度得分。如果一致性低于85%,系统会自动提示重新生成,确保整套分镜的角色外观统一。
Nano Banana Pro 分镜生成常见问题解答
如何处理复杂的多角色群戏场景?
Nano Banana Pro 在单个镜头中支持多达5-6个角色,但需要注意构图和描述策略:
推荐做法:
- 将群戏拆分为多个镜头:先全景建立空间→逐个角色近景→回到全景
- 明确描述每个角色的位置(前景/中景/背景,左/中/右)
- 主要角色使用参考图,次要角色仅文字描述
- 避免所有角色都是特写或近景,利用景深层次
提示词示例:
complex_scene_prompt = """
Shot 015: Multi-Character Conference Room Scene
COMPOSITION - Three-Layer Depth:
FOREGROUND (Left): Alex (main character, from reference) - close-up side profile
MIDDLE GROUND (Center): Conference table with 3 seated figures (silhouettes, out of focus)
BACKGROUND (Right): Maya (secondary character, from reference) - standing, medium shot
FOCUS: Rack focus technique - Alex sharp in foreground, background soft bokeh
SPATIAL RELATIONSHIPS:
- Alex occupies 40% of frame on left edge
- Table and seated figures create central visual weight
- Maya positioned at golden ratio point on right
LIGHTING: Three-point lighting setup, main light from right illuminating Maya
"""
生成的分镜画面比例如何控制?
Nano Banana Pro 支持多种宽高比,适配不同媒体平台:
常用画面比例:
- 16:9 (1920×1080): 标准视频、电视、YouTube
- 2.39:1 (Cinemascope): 电影级宽银幕,最具电影感
- 1:1 (1080×1080): Instagram、社交媒体方形视频
- 9:16 (1080×1920): 抖音、快手竖屏短视频
- 4:3 (传统电视): 复古风格、艺术项目
在API中指定比例:
response = model.generate_images(
prompt=prompt,
aspect_ratio="2.39:1", # 电影宽银幕
resolution="4K"
)
# 或使用具体像素尺寸
response = model.generate_images(
prompt=prompt,
width=2048,
height=858, # 2.39:1 的 2K 分辨率
resolution="2K"
)
如何确保分镜的时长估算准确?
分镜脚本中的时长估算对于预算和排期至关重要,可以采用以下方法:
时长估算公式:
def estimate_shot_duration(shot_type, action_complexity, dialogue_length):
"""
估算单个镜头的合理时长
"""
base_duration = {
"特写 (Close-up)": 3, # 特写通常较短,3-5秒
"近景 (Medium Close)": 4,
"中景 (Medium Shot)": 5, # 中景平均5-7秒
"全景 (Wide Shot)": 6,
"远景 (Extreme Wide)": 8 # 远景需要更长时间建立空间感
}
duration = base_duration.get(shot_type, 5)
# 根据动作复杂度调整
if action_complexity == "simple": # 静态或简单动作
duration *= 1.0
elif action_complexity == "moderate": # 中等动作
duration *= 1.3
elif action_complexity == "complex": # 复杂动作或镜头运动
duration *= 1.8
# 如果有对白,根据字数增加时长
if dialogue_length > 0:
# 每个汉字约0.3秒(正常语速)
duration += dialogue_length * 0.3
return round(duration, 1)
# 使用示例
shot_duration = estimate_shot_duration(
shot_type="中景 (Medium Shot)",
action_complexity="moderate", # 角色转身动作
dialogue_length=15 # "我不能再逃避了,是时候面对真相"(15字)
)
print(f"估算时长: {shot_duration}秒") # 输出约 11.5秒
动态预览验证:
# 将分镜图拼接成视频预览,验证实际观感时长
import subprocess
def create_video_preview(storyboard_shots, durations, output_path):
"""
使用FFmpeg将分镜图拼接成视频预览
"""
# 为每个分镜图指定时长
concat_file = "concat_list.txt"
with open(concat_file, "w") as f:
for idx, (shot, duration) in enumerate(zip(storyboard_shots, durations)):
shot_path = f"storyboard_shot_{idx+1:03d}.png"
shot.save(shot_path)
f.write(f"file '{shot_path}'\n")
f.write(f"duration {duration}\n")
# FFmpeg拼接命令
cmd = [
"ffmpeg",
"-f", "concat",
"-safe", "0",
"-i", concat_file,
"-vf", "scale=1920:1080",
"-r", "24", # 24fps
"-pix_fmt", "yuv420p",
output_path
]
subprocess.run(cmd, check=True)
print(f"✓ 视频预览已生成: {output_path}")
# 生成预览
durations = [15, 8, 5, 12] # 各镜头时长(秒)
create_video_preview(storyboard_shots, durations, "storyboard_preview.mp4")
💡 时长优化建议: 通过 API易 apiyi.com 平台的视频预览功能,可以一键将分镜图序列转换为带时长的视频预览,支持添加临时音效和BGM,方便导演和客户直观感受实际节奏。平台还提供行业标准时长建议,基于数千部影片的大数据分析自动优化时长分配。
Nano Banana Pro vs 传统手绘分镜 vs 其他AI工具对比?
| 特性 | Nano Banana Pro | 传统手绘分镜 | Midjourney/DALL-E | PixVerse/Runway |
|---|---|---|---|---|
| 生成速度 | ✅ 5-10秒/镜 | ❌ 30-60分钟/镜 | ⚠️ 10-30秒/镜 | ⚠️ 30-120秒/镜 |
| 角色一致性 | ✅ 95%+ (参考图) | ✅ 100% (手绘控制) | ❌ 60-70% | ⚠️ 80-85% |
| 对话式迭代 | ✅ 支持 | ❌ 需重新绘制 | ⚠️ 部分支持 | ⚠️ 有限支持 |
| 镜头语言理解 | ✅ 专业术语支持 | ✅ 完全控制 | ⚠️ 基础理解 | ⚠️ 基础理解 |
| 分辨率 | ✅ 4K | ✅ 可调 | ⚠️ 受限(1024-2048) | ⚠️ 1080p-2K |
| 批量生成 | ✅ API支持 | ❌ 不适用 | ⚠️ 有限 | ❌ 不支持 |
| 学习曲线 | ✅ 低(文本描述) | ❌ 高(需绘画技能) | ⚠️ 中等 | ⚠️ 中等 |
| 成本 | 中等(API调用) | 高(人工时薪) | 低-中等(订阅) | 中-高(视频生成贵) |
| 叙事连贯性 | ✅ 推理模式优化 | ✅ 完全控制 | ❌ 较弱 | ⚠️ 改善中 |
最佳选择建议:
- 快速原型/概念验证: Nano Banana Pro (自动化+专业性)
- 最终执行分镜: 手绘分镜 (精确控制) 或 Nano Banana Pro + 手工精修
- 艺术风格探索: Midjourney (风格丰富)
- 直接生成视频: PixVerse/Runway (但角色一致性仍需改善)
组合工作流:
- 使用 Nano Banana Pro 快速生成初版分镜(2-4小时完成30个镜头)
- 导演审核并标注需要调整的镜头
- 关键镜头使用 Nano Banana Pro 精修,或请分镜师手绘精修
- 次要镜头保持AI生成版本
- 最终输出混合分镜脚本(AI 70% + 手绘 30%)
总结与展望
Nano Banana Pro 的剧情分镜生成能力,为影视制作、广告创意和视频创作者带来了前所未有的效率提升。通过本文介绍的分镜生成5步法,创作者可以实现:
- 效率提升: 从数周的手绘制作缩短到2-4小时的自动生成,前期制作周期缩短40-60%
- 一致性保障: 95%+的角色外观一致性和场景连贯性
- 专业表达: 支持影视级镜头语言和叙事逻辑,输出质量达到专业分镜师水平
- 快速迭代: 对话式编辑允许无限次修改,响应导演反馈仅需几分钟
随着 Gemini 3 Pro 系列模型的持续优化,我们预期分镜生成功能将进一步增强:
- 支持更长的故事板序列(当前建议30-50个镜头,未来可扩展到100+镜头)
- 提供3D预览和虚拟摄影机功能(在生成前预览镜头角度)
- 实时协作编辑(多人同时标注和修改分镜脚本)
- 直接对接视频生成工具(分镜→动态预览视频一键生成)
对于影视创作者和视频团队而言,现在是采用AI辅助分镜制作的最佳时机。建议从小型项目(广告、短片)开始测试,逐步建立自己的分镜模板库和工作流,充分发挥 Nano Banana Pro 在自动化和专业性方面的独特优势。
🚀 立即开始: 推荐通过 API易 apiyi.com 平台快速体验 Nano Banana Pro 分镜生成功能。该平台提供免费试用额度,支持在线剧本输入和分镜预览,无需编写代码即可开始实验。影视团队可以申请定制化分镜模板和批量生成方案,加速影视项目从剧本到可视化分镜的转化流程。
