
以下为本文档的中文说明video-still-animator 是一个巧妙的视频生成备用方案技能它使用纯 ffmpeg 工具将单张静态图片PNG/JPG转换为带有缓慢 Ken-Burns 缩放效果的短视频MP4同时生成静音音轨。该技能设计的初衷并非替代真正的 AI 视频生成工具而是作为 AI 视频生成步骤被内容审核拒绝时的优雅降级方案。在实际的 AI 视频制作流水线中如 seedance-2-prompt 等平台级 AI 视频生成模型可能因为多种非内容原因拒绝请求例如输入照片中包含可识别的真人面孔、输出音频被安全分类器标记、或者审核模型的相似度阈值每天都在波动。在这些情况下由于流水线在调用 AI 视频生成之前已经生成了 PNG 中间帧video-still-animator 可以立即将这些 PNG 转换为 Ken-Burns 特效片段确保下游的合并步骤仍然能够产出完整的交付物。使用场景包括AI 短视频制作流水线中的容错处理、需要从静态图片生成简单视频动画的轻量需求、以及作为测试环境中不需要真实 AI 视频生成时的替代方案。核心特点是极简和可靠的实现——纯 ffmpeg 包装器使用 zoompan 滤镜实现平滑缩放效果无需任何 AI 模型或 GPU 支持。该技能体现了“演出必须继续”的工程哲学通过提供可靠的降级路径确保整体流水线的健壮性。video-still-animator — Ken-Burns fallback clip from a stillProduces a short MP4 from a single PNG/JPG using ffmpeg’szoompanfilter, so a downstream merge step still has a clip for every shot whenan upstream AI video generation step gets blocked.Why this skill existsseedance-2-prompt(and any platform-moderated video model) can refuseindividual requests for reasons that have nothing to do with theprompt’s narrative quality:input photo contains a recognisable real person faceoutput audio gets flagged by the safety classifierthe moderation model’s similarity threshold drifts day to dayInmeta-short-dramawe always have a fresh PNG on disk before theseedance call runs, so the cheapest “the show must go on” fallback is toturn that PNG into a Ken-Burns clip and feed it to the merger. The clipwon’t have the camera motion the prompt asked for, but the character,framing, and timing will still match the script.Inputs (with:)keyrequireddefaultnotesinput_imageyes—PNG or JPG path.output_pathyes—Output.mp4path. Parent dir created if missing.durationno5Clip length in seconds.widthno720Output width. Match the merge step’s pipeline.heightno1280Output height. 720x1280 9:16.fpsno24Output frame rate.zoom_rateno0.0015Per-frame zoom delta; 0.0015 over 5s ≈ 1.18× final zoom.Output specsH.264 video at the requested resolution fpsAAC silent audio track (so merge steps that demux/remux audio do nottrip on a missing stream)faststartMP4 (web playback friendly)Dependenciesffmpeg ≥ 5.0 on PATH (or pass--ffmpeg-pathdirectly).On Windows the script also probes the winget Gyan.FFmpeg install path,Scoop, Chocolatey, andC:\\Program Files\\ffmpeg\\binbefore giving up.Use ason_failuresubstituteIn a meta-skill DAG, hang it off the real video step:-id:shot1_videokind:skill_execskill:seedance-2-prompton_failure:shot1_video_fallbackwith:{...}-id:shot1_video_fallbackkind:skill_execskill:video-still-animatorwith:input_image:{{ inputs.workspace_dir }}/.../1_shot.pngoutput_path:{{ inputs.workspace_dir }}/.../1_shot.mp4The fallback must be a standalone step (nodepends_on, no ownon_failure) per the meta-skill engine rules. The PNG must alreadyexist on disk by the time the parent step fails — that’s true herebecause the image step always runs before the video step.LimitsStatic framing only. The zoom is uniform centre-anchored; no pan, norotation, no parallax. For richer fallback motion, generate a freshset of stills and call this multiple times.No real audio. The intent is a placeholder that survives the merge;add a real soundtrack downstream if needed.ffmpeg version drift: very old ffmpeg (4) may not accept the exactzoompanfilter syntax; install ≥ 5.