diff --git a/docs/video-pipeline.md b/docs/video-pipeline.md index 6d0a320..99d1f2f 100644 --- a/docs/video-pipeline.md +++ b/docs/video-pipeline.md @@ -3,7 +3,7 @@ This is the production lane for films about the work: showcase previews, the LinkedIn and X films, launch reels and GIFs. It is not website motion. The skill builds pages; this document records how the repository produces and publishes video -with free, locally run tools, and what each tool's licence actually says. +with locally run tools, and where a tool requires a paid licence. Rules that hold for every stage: @@ -18,10 +18,10 @@ Rules that hold for every stage: | Stage | Tool | Licence | How this repository uses it | |---|---|---|---| -| Capture a browser run | Playwright recording | Apache-2.0 | `tools/page-proof/record-gallery.mjs` scrolls each example and records it deterministically | +| Capture a browser run | Playwright recording | Apache-2.0 | `tools/page-proof/record-gallery.mjs` records timed scroll passes; this real-time capture is not frame-deterministic | | Capture a screen or camera | OBS Studio | GPL-2.0 | Manual capture for talking-head or live demo footage | | Compose titles and cuts | FFmpeg filters | LGPL, GPL with GPL components | `tools/render-linkedin-promo.mjs` composes the LinkedIn film from captures | -| Compose a video in React | Remotion | Free for individuals, for-profit organisations with up to three employees and non-profits; other companies need a company licence | Optional route for templated films. `compile-choreography.mjs` can emit a paused, fixed-time GSAP timeline that a frame-by-frame renderer such as Remotion or HyperFrames seeks per frame; the repository itself has no Remotion dependency | +| Compose a video in React | Remotion | [Free for individuals, for-profit organisations with up to three employees and non-profits; other companies need a company licence](https://github.com/remotion-dev/remotion/blob/main/LICENSE.md) | Optional route for templated films. `compile-choreography.mjs` can emit a paused, fixed-time GSAP timeline that a frame-by-frame renderer such as Remotion or HyperFrames seeks per frame; the repository itself has no Remotion dependency | | Voiceover | Qwen3-TTS, run locally | Apache-2.0 | Optional; needs a GPU for comfortable speed. Earlier films used the owner's own avatar-service account | | Cut silences | Auto-Editor | Unlicense | `auto-editor input.mp4 --margin 0.2sec` before a manual pass | | Clean and mix audio | Audacity | GPL | Noise reduction, levels, music ducking | @@ -31,17 +31,25 @@ Rules that hold for every stage: ## Delivery presets +These commands need an FFmpeg build with `libx264`; burned-in captions also need +the `subtitles` filter (`libass`). The landscape preset fits and pads to 1920×1080; +the square preset deliberately crops. Review that crop before publishing. + ```sh -# 1080p landscape, platform-safe -ffmpeg -i edit.mov -c:v libx264 -crf 20 -preset slow -pix_fmt yuv420p \ +# 1080p landscape, preserve the composition with padding +ffmpeg -i edit.mov \ + -vf "scale=1920:1080:force_original_aspect_ratio=decrease:force_divisible_by=2,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1" \ + -c:v libx264 -crf 20 -preset slow -pix_fmt yuv420p \ -movflags +faststart -c:a aac -b:a 160k out-1080.mp4 # square for feeds ffmpeg -i edit.mov -vf "scale=1080:1080:force_original_aspect_ratio=increase,crop=1080:1080" \ -c:v libx264 -crf 20 -pix_fmt yuv420p -movflags +faststart -c:a aac out-square.mp4 -# burned-in captions -ffmpeg -i out-1080.mp4 -vf subtitles=captions.srt -c:a copy out-1080-captions.mp4 +# burned-in captions, retain the delivery encoding and streaming header +ffmpeg -i out-1080.mp4 -vf subtitles=captions.srt \ + -c:v libx264 -crf 20 -preset slow -pix_fmt yuv420p -movflags +faststart \ + -c:a copy out-1080-captions.mp4 # poster ffmpeg -i out-1080.mp4 -ss 00:00:03 -frames:v 1 -q:v 2 poster.jpg diff --git a/skills/cinematic-scroll/references/bake-pipeline.md b/skills/cinematic-scroll/references/bake-pipeline.md index 003d370..04b2292 100644 --- a/skills/cinematic-scroll/references/bake-pipeline.md +++ b/skills/cinematic-scroll/references/bake-pipeline.md @@ -11,7 +11,7 @@ plays them under the same rules as any other media mechanism. | Need | Mechanism | Dependency | Static state | |---|---|---|---| | Scroll drives the sequence on desktop | Scrubbed video, as in [product reveal](product-reveal.md) | None; a `