@dsh-gis/dsh-video-studio-skill 0.9.1 → 1.0.4

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.
Files changed (63) hide show
  1. package/CHANGELOG.md +473 -0
  2. package/README.md +263 -327
  3. package/THIRD_PARTY_NOTICES.md +2 -2
  4. package/package.json +9 -10
  5. package/schemas/design.schema.json +722 -0
  6. package/schemas/film.schema.json +31 -42
  7. package/schemas/proposal.schema.json +133 -0
  8. package/skills/video-studio/SKILL.md +1216 -1123
  9. package/skills/video-studio/assets/design_fixture.json +141 -0
  10. package/skills/video-studio/assets/film.json +2 -4
  11. package/skills/video-studio/assets/golden_frames.json +13 -10
  12. package/skills/video-studio/assets/scenes.py +153 -65
  13. package/skills/video-studio/assets/voice_loudness.json +16 -0
  14. package/skills/video-studio/references/appearance.md +123 -0
  15. package/skills/video-studio/references/audio-variation.md +74 -93
  16. package/skills/video-studio/references/audio.md +64 -66
  17. package/skills/video-studio/references/change-impact.md +5 -5
  18. package/skills/video-studio/references/{v08-quality.md → delivery-gates.md} +16 -18
  19. package/skills/video-studio/references/frame-qa.md +48 -16
  20. package/skills/video-studio/references/pipeline.md +4 -4
  21. package/skills/video-studio/references/pitfalls.md +22 -3
  22. package/skills/video-studio/references/proposal.md +160 -0
  23. package/skills/video-studio/references/quality-gates.md +11 -11
  24. package/skills/video-studio/references/scene-authoring.md +2 -2
  25. package/skills/video-studio/references/scene-grammar.md +40 -42
  26. package/skills/video-studio/references/sfx-design.md +8 -6
  27. package/skills/video-studio/references/web-engine.md +8 -8
  28. package/skills/video-studio/references/word-timeline.md +9 -9
  29. package/skills/video-studio/requirements.txt +9 -13
  30. package/skills/video-studio/scripts/designkit.py +2115 -0
  31. package/skills/video-studio/scripts/filmcheck.py +22 -48
  32. package/skills/video-studio/scripts/filmkit.py +2980 -2904
  33. package/skills/video-studio/scripts/gates.py +4 -4
  34. package/skills/video-studio/scripts/grammar.py +73 -13
  35. package/skills/video-studio/scripts/musicgen.py +2042 -0
  36. package/skills/video-studio/scripts/preflight.py +14 -7
  37. package/skills/video-studio/scripts/previewkit.py +848 -0
  38. package/skills/video-studio/scripts/propose.py +825 -0
  39. package/skills/video-studio/scripts/qa_frames.py +73 -39
  40. package/skills/video-studio/scripts/qaasr.py +26 -7
  41. package/skills/video-studio/scripts/qavmaf.py +89 -23
  42. package/skills/video-studio/scripts/render.py +545 -231
  43. package/skills/video-studio/scripts/scorekit.py +55 -1755
  44. package/skills/video-studio/scripts/selfcheck.py +815 -215
  45. package/skills/video-studio/scripts/sfxkit.py +27 -26
  46. package/skills/video-studio/scripts/stagewatch.py +24 -8
  47. package/skills/video-studio/scripts/stylekit.py +207 -888
  48. package/skills/video-studio/scripts/voicekit.py +508 -387
  49. package/skills/video-studio/scripts/webengine.py +71 -72
  50. package/tools/audio_similarity.py +64 -37
  51. package/tools/ci_check.py +20 -14
  52. package/tools/estimate.py +34 -29
  53. package/tools/golden_frames.py +72 -28
  54. package/tools/silhouette_qa.py +520 -168
  55. package/docs/demo-pil-sheet.png +0 -0
  56. package/docs/styles/demo-results.json +0 -76
  57. package/docs/styles/sheet-8-styles.png +0 -0
  58. package/docs/styles/sheet-ai.png +0 -0
  59. package/docs/styles/sheet-before-after.png +0 -0
  60. package/docs/styles/sheet-craft.png +0 -0
  61. package/docs/styles/sheet-night.png +0 -0
  62. package/skills/video-studio/assets/score_demo.json +0 -307
  63. package/skills/video-studio/references/style-packs.md +0 -283
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
- """preflight.py — 渲染前资源闸门(v0.8.0)。
2
+ """preflight.py — 渲染前资源闸门。
3
3
 
4
4
  为什么要有它:缺字形(✓ / emoji / 生僻字)和坏 TTS 音频都是「渲染完才报」的问题——
5
5
  filmkit.glyph_missing_chars() 检测本身是准的(正常中文 [],✓/↵/emoji 检出),
@@ -12,7 +12,7 @@ preflight 不新写检测器,只把现成检测前移,并把结论整理成
12
12
  2 glyphs 所有上屏文本逐字过 filmkit.glyph_missing_chars;
13
13
  字段:text / sub / big / kicker / lead / note / title / end_text /
14
14
  chapter / items[].text(含 timeline.scenes 里的同名字段)
15
- 按模板实际绘制权重检测:big/kicker=bold、lead=light、sub=reg+light、
15
+ 按夹具实际绘制权重检测:big/kicker=bold、lead=light、sub=reg+light、
16
16
  items=reg、title/chapter=reg、text=bold+reg
17
17
  3 tts work/tts/*.mp3 若存在,必须能被 ffprobe 解析出音频流;
18
18
  文件名要能对上行 id,时长要与台词长度相符(过短=截断/坏缓存)
@@ -40,7 +40,7 @@ ffmpeg/ffprobe 探测口径与 filmkit 一致:FILMKIT_FFMPEG 优先,找不
40
40
  """
41
41
  from __future__ import annotations
42
42
 
43
- __version__ = "0.8.0"
43
+ __version__ = "1.0.4"
44
44
 
45
45
  import argparse
46
46
  import json
@@ -70,7 +70,7 @@ FIELD_WEIGHTS = {
70
70
  "big": ("bold",),
71
71
  "kicker": ("bold",),
72
72
  "lead": ("light",),
73
- "note": ("bold",), # 模板未用;按 QA 的 check_glyphs 口径(bold)兜底
73
+ "note": ("bold",), # 夹具未用;按 QA 的 check_glyphs 口径(bold)兜底
74
74
  "title": ("reg", "bold"), # 右下角 brand 画 reg;hook 缺 big 时画 bold
75
75
  "end_text": ("bold",),
76
76
  "chapter": ("reg",),
@@ -635,9 +635,16 @@ def _check_web_page(script, engine, errors, warnings, checks):
635
635
  entry = _web_entry(script)
636
636
  if not os.path.isfile(entry):
637
637
  tpl = _skill_web_template()
638
- hint = ("把技能自带的模板页整目录拷到 %s(模板:%s),或写 film.json 的 web.entry "
639
- "指向你自己的页面" % (os.path.dirname(entry), tpl)) if tpl else \
640
- "把 <SKILL_DIR>/assets/web 拷到项目 web/,或写 film.json 的 web.entry"
638
+ # assets/web is a demo page for smoke-testing the web path, not a template.
639
+ # This skill ships no templates: web-path films need the user own page (PIL path is zero-copy).
640
+ if tpl:
641
+ hint = ("(web 引擎需要**你自己的页面**:把技能自带的**示例页**拷到 %s 只能跑通链路,"
642
+ "它只有 3 段占位场景、不是给你改字就出片的模板;正片请写自己的页面,"
643
+ "或在 film.json 写 web.entry 指向它。示例页:%s)"
644
+ % (os.path.dirname(entry), tpl))
645
+ else:
646
+ hint = ("写 film.json 的 web.entry 指向你自己的页面;或改用 PIL 路线"
647
+ "(--engine pil,不需要任何页面,零拷贝即可出片)")
641
648
  _err(errors, "web_page_missing", "engine=web 但入口页不存在:%s(%s)"
642
649
  % (entry, hint), "web_page")
643
650
  _check(checks, "web_page", "fail", entry)