feat(content): swap cosmos Orion to a text-free SVS flythrough
Replaces the JPL "Orion: Dust and Death" primary (captioned throughout — we'd cropped it, losing framing) with STScI's "Flight Through the Orion Nebula" (visible light, NASA SVS 30957) — a full-frame, text-free flythrough of the same nebula. Sourced via the content pipeline (trim 10–34s + crossfade-loop → 1080p master + base); cosmos-orbit / abyss-cosmos transitions regenerated from it. - build_pool_manifest META: cosmos -> SVS 30957, license CC-BY-class (NASA/ESA/ STScI), new trim window. - Remove the now-obsolete decaption_cosmos() crop helper (the new source needs no caption removal). - docs/content-candidate-pool.md: record the source swap; drop the crop note. 269 passed, 2 skipped. New clip verified text-free + full-frame by-eye; final look to be confirmed by the operator. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -55,8 +55,9 @@ CCBY_STSCI = "CC-BY-class — credit NASA, ESA, STScI"
|
||||
# --- Per-clip provenance: id -> (title, license, source) ---
|
||||
META: dict[str, tuple[str, str, str]] = {
|
||||
# cosmos
|
||||
"cosmos": ("Orion Nebula flythrough (NASA/JPL-Caltech)", PD,
|
||||
"NASA/JPL-Caltech — images.nasa.gov JPL-20221122-SOLSYSf-0001 (Orion); trim ~30–54s, crossfade-loop"),
|
||||
"cosmos": ("Orion Nebula flythrough (NASA/ESA/STScI)", CCBY_STSCI,
|
||||
"NASA SVS 30957 orion_vis-1920x1080 (Flight Through the Orion Nebula, visible light); "
|
||||
"trim 10–34s, crossfade-loop. Text-free — replaces the captioned JPL 'Dust and Death' clip."),
|
||||
"cosmos_galaxies": ("Flying Through Galaxies (NASA SVS)", PD,
|
||||
"NASA SVS a014950 14950_Galaxies_FlyThrough_4k; trim 8–32s, crossfade-loop"),
|
||||
"cosmos_hudf": ("Hubble Ultra Deep Field zoom (NASA/ESA/STScI)", CCBY_STSCI,
|
||||
@@ -408,35 +409,6 @@ def generate_media() -> None:
|
||||
print(f"generated transitions/{a}-{b}.mp4 (+ .rev) from real bases")
|
||||
|
||||
|
||||
# Fraction of frame HEIGHT kept (from the top) to drop the NASA burned-in
|
||||
# lower-third captions on the cosmos Orion clip ("DUST FILAMENT", "BLUE BUBBLE",
|
||||
# …). The "Orion: Dust and Death" visualization is captioned throughout, so
|
||||
# trimming can't avoid them — we crop past them instead. ~1.5x tighter framing.
|
||||
COSMOS_CAPTION_KEEP = 0.66
|
||||
|
||||
|
||||
def decaption_cosmos() -> None:
|
||||
"""Re-crop the cosmos Orion base/master IN PLACE to remove NASA's burned-in
|
||||
lower-third caption band, keeping 16:9 (crop width to match, center-x, top-
|
||||
anchored) then re-fitting to 1920x1080. Run ONCE after (re)sourcing the Orion
|
||||
clip — re-running would crop again. Media is gitignored, so this is the
|
||||
recorded, reproducible form of the operation."""
|
||||
ff = _ffmpeg()
|
||||
f = COSMOS_CAPTION_KEEP
|
||||
vf = f"crop=iw*{f}:ih*{f}:iw*{(1 - f) / 2}:0,scale=1920:1080"
|
||||
for name, crf in (("base", "20"), ("master", "18")):
|
||||
p = MEDIA / "cosmos" / f"{name}.mp4"
|
||||
if not p.exists():
|
||||
continue
|
||||
tmp = p.with_suffix(".decap.mp4")
|
||||
subprocess.run([
|
||||
ff, "-y", "-i", str(p), "-vf", vf,
|
||||
"-c:v", "libx264", "-crf", crf, "-pix_fmt", "yuv420p", "-an", str(tmp),
|
||||
], check=True, capture_output=True)
|
||||
tmp.replace(p)
|
||||
print(f"de-captioned cosmos/{name}.mp4 (kept top {int(f * 100)}%)")
|
||||
|
||||
|
||||
def main(argv: list[str]) -> None:
|
||||
manifest = build_manifest()
|
||||
MANIFEST.write_text(json.dumps(manifest, indent=2, ensure_ascii=False) + "\n")
|
||||
|
||||
Reference in New Issue
Block a user