motion-anything 里时间轴和导出可以当成两段分开做的工作:时间轴决定每段动画在什么时刻出现、持续多久,导出决定这些编排被渲染成什么分辨率和帧率的成片。素材会不会被传到远端,不取决于工具叫什么名字,而取决于项目里的时间轴文件、素材和渲染过程有没有向本机之外的地址发起请求。可以先把两段分开处理,再用网络面板和导出回放确认本地优先这个前提是否真的成立。
管时间轴和管导出分开处理更稳:先把编排拆成带起止标记的片段,逐段回放确认;再把分辨率、帧率、时长写进导出配置并固定下来。素材是否留在本机,用浏览器网络面板看请求目标就能判断,出现外部域名就回到项目文件里定位。边界是:不同工具的时间轴格式和导出参数名不一样,下面的路径、命令和配置字段需要按实际项目结构调整后再用。
在项目目录里定位时间轴文件与动效资源
先把动效工程本体和导出产物分开。时间轴文件记录轨道、关键帧和片段起止,通常是 json、yaml 或工具自己的格式;素材是图片、字体、音频、视频和 svg;导出产物是 mp4、webm、gif 或序列帧目录。常见位置是 timeline/ 或 scenes/ 放时间轴,assets/ 或 public/ 放素材,exports/ 或 out/ 放导出结果。这三类里,前两类值得纳入版本管理,导出产物一般放进忽略目录。
在项目根目录先列一遍结构,确认目录名和预期是否一致:
ls -la
find . -maxdepth 3 -type d \( -name node_modules -o -name .git \) -prune -o -type f -print | sort | head -n 60
如果目录名和预期不一致,再按内容找时间轴文件:
grep -rln "keyframe\|timeline\|marker" `--include`="*.json" `--include`="*.yaml" .
列表里出现的外部路径先记下来,后面在浏览器网络面板里核对请求时会用得上。
把时间轴编排拆成可复核的片段
整体拖一遍看感觉,很难定位到具体哪一段出了问题。建议按场景或镜头把时间轴切开,每段给一个稳定的 id 和起止时间。分段方式有两种:按场景边界切,或按时间轴上已有的标记点切。两种都要求每个片段写出明确的 start 和 end,不要用「大致到某处」这类描述。
segments:
- id: intro
start: 0.0
end: 2.5
- id: logo-reveal
start: 2.5
end: 6.0
- id: outro
start: 6.0
end: 12.5
这段结构是通用骨架,字段名以所用工具的时间轴格式为准。分段写好后,把预览的播放区间设成某个片段的 start 和 end,只回放这一段;也可以临时把导出范围收窄到该片段,导一个小文件出来核对。每段都能单独跑通,再拼回完整时间轴。
导出前固定分辨率、帧率与时长三项参数
导出面板和配置文件里往往各有一套参数,两处不一致时以哪处生效,跟工具的读取顺序有关。可以先做一次小验证:改配置文件里的 fps,看导出面板是否跟着变;面板不变,说明面板值优先。通常建议把三项参数写进配置文件,导出面板只做最后一次核对。
{
"export": {
"width": 1920,
"height": 1080,
"fps": 30,
"duration": 12.5,
"range": [0, 12.5]
}
}
导出前按这份清单核一遍:
- 分辨率宽高比是否和预览窗口一致;
- 帧率是否和时间轴关键帧的最小间隔匹配,关键帧间隔小于 1/fps 时容易丢帧;
- duration 是否等于最后一个片段的 end;
- range 是否和本次要导的范围一致,只导某一段时有没有对上分段标记;
- 配置文件改动后是否重新加载过,避免读到旧值。
检查资源请求是否出本机
本地优先这个前提要自己验一遍。打开预览页面,按 F12 进入 Network 面板,勾选 Disable cache 后刷新一次,按 Host 排序,看有没有本机之外的域名。通常可以接受的目标是 localhost、127.0.0.1、::1 和 file://。
需要重点看的请求类型有:字体文件(woff、woff2)、图片和 svg、媒体(mp4、webm、mp3)、时间轴或配置 json、脚本和 wasm。这几类里出现外部地址,素材就很可能没有全程留在本机。
发现外部请求后,在网络面板里点开该请求,看 Initiator 一栏指到哪个文件、哪一行,然后回到项目里搜这个域名:
grep -rn "example-cdn.com" ./src ./assets ./public 2>/dev/null
把 example-cdn.com 换成实际域名。命中的文件如果是工具自带的默认资源地址,看能否改成自托管路径;如果是某个依赖库的默认地址,再判断它是必需依赖还是可以去掉。
导出后逐段回放与预览对照
导出完成后不要只看开头几秒。按分段表逐段播放,预览和导出的同一时间段对照着看,把差异填进表里:
| 段落 | 预览表现 | 导出表现 | 差异描述 |
|---|---|---|---|
| intro 0–2.5s | |||
| logo-reveal 2.5–6.0s | |||
| outro 6.0–12.5s |
常见差异集中在几处:帧率不匹配导致的卡顿或丢帧、字体没被嵌入导致的字形替换、透明背景在导出格式里变成黑底、音频和画面起始点偏移。差异描述尽量写清楚是该段第几秒出现的、预览里有没有,后续才好定位回具体片段去改。