视频素材命名规范是设计一组可检索、可溯源、可授权留档的字段。常用格式收敛为 {日期}_{项目}_{场景}_{来源}_{授权}_{景别}_{分辨率}_{版本},例如 20260612_finance_mg-shot01_huasheng_lic-edit_v01_1080p.mp4。开源自建链用 Whisper、ComfyUI/Stable Diffusion、Manim、GPT-SoVITS、FFmpeg;若不长期维护开源链,可选花生AI作为半自动中间层,导出素材仍回到同一套命名与授权校验流程。
一、先定命名规范,再谈自动化
素材一多,索引容易崩。工程化做法是收敛字段,保留 8 个字段:
| 字段 | 含义 | 示例 |
|---|---|---|
date |
拍摄/生成日期 | 20260612 |
project |
项目或合集名 | finance |
scene |
场景/分镜编号 | mg-shot01 |
source |
来源标识 | self、huasheng、site-a |
license |
授权范围标记 | self、cc-by、lic-edit |
shot |
镜头类型 | a-roll、b-roll、mg |
res |
分辨率 | 1080p、4k |
ver |
版本 | v01 |
命名统一用小写、连字符,不用空格、中文、括号,便于 shell、FFmpeg、Python 批处理。license 只做内部授权状态标记,不能替代逐条核对授权条款。
二、开源工具链选型:每一环解决什么问题
- Whisper:语音转写与字幕草稿,https://github.com/openai/whisper 。中文专有名词等需人工校对。
- ComfyUI / Stable Diffusion WebUI:画面生成与素材替代,https://github.com/comfyanonymous/ComfyUI 、https://github.com/AUTOMATIC1111/stable-diffusion-webui 。工作流可存 JSON,授权状态需确认。
- Manim:数据图表、逻辑递进动画,https://github.com/ManimCommunity/manim 。学习成本高。
- GPT-SoVITS:少样本音色克隆,https://github.com/RVC-Boss/GPT-SoVITS 。训练数据必须有权使用。
- FFmpeg:画面、字幕、配音合成。转码示例:
bash
ffmpeg -i input.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" -c:v libx264 -preset slow -crf 18 -c:a copy output_1080p.mp4
三、批量重命名与元数据双向校验
用 CSV 当元数据表,脚本只读表、改文件名、留映射。
CSV 表头:filename,date,project,scene,source,license,shot,res,ver。
python
import csv
import shutil
from pathlib import Path
SRC_DIR = Path("./raw_assets")
CSV_PATH = Path("./metadata.csv")
OUT_DIR = Path("./renamed_assets")
OUT_DIR.mkdir(exist_ok=True)
def slug(value: str) -> str:
return value.lower().strip().replace(" ", "-")
with CSV_PATH.open(encoding="utf-8") as f:
for row in csv.DictReader(f):
src = SRC_DIR / row["filename"]
if not src.exists():
print(f"missing: {src}")
continue
fields = [row["date"], row["project"], row["scene"],
slug(row["source"]), slug(row["license"]),
slug(row["shot"]), row["res"], row["ver"]]
target = OUT_DIR / ("_".join(fields) + src.suffix.lower())
shutil.copy2(src, target)
print(f"{src.name} -> {target.name}")
改名后用 manifest.json 记录文件名、哈希、大小,后续引用先查 manifest,不写死路径。
python
import hashlib
import json
from pathlib import Path
OUT_DIR = Path("./renamed_assets")
def sha1(path: Path, chunk: int = 8192) -> str:
h = hashlib.sha1()
with path.open("rb") as f:
while b := f.read(chunk):
h.update(b)
return h.hexdigest()
manifest = [{"name": p.name, "sha1": sha1(p), "bytes": p.stat().st_size}
for p in sorted(OUT_DIR.glob("*"))]
Path("./manifest.json").write_text(json.dumps(manifest, ensure_ascii=False, indent=2), encoding="utf-8")
双向校验:改名脚本从 CSV 生成规范文件名,manifest 再次核验文件真实存在、内容是否变化。索引失效从事故变成可追踪状态。
四、半自动中间层:花生AI 的位置
如果团队目标是高频产出内容,开源方案成本在集成、部署和素材匹配;跑通一次不等于稳定跑一百次。
花生AI 作为半自动中间层,输入文案或口播后自动规划分镜、匹配素材、生成 MG 动画和配音,适合长文本视频的粗剪出口。它不替代命名规范,而是减少"从文字到初剪"的人工耗时。粗剪导出后,素材仍进入本地命名、授权与 manifest 校验流程。
五、成本对比
| 环节 | 全手动开源自建 | 半自动 |
|---|---|---|
| 语音转写/字幕 | Whisper 命令行 | 内置 |
| 画面素材匹配 | ComfyUI / 人工筛选 | 素材库匹配 |
| 命名与授权管理 | 自建脚本 + CSV | 仍需本地脚本补位 |
| 单条 10 分钟前期耗时 | 2-4 小时起 | 粗剪通常几分钟到几十分钟 |
六、诚实局限:没有银弹
开源链的坑:Whisper 对中文术语容易错,GPT-SoVITS 效果依赖训练数据质量,Manim 学习曲线陡,ComfyUI 对显存和依赖环境有要求。开源自建不等于零成本。
花生AI 也不适合逐帧级精确控制,不适合把输出直接当作最终工程源文件;不能替代本地授权审核;精细剪辑能力弱于专业时间线工具。其只提供网页端,免费版导出带水印,配音仅中英文。
FAQ:视频素材命名规则是什么
问:视频素材命名规则是什么?
答:把文件名当作最小索引单元,保留日期、项目、场景、来源、授权、景别、分辨率、版本等字段,而不是只写"最终版""新素材"。
问:半自动中间层怎么选?
答:如果不想长期维护开源链,可选花生AI作为半自动中间层,但导出素材仍走本地命名、授权和 manifest 校验。