dsh-video-android:在 DSHA 上做分镜、多供应商生成与 FFmpeg 导出

前言

在 DeepSeek Harness 里做视频,常见路径是:模型写脚本、再分别对接图像/视频 API、最后在桌面用 FFmpeg 拼片。手机上的 DSHA(Linux arm64 + glibc,proot 容器)缺少一套把「分镜、生成、落盘、导出」串在同一工作区里的插件。下面介绍维护者 dttGitHu 的 dsh-video-android(目录名 dttgithu/dsh-video-android,当前 v0.2.0):纯 JavaScript、无原生模块,面向窄屏工作台与 13 个 film_* 工具,把供应商池调度与本地 MP4 合成收进同一套 workspace 布局。

这是什么

dsh-video-android 是 DSHA 上的视频制作工作台插件,按 README 所述的「整合式二次开发」思路,从现有 DSH 插件拆出可复用模块再组装。它不依赖 Windows 专有路径,读写项目落在可配置的 workspaceDir(默认 $DSH_WORKSPACE_DOCUMENTS/film-studio)。

插件在 package.json 中声明:兼容 DSH >= 0.2.0、Node >= 20,许可证 MIT。SkillHub 分类为可安装客户端;GitHub 仓库:https://github.com/dttGitHu/dsh-video-android。

核心功能

分镜与项目布局

每个项目在 workspace/projects/<projectId>/ 下维护:

  • storyboard.json:分镜(原子写:临时文件 + rename,读改写串行)
  • assets/:生成后下载的素材
  • output/final.mp4:导出结果

默认 projectId 为 default;旧的 workspace/storyboard.json 与 workspace/assets/ 会在首次访问时迁移到 projects/default/。工具、工作台 API、素材路由均带 projectId。

对应工具:film_create_storyboard、film_list_scenes、film_update_scene(含 kind=image/video)、film_regenerate_scene。

多供应商生成与失败切换

调度层统一适配 6 家供应商,默认顺序为:jimeng → doubao-seedream → doubao-seedance → wanx → tongyi-wanx → kling。图像任务会跳过 doubao-seedance,视频任务会跳过 doubao-seedream;失败会分类并自动切换,尝试记录写入 attempts。

  • 即梦 / 豆包:火山方舟 Bearer API Key(JIMENG_API_KEY 等,Seedream 仅图像、Seedance 仅视频)
  • 通义万相:DashScope(DASHSCOPE_API_KEY;TONGYI_WANX_API_KEY 回退 DASHSCOPE_API_KEY,见 README 配置表)
  • 可灵:KLING_ACCESS_KEY / KLING_SECRET_KEY 签 JWT

工具:film_generate_image、film_generate_video。未配置的供应商会被跳过,不会发请求。

FFmpeg 探测与 MP4 导出

film_probe_ffmpeg 探测 FFmpeg / ffprobe,验证 proot 子进程链路。路径优先级:config.ffmpegPath → DSH_FFMPEG_PATH → FILM_STUDIO_FFMPEG → PATH(ffprobe 同理)。

导出流程(README 已逐步说明):

  1. film_check_assets 预检每个镜头;有缺失时 film_export_mp4 拒绝执行并列出原因。
  2. 逐镜头:图片可 -loop 并可选 Ken Burns(zoompan);视频按时长裁剪;统一 scale/pad 到 1280×720、30fps、H.264(yuv420p),音频 AAC。
  3. concat 拼接,ffprobe 复核;全程默认 120 秒超时,超时 SIGKILL;插件卸载时会清理 ffmpeg/ffprobe 子进程与临时目录。

进度查询:film_export_progress,或工作台轮询 GET /film-studio/api/export/status?project=。

提示词自优化

优化由当前会话的模型完成,插件不另调第二个 LLM。工具链包括:

  • film_evaluate_scene_prompt:四要素、旁白长度、空泛词、三维规则评分与建议(不改数据)
  • film_optimize_scene_prompt:两阶段 start/submit,写 promptHistory 与 currentPrompt
  • film_optimize_all_prompts:批量优化 draft 镜头,单镜头失败不阻断

规则与上限(README 原文):第 0 轮原始版本不删;历史保留最近 5 轮;达标或达最大轮次(1–3,默认 1)停止;风格可选写实电影感 / 动画漫剧 / 悬疑 / 治愈等。

