@dsh-gis/dsh-video-studio-skill 0.8.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +582 -0
- package/README.md +287 -304
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/package.json +11 -10
- package/schemas/design.schema.json +722 -0
- package/schemas/film.schema.json +171 -15
- package/schemas/proposal.schema.json +133 -0
- package/skills/video-studio/SKILL.md +1316 -1066
- package/skills/video-studio/assets/design_fixture.json +141 -0
- package/skills/video-studio/assets/film.json +1 -2
- package/skills/video-studio/assets/golden_frames.json +12 -9
- package/skills/video-studio/assets/scenes.py +2207 -1190
- package/skills/video-studio/assets/voice_loudness.json +16 -0
- package/skills/video-studio/references/audio-variation.md +15 -11
- package/skills/video-studio/references/audio.md +36 -34
- package/skills/video-studio/references/change-impact.md +3 -3
- package/skills/video-studio/references/frame-qa.md +2 -2
- package/skills/video-studio/references/proposal.md +177 -0
- package/skills/video-studio/references/quality-gates.md +2 -2
- package/skills/video-studio/references/scene-grammar.md +311 -0
- package/skills/video-studio/references/sfx-design.md +1 -1
- package/skills/video-studio/references/style-packs.md +107 -168
- package/skills/video-studio/references/v08-quality.md +8 -8
- package/skills/video-studio/references/web-engine.md +1 -1
- package/skills/video-studio/references/word-timeline.md +2 -2
- package/skills/video-studio/scripts/designkit.py +2120 -0
- package/skills/video-studio/scripts/filmcheck.py +104 -33
- package/skills/video-studio/scripts/filmkit.py +153 -78
- package/skills/video-studio/scripts/grammar.py +619 -0
- package/skills/video-studio/scripts/musicgen.py +2043 -0
- package/skills/video-studio/scripts/preflight.py +10 -3
- package/skills/video-studio/scripts/previewkit.py +849 -0
- package/skills/video-studio/scripts/propose.py +825 -0
- package/skills/video-studio/scripts/qa_frames.py +45 -10
- package/skills/video-studio/scripts/qavmaf.py +77 -11
- package/skills/video-studio/scripts/render.py +505 -142
- package/skills/video-studio/scripts/scorekit.py +50 -1748
- package/skills/video-studio/scripts/selfcheck.py +851 -115
- package/skills/video-studio/scripts/stagewatch.py +21 -5
- package/skills/video-studio/scripts/stylekit.py +293 -570
- package/skills/video-studio/scripts/voicekit.py +502 -380
- package/skills/video-studio/scripts/webengine.py +15 -14
- package/tools/audio_similarity.py +57 -30
- package/tools/ci_check.py +9 -1
- package/tools/estimate.py +14 -8
- package/tools/golden_frames.py +56 -11
- package/tools/silhouette_qa.py +1263 -0
- package/docs/demo-pil-sheet.png +0 -0
- package/docs/styles/demo-results.json +0 -76
- package/docs/styles/sheet-8-styles.png +0 -0
- package/docs/styles/sheet-ai.png +0 -0
- package/docs/styles/sheet-craft.png +0 -0
- package/docs/styles/sheet-night.png +0 -0
- package/skills/video-studio/assets/score_demo.json +0 -307
|
@@ -43,7 +43,12 @@ STAGE_IO = {
|
|
|
43
43
|
# 开了 --strict-stale 就直接失败,而 --stage style 是全新项目的第一条生产命令。
|
|
44
44
|
# legacy 剧本本来就不写这个文件:check() 只在「上次记录的是具体指纹、现在没了」
|
|
45
45
|
# 时才报 output-missing,所以 legacy 下记为 missing 不会被当成永久过时。
|
|
46
|
-
|
|
46
|
+
# v1.0 提案层:proposal.json / design.json 由 propose.py 写(不经 render.py),
|
|
47
|
+
# 但**style 与 frames 都必须读它**——所以挂在 style 的 sources 里当"源头输入",
|
|
48
|
+
# 并在 frames 的 inputs 里再要一次 design.json(改设计 = 画面必须重渲)。
|
|
49
|
+
# 为什么放 sources 而不是 inputs:它不是 render.py 的任何 stage 产出的,
|
|
50
|
+
# 按 inputs 记会永远报"产物缺失"(proposal 还没跑时)。
|
|
51
|
+
"style": dict(sources=["script", "design"], inputs=[], outputs=["style.json"]),
|
|
47
52
|
"tts": dict(sources=["script"], inputs=["style.json"],
|
|
48
53
|
outputs=["tts.json", "voice_plan.json"]),
|
|
49
54
|
"layout": dict(sources=["script"],
|
|
@@ -57,7 +62,7 @@ STAGE_IO = {
|
|
|
57
62
|
"audio": dict(sources=["script"],
|
|
58
63
|
inputs=["tts.json", "timeline.json", "music.wav", "sfx.wav"],
|
|
59
64
|
outputs=["audio.wav"]),
|
|
60
|
-
"frames": dict(sources=["script", "scenes"],
|
|
65
|
+
"frames": dict(sources=["script", "scenes", "design"],
|
|
61
66
|
inputs=["timeline.json", "audio.wav", "cues.json"],
|
|
62
67
|
outputs=["silent.mp4"]),
|
|
63
68
|
"mux": dict(sources=["script"], inputs=["silent.mp4", "audio.wav"], outputs=[]),
|
|
@@ -146,10 +151,21 @@ HARD_KINDS = ("source-changed", "output-missing", "no-manifest", "input-stale")
|
|
|
146
151
|
SOFT_KINDS = ("input-pending", "source-pending")
|
|
147
152
|
|
|
148
153
|
|
|
154
|
+
SRC_LABEL = {"script": "剧本 film.json",
|
|
155
|
+
"scenes": "画面代码 scenes.py",
|
|
156
|
+
"design": "设计 design.json(propose.py --confirm 冻结的那份)"}
|
|
157
|
+
|
|
158
|
+
|
|
149
159
|
def _src_fp(kind, sources):
|
|
150
|
-
"""源头输入指纹:script
|
|
160
|
+
"""源头输入指纹:script=剧本、scenes=场景代码、design=冻结设计。"""
|
|
151
161
|
p = (sources or {}).get(kind)
|
|
152
|
-
|
|
162
|
+
if not p:
|
|
163
|
+
return "missing"
|
|
164
|
+
return _fp(p, ".")
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def _src_label(kind):
|
|
168
|
+
return SRC_LABEL.get(str(kind), str(kind))
|
|
153
169
|
|
|
154
170
|
|
|
155
171
|
def snapshot(work, stage, sources=None):
|
|
@@ -236,7 +252,7 @@ def check(work, stage, sources=None, self_built=False, pending=(), _seen=None):
|
|
|
236
252
|
was = old_src.get(kind, "missing")
|
|
237
253
|
if now == was:
|
|
238
254
|
continue
|
|
239
|
-
fname =
|
|
255
|
+
fname = _src_label(kind)
|
|
240
256
|
if str(stage) in planned:
|
|
241
257
|
# 源头变了 + 本轮马上就要重跑本阶段 = 正常待办,不是过时。
|
|
242
258
|
# 不软化的话,「改一句台词 -> --stage all --strict-stale」会在第一个 stage
|