视频生成这个领域,过去一年大家都在卷画质、卷时长、卷一致性,但真正做过商用项目的人心里都清楚,最让人肉疼的从来不是生成质量本身,而是"抽卡"成本。你写一段提示词,点下生成,等了半分钟,出来一个画面崩坏、动作扭曲的废片,钱照扣,时间照耗。一条15秒的可用素材,背后可能是七八次失败尝试堆出来的。火山引擎这次推出的Draft模式,本质上就是把这个"先付费后验货"的逻辑给掀了——先让你用低成本甚至接近零成本的方式把构图、运镜、节奏跑通,确认方向没问题了,再花正式额度去出高清成片。这个思路听起来简单,但它对整个视频生产工作流的改变是结构性的。
我自己在几个短视频批量生产的项目里深度用过这套东西,从最初的怀疑到后来把它当成默认流程,中间踩了不少坑,也总结出一些文档里不会写的经验。这篇文章就把Draft模式的底层逻辑、实际接入方式、参数调优、成本测算,以及那些容易翻车的地方,一次性讲透。不管你是刚接触视频生成API的开发者,还是已经在用Seedance做商用内容的团队,应该都能从里面找到能直接落地的东西。
1. Draft模式到底解决了视频生成里的哪个死结
1.1 传统视频生成的成本结构:为什么"抽卡"这么贵
要理解Draft模式的价值,得先搞清楚传统视频生成的钱到底花在哪了。视频生成模型的计算量跟图像不是一个量级,它需要在时间维度上保持帧与帧之间的连贯性,每一帧都要做注意力计算,还要处理运动一致性、光影连续性、物体恒常性这些问题。模型越大、分辨率越高、时长越长,算力消耗是指数级往上走的。
这就导致一个很现实的问题:你没办法像图像生成那样"随便跑几张看看"。图像生成一张1024×1024的图,成本可能就几分钱,你跑二十张挑一张也不心疼。但视频不一样,一条5秒的1080P视频,算力成本可能是图像的几十倍甚至上百倍。如果你要试五种不同的运镜方案,每种跑三次,那就是十五次全价生成,成本直接起飞。
更麻烦的是,视频生成的"废片率"天然就比图像高。因为多了时间维度,出问题的概率点也成倍增加:可能第一帧构图完美,第三秒人物手部突然变形;可能整体氛围对了,但镜头运动方向跟你想要的完全相反;可能主体没问题,背景却出现了诡异的闪烁。这些问题在低分辨率预览阶段其实就能看出来,但你被迫用全价高清生成去发现它们。
我做过一个粗略统计,在一个电商产品短视频项目里,如果直接用1080P全价生成,平均每条可用素材需要生成6.8次,废片率超过85%。这意味着你花的钱里,有超过八成是打水漂的。这个数字在创意类内容里更夸张,因为创意方向的不确定性更大,试错次数更多。
1.2 Draft模式的本质:把"确认方向"和"出成片"拆成两步
Draft模式的核心思路其实非常朴素:把视频生成拆成"预览确认"和"正式输出"两个阶段。第一阶段用极低的成本快速生成一个低分辨率、可能带水印或者时长略短的预览版本,让你确认构图、运镜、主体动作、整体节奏是否符合预期。确认没问题之后,再用这个预览作为参考,去生成正式的1080P高清版本。
这个逻辑跟影视工业里的"故事板"和"预演"是一个道理。拍电影不会直接开机拍正片,先画故事板,再做动态预演,导演和摄影指导确认调度没问题了,才正式布光拍摄。Draft模式就是把这套工业流程搬到了AI视频生成里。
从技术实现角度看,Draft模式之所以能大幅降低成本,是因为它在几个维度上做了缩减:分辨率降低意味着每帧的像素计算量减少;可能采用了更少的去噪步数,牺牲一些细节换取速度;在时间维度上可能也做了采样优化。这些缩减让单次生成的成本降到正式生成的几分之一甚至更低,但保留了足够的结构信息让你判断方向对不对。
火山引擎把这套机制做进了Seedance的API里,通过一个参数就能切换Draft和正式模式,这个设计对开发者非常友好。你不需要维护两套模型或者两套调用逻辑,同一个接口,改个参数就行。
1.3 什么场景下Draft模式的价值最大
不是所有场景都值得用Draft模式。如果你只是偶尔生成一两条视频,试错成本本来就不高,直接用正式模式可能更省事。但以下几类场景,Draft模式带来的收益是数量级的:
批量内容生产:比如电商平台的商品短视频、信息流广告素材、社交媒体日更内容。这类场景的特点是量大、模板化程度高、但对单条质量的要求相对可控。用Draft模式先把一批内容的构图和节奏跑通,确认后再批量出高清,能省下大量无效成本。
创意探索阶段:品牌TVC、创意短片这类项目,前期需要大量尝试不同的视觉方向和叙事节奏。这个阶段用Draft模式快速迭代,一天能试几十个方向,确认后再集中资源出精品。
参数调优和提示词工程:你在调试一套提示词模板的时候,需要反复微调关键词、权重、负面提示词。这个过程中用Draft模式快速验证效果,找到最优组合后再出正式版本,效率提升非常明显。
多版本对比:同一个脚本需要出多个版本给客户选择,或者做A/B测试。用Draft模式先出多个低成本的预览版本,让决策者先筛选,选定后再出高清,避免为每个版本都付全价。
提示:Draft模式生成的预览版本不要直接用于最终交付,它的分辨率和细节程度达不到商用标准。它的定位就是"决策辅助工具",帮你确认方向,而不是替代正式生成。
2. Seedance API接入Draft模式的完整实操路径
2.1 接入前的环境准备与账号配置
在开始调API之前,有几件基础工作要做扎实,不然后面会反复卡壳。
首先是账号和权限。火山引擎的视频生成服务需要在控制台开通对应的服务,并且创建API Key。这里有个容易忽略的点:API Key的权限范围要确认清楚,有些Key只开了图像生成的权限,调视频接口会直接返回401。我见过不少人拿着一个Key到处试,结果一直报"incorrect api key provided",其实不是Key错了,是权限没开对。
其次是配额和计费方式。视频生成通常是按生成时长或者按次计费,Draft模式和正式模式的计费标准不一样。建议先在控制台确认清楚两种模式各自的单价,以及是否有免费额度可以用于测试。有些账号新开通会有一定的试用额度,拿这个额度先把Draft模式的流程跑通,确认没问题再充钱正式用。
然后是SDK的选择。火山引擎提供了多种语言的SDK,Python和Java的文档相对最全。如果你是用Python做快速验证,直接pip安装官方SDK就行。如果是要集成到已有的后端服务里,建议先看一下SDK的依赖情况,避免跟现有环境冲突。
# Python环境准备 pip install volcengine-python-sdk # 确认安装成功 python -c "import volcengine; print(volcengine.__version__)"网络方面,确保你的服务器或者本地环境能正常访问火山引擎的API端点。如果是内网环境,需要配置好出口规则。这个不用多说,但确实是新手最容易卡住的地方。
2.2 核心API参数拆解:Draft模式怎么开
Seedance的视频生成接口里,控制Draft模式的核心参数通常是一个模式标识字段。不同版本的API字段名可能略有差异,但逻辑是一致的:你需要在请求体里明确指定使用Draft模式还是正式模式。
下面是一个典型的请求结构,我用Python SDK的方式展示:
import volcengine from volcengine.visual.VisualService import VisualService service = VisualService() service.set_ak("你的AccessKey") service.set_sk("你的SecretKey") params = { "req_key": "seedance_video_generation", "prompt": "一个穿着红色连衣裙的女孩在樱花树下旋转,阳光透过花瓣洒落,慢镜头,电影质感", "mode": "draft", # 关键参数:draft 或 formal "resolution": "720p", # Draft模式下建议用较低分辨率 "duration": 5, "fps": 24, "seed": -1, # -1表示随机种子 "negative_prompt": "模糊, 变形, 多余手指, 画面闪烁" } response = service.video_generation(params) print(response)这里有几个参数值得展开说:
mode字段:这是切换Draft和正式模式的关键。有些API版本可能用的是draft_mode布尔值,或者quality字段传preview/final。具体字段名以你接入时的API文档为准,但逻辑是一样的。
resolution:Draft模式下建议用720P甚至更低。虽然Draft模式本身可能已经做了降分辨率处理,但你显式指定一个较低的分辨率可以进一步降低成本。正式生成时再切到1080P。
duration:Draft模式下可以考虑先用较短的时长(比如3秒)验证核心动作,确认后再用完整时长出正式版。不过要注意,有些模型对时长有最小限制,太短可能影响运动连贯性。
seed:这个参数很关键。Draft模式确认了一个满意的结果后,你可以把当时的seed值记下来,正式生成时用同一个seed,这样能最大程度保证正式版本和预览版本的一致性。如果seed是随机的,正式生成可能会跑出完全不同的结果,那就白预览了。
negative_prompt:负面提示词在Draft阶段就要调好。很多人只在正式生成时才认真写负面提示词,结果预览看着还行,正式版出来一堆问题。负面提示词应该跟正面提示词一样,在Draft阶段就反复打磨。
2.3 从Draft到正式的完整工作流代码示例
光看单个请求不够直观,我把一个完整的工作流串起来,从提交Draft任务、轮询结果、人工确认、到提交正式生成,整个链路走一遍。
import time import json from volcengine.visual.VisualService import VisualService class SeedanceWorkflow: def __init__(self, ak, sk): self.service = VisualService() self.service.set_ak(ak) self.service.set_sk(sk) def submit_draft(self, prompt, negative_prompt="", duration=5, seed=-1): """提交Draft模式生成任务""" params = { "req_key": "seedance_video_generation", "prompt": prompt, "negative_prompt": negative_prompt, "mode": "draft", "resolution": "720p", "duration": duration, "fps": 24, "seed": seed } resp = self.service.video_generation(params) return resp.get("data", {}).get("task_id") def poll_task(self, task_id, interval=5, max_wait=300): """轮询任务状态直到完成""" elapsed = 0 while elapsed < max_wait: result = self.service.query_task({"task_id": task_id}) status = result.get("data", {}).get("status") if status == "done": return result["data"] elif status == "failed": raise Exception(f"任务失败: {result}") time.sleep(interval) elapsed += interval raise TimeoutError("任务超时") def submit_formal(self, prompt, negative_prompt="", duration=5, seed=None): """提交正式模式生成任务""" params = { "req_key": "seedance_video_generation", "prompt": prompt, "negative_prompt": negative_prompt, "mode": "formal", "resolution": "1080p", "duration": duration, "fps": 24, "seed": seed # 使用Draft阶段确认的seed } resp = self.service.video_generation(params) return resp.get("data", {}).get("task_id") # 使用示例 workflow = SeedanceWorkflow("your_ak", "your_sk") prompt = "一只橘猫从沙发上跳下来,慢动作,阳光从窗户照进来,尘埃在光束中漂浮" # 第一步:Draft预览 draft_task = workflow.submit_draft(prompt, negative_prompt="模糊, 变形") draft_result = workflow.poll_task(draft_task) print(f"Draft预览地址: {draft_result['video_url']}") print(f"使用的seed: {draft_result.get('seed')}") # 第二步:人工确认(这里假设确认通过) confirmed_seed = draft_result.get("seed") # 第三步:正式生成 formal_task = workflow.submit_formal(prompt, negative_prompt="模糊, 变形", seed=confirmed_seed) formal_result = workflow.poll_task(formal_task) print(f"正式视频地址: {formal_result['video_url']}")这段代码里有个细节值得注意:poll_task的轮询间隔我设的是5秒。视频生成通常需要几十秒到几分钟,轮询太频繁没必要,还可能触发限流。5到10秒是比较合理的间隔。另外要设置最大等待时间,避免任务卡死导致程序无限循环。
2.4 结果确认环节:人工判断还是自动筛选
Draft模式跑通之后,下一个问题是怎么判断预览结果是否合格。这里有两种思路:
人工确认:最直接的方式,把预览视频给到运营或者创意人员看,确认方向没问题再出正式版。适合创意类项目,因为很多视觉感受很难用程序量化。
自动筛选:如果你做的是批量内容生产,每条都人工看效率太低。可以设计一些自动化的质量检测规则,比如检测画面是否出现大面积模糊、主体是否完整、运动是否连贯等。简单的做法是抽帧做清晰度检测,复杂一点可以用视觉模型做质量打分。
我自己的做法是混合模式:先用自动规则过滤掉明显崩坏的(比如黑屏、严重模糊、主体缺失),剩下的再人工快速过一遍。这样能把人工审核量降低70%以上。
注意:Draft预览的分辨率较低,有些细节问题在预览阶段看不出来。比如轻微的纹理错误、小面积的光影不连续,可能在720P预览里不明显,但1080P正式版里会很扎眼。所以正式生成后还是要做一次质量检查,不能完全依赖Draft阶段的判断。
3. 成本测算:Draft模式到底能省多少钱
3.1 单条视频的成本对比模型
要算清楚Draft模式省了多少钱,得先建立一个成本模型。假设正式模式生成一条5秒1080P视频的成本是C,Draft模式生成一条预览的成本是C的十分之一(这个比例因平台而异,这里取一个保守估计)。
在传统流程下,假设平均需要生成N次才能得到一条可用素材,那么总成本是N×C。在Draft模式下,你先用Draft模式生成M次预览,确认方向后,再用正式模式生成1次(或者少数几次)。总成本是M×0.1C + 1×C。
关键变量是M和N的关系。如果Draft模式的预览足够准确地反映正式生成的效果,那么M应该约等于N,因为你需要试同样多次才能找到对的方向。但Draft模式的单次成本只有十分之一,所以试错成本大幅降低。
举个具体的数字:假设N=7(平均7次出一條可用),C=1元。
传统流程:7×1 = 7元
Draft流程:7×0.1 + 1×1 = 1.7元
节省比例:(7-1.7)/7 ≈ 75.7%
如果Draft模式的成功率更高(因为你可以快速试更多次,更容易找到好结果),或者正式生成时因为有了明确的seed和确认过的提示词,一次成功率更高,那节省比例还能进一步提升。
3.2 不同使用频率下的成本敏感度
Draft模式的成本优势跟使用频率强相关。低频使用(比如一个月生成几十条)的话,节省的绝对金额可能不算大,但比例依然可观。高频使用(比如每天生成几百上千条)的话,节省的金额就非常惊人了。
我拿一个实际项目的数据做个参考。一个电商团队每天需要产出约200条商品短视频,每条视频平均需要尝试5次才能得到满意结果。用传统方式,每天需要生成1000次,按每次0.8元算,日成本800元。改用Draft模式后,每天Draft生成约1000次(成本0.08元/次,共80元),正式生成约220次(因为有少量需要重新生成,成本176元),日成本约256元。日节省544元,月节省超过1.6万元。
这个数字对于中小团队来说是很实在的。而且这还没算上因为试错成本降低而带来的创意质量提升——你可以更大胆地尝试不同方向,因为试错不再那么贵了。
3.3 隐藏成本:时间成本和机会成本
除了直接的API调用费用,还有两块隐性成本值得算进去。
时间成本:Draft模式生成速度快,通常比正式模式快不少。这意味着你的迭代周期缩短了。原来一天只能试10个方向,现在能试30个。对于需要快速响应热点的内容团队来说,这个时间优势可能比省钱更重要。
机会成本:因为试错成本高,很多团队在传统模式下会倾向于"保守创作"——只用那些验证过安全的提示词和参数,不敢尝试新方向。Draft模式把这个心理门槛降低了,让团队敢于探索,长期来看对内容质量的提升是有帮助的。
提示:在计算ROI的时候,不要只盯着API账单。把团队的时间成本、内容产出速度、创意质量这些因素都考虑进去,Draft模式的价值会更明显。
4. 实际使用中容易踩的坑和应对策略
4.1 Draft预览与正式成片的"一致性偏差"
这是最常见也最让人头疼的问题:Draft预览看着挺好,正式生成出来却不一样。造成这种偏差的原因有几个:
随机种子的影响:如果Draft阶段没有固定seed,正式生成时模型会重新随机初始化,结果自然不同。解决办法就是在Draft阶段就固定seed,并且正式生成时沿用同一个seed。
分辨率差异导致的细节变化:低分辨率下模型对细节的"脑补"方式和高分辨率下不一样。有些在720P下看起来合理的纹理,在1080P下会暴露出问题。这个没办法完全消除,但可以通过在Draft阶段使用稍高的分辨率(比如720P而不是480P)来减小差距。
模型版本不一致:有些平台Draft和正式模式背后用的是不同的模型版本。这个需要在接入时确认清楚,尽量选择同一模型家族的Draft和正式模式。
应对策略上,我的经验是:Draft阶段不要只看"方向对不对",还要重点关注"有没有潜在风险点"。比如人物手部、文字、复杂纹理这些容易出问题的地方,在Draft阶段就要仔细检查。如果Draft阶段就有轻微变形,正式版大概率会更严重。
4.2 API调用中的常见错误与排查
在接入过程中,有几类错误是高频出现的:
| 错误类型 | 典型报错 | 原因 | 解决办法 |
|---|---|---|---|
| 认证失败 | 401 unauthorized, incorrect api key | Key错误或权限不足 | 检查Key是否正确,确认已开通视频生成权限 |
| 参数错误 | 400 bad request | 参数缺失或格式不对 | 对照文档检查必填字段和参数类型 |
| 配额超限 | 429 too many requests | 调用频率过高或配额用完 | 降低调用频率,检查配额余额 |
| 任务超时 | timeout | 生成时间过长或任务卡死 | 增加轮询等待时间,检查任务状态 |
| 内容审核 | content violation | 提示词或生成内容触发审核 | 调整提示词,避免敏感内容 |
这里重点说一下401错误。很多人看到"incorrect api key provided"就以为是Key填错了,反复检查Key。但实际上,这个报错也可能是权限问题——Key是对的,但这个Key没有开通视频生成服务的权限。还有一种情况是Key的签名方式不对,火山引擎的API通常需要AK/SK做签名,如果你只传了Key没做签名,也会报401。
排查401问题的顺序应该是:先确认Key本身是否正确(有没有多余空格、有没有复制错),再确认这个Key对应的账号是否开通了视频生成服务,最后检查签名逻辑是否正确。
4.3 批量生成时的任务管理和限流处理
当你需要批量生成大量视频时,任务管理就变得很重要。直接循环调用API很容易触发限流,而且任务失败后不好追踪。
我的做法是维护一个任务队列,控制并发数,并且记录每个任务的状态。下面是一个简化的实现思路:
import time from concurrent.futures import ThreadPoolExecutor, as_completed class BatchGenerator: def __init__(self, workflow, max_workers=3, qps_limit=2): self.workflow = workflow self.max_workers = max_workers self.qps_limit = qps_limit self.last_call_time = 0 def _rate_limit(self): """简单的限流控制""" elapsed = time.time() - self.last_call_time min_interval = 1.0 / self.qps_limit if elapsed < min_interval: time.sleep(min_interval - elapsed) self.last_call_time = time.time() def generate_one(self, prompt, negative_prompt=""): """生成单条视频的完整流程""" self._rate_limit() draft_task = self.workflow.submit_draft(prompt, negative_prompt) draft_result = self.workflow.poll_task(draft_task) # 这里可以插入自动质量检测逻辑 # 如果检测不通过,可以自动重试或标记为待人工审核 self._rate_limit() formal_task = self.workflow.submit_formal( prompt, negative_prompt, seed=draft_result.get("seed") ) formal_result = self.workflow.poll_task(formal_task) return formal_result def generate_batch(self, prompts): """批量生成""" results = [] with ThreadPoolExecutor(max_workers=self.max_workers) as executor: futures = { executor.submit(self.generate_one, p): p for p in prompts } for future in as_completed(futures): prompt = futures[future] try: result = future.result() results.append({"prompt": prompt, "status": "success", "result": result}) except Exception as e: results.append({"prompt": prompt, "status": "failed", "error": str(e)}) return results这个实现里有几个关键点:并发数不要设太高,视频生成是重计算任务,并发太高容易触发限流;限流控制要放在提交任务之前,而不是轮询阶段;每个任务都要有独立的错误处理,避免一个失败影响整批。
4.4 提示词在Draft阶段的调优技巧
Draft阶段是调提示词的最佳时机,因为成本低、迭代快。我总结了几条实用的调优经验:
先粗后细:先用简短的提示词确定大方向,比如"一个女孩在跳舞",确认基本构图和动作没问题后,再逐步添加细节描述,比如服装、场景、光线、运镜方式。
一次只改一个变量:不要同时改多个描述词,否则你分不清是哪个改动导致了效果变化。比如这一轮只改光线描述,下一轮只改运镜方式。
善用负面提示词:负面提示词在Draft阶段就要认真写。常见的需要排除的项包括:模糊、变形、多余肢体、画面闪烁、文字乱码、比例失调等。
记录有效的提示词组合:每次找到好的结果,把完整的提示词、参数、seed都记录下来。这些就是你的"配方",后续类似需求可以直接复用。
注意提示词的权重分配:有些API支持用括号或者权重符号来调整关键词的重要性。在Draft阶段测试不同权重组合,找到最能表达你意图的写法。
提示:Draft阶段生成的预览视频建议保存下来,建立一个"提示词-效果"的对照库。积累多了之后,你会发现自己对提示词的理解会有一个质的飞跃。
5. 把Draft模式嵌入生产管线的工程化思路
5.1 与现有内容管理系统的对接方式
如果你是在一个已有的内容生产系统里集成Draft模式,需要考虑怎么跟现有的工作流对接。常见的做法是:
在内容管理系统的"素材生成"环节增加一个"预览确认"状态。运营人员提交生成需求后,系统先自动跑Draft模式,把预览结果推送到审核界面。审核人员确认后,系统再自动触发正式生成。整个流程对运营人员来说是无感的,他们只需要在界面上点"确认"或"重试"。
技术实现上,可以用消息队列来解耦。Draft生成任务和正式生成任务分别放到不同的队列里,由不同的worker消费。这样即使正式生成排队较长,也不会阻塞Draft预览的快速返回。
数据库设计上,建议把Draft任务和正式任务关联起来,记录同一个内容需求的完整生命周期。这样后续做数据分析和成本核算的时候,能清楚地看到每个环节的消耗。
5.2 质量检测环节的自动化设计
前面提到过,批量场景下需要自动化的质量检测。这里展开说一下具体怎么做。
最基础的检测是技术质量检测:检查视频是否能正常解码、分辨率是否符合预期、时长是否正确、有没有黑帧或严重花屏。这些用FFmpeg就能做。
进阶一点的是内容质量检测:检测画面是否模糊(可以用拉普拉斯算子计算清晰度)、主体是否完整(可以用目标检测模型判断)、运动是否连贯(可以计算光流的一致性)。这些需要一些视觉算法的基础。
再进阶的是美学质量检测:画面构图是否合理、色彩是否协调、整体观感是否达到标准。这个比较难自动化,通常还是需要人工判断,但可以用一些美学评分模型做初筛。
我的建议是不要追求一步到位。先把基础的技术质量检测做起来,能过滤掉大部分明显废片。然后根据实际需求逐步增加检测维度。记住一个原则:自动检测的目的是减少人工工作量,而不是完全替代人工。
5.3 版本管理和可追溯性
在生产环境里,可追溯性很重要。你需要知道每一条视频是用什么提示词、什么参数、什么模型版本生成的,方便后续复盘和优化。
建议在数据库里记录以下信息:提示词全文、负面提示词、所有生成参数(分辨率、时长、fps、seed等)、使用的模型版本、Draft任务的ID和结果、正式任务的ID和结果、生成时间、操作人、最终是否采用。
这些数据积累起来之后,你可以做很多有价值的分析:哪些提示词模板的成功率最高、哪些参数组合最容易出好结果、Draft预览和正式成片的一致性有多高、不同时间段的质量波动情况等等。
5.4 成本监控和预警机制
最后说一下成本监控。Draft模式虽然省钱,但如果不加监控,批量调用起来消耗也不小。建议设置几个监控指标:
每日Draft调用次数和费用、每日正式生成次数和费用、Draft到正式的转化率(多少比例的Draft最终转化成了正式生成)、单条可用视频的平均成本。
设置预警阈值,比如日费用超过预算的80%时触发告警。这样能及时发现异常调用,避免账单失控。
另外,定期分析Draft到正式的转化率也很有价值。如果转化率很低,说明Draft阶段的筛选不够准确,或者提示词质量有问题,需要优化。如果转化率很高,说明流程跑得比较顺,可以考虑适当提高Draft阶段的分辨率,进一步减小预览和成片的差距。
我在实际项目里把Draft模式跑顺之后,最大的感受是它改变的不只是成本结构,而是整个团队的创作心态。以前大家写提示词的时候会不自觉地"求稳",因为试错太贵了。现在可以放心大胆地试各种方向,创意的空间一下子打开了。当然,工具再好也只是工具,最终决定内容质量的还是人对画面的理解和审美判断。Draft模式把试错的门槛降低了,但选择哪个方向、怎么打磨细节,这些还是得靠人来做。