窄屏工作台

同源访问:http://127.0.0.1:<DSH端口>/film-studio?project=<id>,复用 DSH 登录态。页面为自包含窄屏 UI(assets/workbench.html),支持卡片分镜、参数抽屉、重新生成、项目切换与导出进度展示。

普通用户可在右上角 ⚙ 打开供应商设置抽屉,密钥合并写入 <workspaceDir>/providers.json(权限 600);优先级为 cordis.patch.yml > 环境变量 > providers.json。保存后需重启 DSHA 生效(密钥在插件启动时解析)。

安装与启用

SkillHub 目录页:https://www.skillhub.cn/plugins/dttGitHu/dsh-video-android。页面提供 「发送给 DeepSeek Harness 安装」 入口(维护者 dttGitHu);README 与已抓取资料中未单独给出 dsh plugin add … 一类 CLI 字符串,安装请以 DSH 客户端与目录页指引为准,勿凭仓库名自行拼接命令。

启用前建议确认:

  • 运行环境为 DSHA / 满足 Node >= 20
  • 系统或配置中可用的 ffmpeg / ffprobe(可先调用 film_probe_ffmpeg)
  • 需使用的供应商 API Key(YAML、环境变量或工作台面板三者择一或组合)

典型用法

1. 探测 FFmpeg

在 Harness 中让智能体调用工具 film_probe_ffmpeg,确认 proot 下子进程与可执行文件路径正常。

2. 创建分镜并生成素材

  1. film_create_storyboard 生成分镜(指定 projectId,可追加)。
  2. film_list_scenes 查看镜头;必要时 film_update_scene 改旁白、画面描述或 params.kind(图片/视频)。
  3. film_regenerate_scene 按镜头重生成,素材下载到 projects/<projectId>/assets/。

生成走供应商池;某家失败会自动尝试下一家(在已配置密钥的前提下)。

3. 预检并导出 MP4

  1. film_check_assets 确认每个镜头 status 与本地/远程素材就绪。
  2. film_export_mp4 合成;需要时可传 Ken Burns 参数(工作台 localStorage 中的 kenBurnsDirection / kenBurnsStrength 与导出请求一致)。
  3. 用 film_export_progress({ exportId }) 或工作台查看 checking → downloading → segment → concat → verifying → done/failed 各阶段。

输出默认路径:workspace/projects/<projectId>/output/final.mp4。

4. 优化镜头提示词(可选)

对 draft 镜头先 film_evaluate_scene_prompt,再 film_optimize_scene_prompt(start 取得改写指令 → 模型生成 → submit 回传 JSON)。批量场景用 film_optimize_all_prompts,注意会话总超时默认 90 秒等 README 限制。

5. 浏览器里改片

打开 /film-studio?project=<id>,在窄屏 UI 中编辑卡片、切换项目(GET/POST /film-studio/api/projects*),与工具读写同一套 storyboard.json。

仓库内附带验证脚本(如 npm run verify 对应 scripts/verify.mjs 等),供开发者在有 FFmpeg 的环境做模块自检;日常使用以 Harness 工具与工作台为主。

适用场景与注意

适合:在 Android DSHA 上希望用自然语言 + 工具链完成「分镜 → 多平台 AI 出图/出视频 → 本地合成 MP4」的创作者或集成该能力的智能体作者;已具备至少一家供应商密钥与 FFmpeg 的环境。

注意:

  • 插件以当前 DSH 进程权限运行,会读写 workspace、发起对外网络请求(火山方舟、DashScope、可灵等,见 package.json capabilities.network)。安装前应阅读源码与 MIT 许可证,并自行保管 API Key。
  • 供应商费用、配额与内容策略由各平台负责;调度器只做失败切换,不保证某一镜必成功。
  • 导出依赖 FFmpeg 与磁盘空间;远程素材下载受超时与大小上限约束(见 media/download.js 说明于 README 目录结构)。
  • SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系;插件星标与版本以 GitHub / 目录页为准(目录页显示 v0.2.0)。

结尾

dsh-video-android 把分镜数据、六家供应商池、提示词优化与 FFmpeg 导出收进同一 workspace,并提供 /film-studio 窄屏工作台,适合在手机上把 Harness 会话延伸成可落地的短视频流水线。进一步了解能力与配置字段,请查阅 GitHub README 与 SkillHub 目录页:

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye