# fmode-mv > **纯 AI 视频全流程技能** —— 从一句主题到成片,全程零实拍。 > 两条产线:**AI 单曲 MV** 与 **AI 口播 / 商业短视频**,共用同一套底层模块。 > v0.2.0 起接入**即梦(火山引擎)真实通道**:文生图 / 图生图 / **图生视频** / 动作模仿 / 数字人全部实测可用。 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE) [![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org) [![deps](https://img.shields.io/badge/dependencies-0-blue)](./package.json) --- ## 这是什么 把「文案 → 分镜 → 人物资产 → 场景 → 关键帧 → 图生视频 → 成片」整条链路 固化成一个**可复用、可照跑**的技能仓库。任意数字生命克隆本仓即可开工: ```bash git clone https://git.fmode.cn/fmode-13177980648/skill-mv.git cd skill-mv node bin/fmode-mv.js doctor # 环境自检 node bin/fmode-mv.js providers # 看哪条通道能用(jimeng ✅) node bin/fmode-mv.js song "深夜末班地铁上的城市白领" # 端到端跑一条 MV ``` **纯 AI 生成,不依赖实拍** —— 现实拍摄素材最多作参考图 / 参考音。 --- ## 快速开始 ```bash # 1. 依赖:Node ≥ 18 + ffmpeg(零 npm 依赖) node -v && ffmpeg -version | head -1 # 2. 凭据(运行时读取,绝不硬编码) export FMODE_SESSION_TOKEN=<你的 sessionToken> # 即梦通道(必需) export FEME_API_TOKEN=<你的 token> # 旧网关 chat/image(可选) # 或写入 /opt/data/fmode-identity.json 的 session_token / newapi_token 字段 # 3. 自检 node bin/fmode-mv.js doctor ``` ### 一条命令跑通产线 A(AI 单曲 MV) ```bash # 端到端:作曲填词 → 人物资产 → 场景图 → 关键帧 → 图生视频 → 剪辑 node bin/fmode-mv.js song "深夜末班地铁上的城市白领" --genre "city pop" --mood "孤独但温暖" --shots 8 # → out/mv.mp4 ``` 分步跑(省钱、可控): ```bash # ① 作曲填词 node bin/fmode-mv.js lyrics "深夜末班地铁上的城市白领" --genre "city pop" # ② 人物资产(锁定主角,跨镜头不换脸)—— 先跑 1 步试水 ¥0.60 node bin/fmode-mv.js character-sheet \ --desc "25岁东亚女性,栗棕色森长直发,身穿米色针织开衫与白色长裙,清冷安静" --limit 1 # 满意后跑完整四步(9 张候选 + 择优)≈¥1.98 node bin/fmode-mv.js character-sheet --desc "..." --limit 4 # ③ 场景图 + 关键帧(≈¥0.42/镜) node bin/fmode-mv.js scene --from work/storyboard.json \ --character out/character/4-多视图.png --limit 1 # ④ 图生视频(1 镜 5 秒 ≈¥1.41)—— 先试 1 镜 node bin/fmode-mv.js video --from work/storyboard.json --limit 1 --resolution 720p # 满意后全量 node bin/fmode-mv.js video --from work/storyboard.json # ⑤ 剪辑成片(本地 ffmpeg,零 API 费用) node bin/fmode-mv.js assemble --from work/storyboard.json --music work/audio/song.mp3 # 零费用预览:只看 prompt,不调 API node bin/fmode-mv.js character-sheet --desc "..." --dry-run node bin/fmode-mv.js video --mode still --from work/storyboard.json # Ken Burns 兜底 ``` ### 一条命令跑通产线 B(AI 口播 / 商业短视频) ```bash # 端到端:口播稿 → 分镜 → 人物资产 → 场景 → 图生视频 → 剪辑 node bin/fmode-mv.js talk "三分钟讲清楚什么是多租户数据隔离" --duration 90 --shots 8 # → out/talk.mp4 # 用现成口播稿(跳过文案撰写) node bin/fmode-mv.js talk --script work/script.md --duration 60 # 需要「真人对口型」的口播镜头 → 用即梦数字人(¥1/秒,替代未开通的唇形驱动通道) node bin/fmode-mv.js jimeng digital-human \ --ref out/character/3-全身.png \ --audio work/audio/voiceover.mp3 \ --prompt "固定机位,手臂自然轻微挥动,神情专注自信,眼神直视镜头" ``` 装成全局命令(可选): ```bash npm link fmode-mv song "主题" ``` --- ## 通道自检 ```bash fmode-mv jimeng --status # 通道与凭据状态(不花钱) fmode-mv jimeng --endpoints # 全部端点 + 费用表 fmode-mv jimeng --test # 真跑一张最小文生图(¥0.20) fmode-mv providers # 全部通道能力矩阵 ``` --- ## 两条产线 两条产线**共用同一套底层模块**(图像生成 / 视频生成 / 音频处理 / 剪辑 / provider 接口), 只是编排不同。 ### 产线 A · AI 单曲 MV ``` 歌曲主题 → 作曲填词 → AI 音乐 → 人声/伴奏分离 → ④ 人物资产多视图(定妆照→上半身→全身→多视图) → ⑤ 场景图(无人)→ 关键帧(有人,多图参考) → ⑥ 图生视频(第一镜首尾帧,其余首帧) → 剪辑合成(卡点 + 字幕)→ out/mv.mp4 ④⑤⑥ 均为即梦通道,实测可用 ``` ### 产线 B · AI 口播讲解视频 ``` 口播需求 → 口播稿 → 分镜 → 人物资产 → 场景/关键帧 → 图生视频 → 数字人口播(可选) → 剪辑合成 → out/talk.mp4 ``` --- ## ★能力现状(实测,务必先看) | 环节 | 现状 | 说明 | |---|---|---| | 作曲填词 / 分镜 / 口播稿 | ✅ **可用** | `POST /v1/chat/completions` | | **文生图 / 图生图** | ✅ **可用** | **即梦** `/getText2ImgV3` `/getImgV4` `/getImg2ImgV3`(¥0.20~0.22/张) | | **图生视频 720p/1080p/Pro** | ✅ **可用** | **即梦** `/getVideoV3_720p` 等(实测 5 秒镜实扣 **¥1.41**) | | **人物动作模仿** | ✅ **可用** | **即梦** `/getActorV2`(¥0.4/秒) | | **数字人口播** | ✅ **可用** | **即梦** `/getOhIdentifyMain`→`/getOmniHuman`(¥1/秒) | | **智能超清** | ✅ **可用** | **即梦** `/getSuperResolution`(¥0.4/张) | | 关键帧(旧 image 通道) | ✅ 可用 | `POST /v1/images/generations`(`gpt-image-2.5-sunburst`) | | 剪辑 / 合成 | ✅ **可用** | 本地 ffmpeg:拼接/混音/字幕/卡点/响度归一化 | | AI 音乐 | ❌ **未开通** | `/suno/submit/music` 实测 503 `Task request failed` | | 图生视频(旧网关) | ❌ **未开通** | `/v1/video/generations` 实测 503 `No available channel`;**已改用即梦** | | 唇形驱动 | ❌ **未开通** | 网关无该路由;**已改用即梦数字人替代** | | TTS 口播配音 | ❌ **未开通** | 网关无该路由;本地 edge-tts 在**部分云环境被 403 拦截**(本容器实测) | | 音轨分离 | ◐ **ffmpeg 近似 / demucs 可选** | 需要真·分离请装 demucs | ```bash fmode-mv providers # 随时查看最新状态 fmode-mv providers --deep # 深度探活(可能计费) fmode-mv jimeng --status # 即梦通道与凭据状态(不花钱) ``` ### 未开通通道怎么处理 **绝不静默失败,绝不编造产物。** - 调用未开通通道 → 抛出 `ProviderUnavailableError`,打印**可操作方案**。 - 端到端编排遇到未开通步骤 → **如实标记**,能兜底的才兜底,最终报告里逐条列出。 - 图生视频整体不可用 → 自动降级为「关键帧 + Ken Burns 运镜」, 产物**文件名带 `.fallback`**,报告里明说「N 段为兜底运镜(非真 AI 图生视频)」。 - `method=3` 首尾帧失败 → 自动降级 `method=2` 首帧,返回值带 **`degraded: true`**,日志明写。 替代路线速查: | 缺失能力 | 立即可用的替代 | |---|---| | AI 音乐 | `--music your-song.mp3` 自备音频 | | TTS | `pip install edge-tts`(免费本地,自动探测);或 `FEME_TTS_ENDPOINT`;或 `--voice` 指定音频 | | 唇形驱动 | **即梦数字人**:`fmode-mv jimeng digital-human --ref 人脸图 --audio 配音.mp3` | | 图生视频(旧) | **即梦**:`fmode-mv video --mode jimeng` | 详见 [`references/capability-matrix.md`](./references/capability-matrix.md)。 --- ## 命令速查 | 命令 | 作用 | 通道 | |---|---|---| | `fmode-mv song "主题"` | 产线A 端到端 | 全链路 | | `fmode-mv talk "主题"` | 产线B 端到端 | 全链路 | | `fmode-mv lyrics "主题"` | 作曲填词 | chat | | `fmode-mv storyboard --from work/song.json` | 分镜脚本 | chat | | **`fmode-mv character-sheet --desc "..."`** | **④ 人物资产多视图** | **即梦** | | **`fmode-mv scene --from work/storyboard.json --character <多视图>`** | **⑤ 场景图 + 关键帧** | **即梦** | | **`fmode-mv video --from work/storyboard.json`** | **⑥ 图生视频** | **即梦** | | `fmode-mv keyframe --from work/storyboard.json` | 关键帧单跑(旧 image 通道) | image | | `fmode-mv jimeng ` | 即梦能力直调 | 即梦 | | `fmode-mv music --from work/song.json` | AI 音乐 | music ❌ | | `fmode-mv separate