开剪前给每段素材一个全局唯一名字,终结多天同名
C0001.MP4带来的代理掉线与跨软件套底失败。
DITto 是一个面向影视后期 / 无专职 DIT 小团队的 macOS 桌面小工具。它只做一件事:在开剪前,把素材文件和同目录 sidecar 就地改成全局唯一文件名,并留下可撤销的 manifest。
很多相机在每天格式化存储卡后,文件名会重新从 C0001.MP4 开始。拍摄多天后,同一个项目里会出现大量同名素材。剪辑软件在代理重连、XML/AAF 套底时高度依赖文件名与卷名,重名素材会让链路变脆。
DITto 的做法很保守:
- 只改文件名。
- 不 remux。
- 不改写视频流或内嵌元数据。
- 执行前必须预览。
- 就地改名使用两阶段流程,避免瞬时撞名。
- 每次成功执行都会写出
_DIT_rename_manifest_*.json,可撤销。
完整使用说明见本文后续章节;发布流程见 docs/RELEASE.md。
- 多文件夹素材扫描,递归识别
.mp4/.mov。 - sidecar 同步改名,例如 Sony
C0001M01.XML、.THM。 - 命名格式:
{PROJECT}_{DAY}_{CUSTOM_TAG?}_{CAMERA?}_{ORIGINAL}。 - 可选自定义标签,适合摄影师、组别、机位补充信息等。
- 执行前预览旧名、新名、类型和冲突状态。
- 两阶段就地改名,降低 A→B、B→A 互换场景风险。
- manifest 撤销:支持撤销上一次,也支持从 manifest 文件撤销。
- macOS 原生文件夹选择与 Finder 显示 manifest。
C0001.MP4 → WEDDING_D01_ALICE_A_C0001.MP4
C0001M01.XML → WEDDING_D01_ALICE_A_C0001M01.XML
C0001.THM → WEDDING_D01_ALICE_A_C0001.THM
自定义标签或机位为空时自动省略:
WEDDING_D01_A_C0001.MP4
WEDDING_D01_C0001.MP4
所有命名段会被清洗为大写安全字符:A-Z、0-9、_。
从 GitHub Releases 下载 .dmg,把 DITto.app 拖到 Applications 或任意目录后运行。
当前自用包可能是 ad-hoc 签名、未 notarize。首次运行如遇 macOS Gatekeeper 拦截,可在“系统设置 → 隐私与安全性”中手动允许。正式公开发布前建议使用 Apple Developer ID 签名并 notarize。
基本流程:
- 拖入或选择一个 / 多个素材文件夹。
- 填项目名、拍摄日,可选填自定义标签和机位。
- 点击预览,确认新旧文件名和冲突状态。
- 无冲突后执行重命名。
- 需要回滚时,使用“撤销上一次”或“从文件撤销”。
要求:
- macOS
- Node.js 24(见
.nvmrc) - pnpm
- 可选:
ffprobe(用于日期推断,brew install ffmpeg)
pnpm i
pnpm dev常用命令:
pnpm lint
pnpm typecheck
pnpm test
pnpm build
pnpm dist发布前建议运行:
pnpm lint && pnpm typecheck && pnpm test && pnpm build
pnpm distpnpm dist 会生成 arm64 macOS DMG:
release/DITto-<version>-arm64.dmg
Electron 应用包含 Chromium / Node / Electron runtime,体积会明显大于原生 Swift 小工具,这是正常现象。
DITto 不会读取云端账户、不上传文件、不复制素材、不改写视频内部数据。它会对你选择的本地文件夹执行文件重命名,因此请在执行前仔细检查预览,并保留原始拍摄介质或备份。
MIT © 2026 haixing23
