Metadata-Version: 2.4
Name: navig-video
Version: 0.2.2
Summary: NAVIG Video module — render a channel's video formats (kinetic episodes, bulletins, motion cards) from its workspace of texts, plates and voice: timeline → frames → ffmpeg, with per-destination encode variants. A first-party navig plugin (free, toggleable).
Author-email: NAVIG Development Team <opensource@navig.run>
License-Expression: Apache-2.0
Project-URL: Homepage, https://navig.run
Project-URL: Documentation, https://navig.run/docs
Keywords: navig,cli,agent,automation,plugin,video,render,ffmpeg,kinetic
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Multimedia :: Video
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: navig-sdk>=2.14.0
Requires-Dist: typer>=0.14.0
Requires-Dist: rich>=13.7.0
Provides-Extra: render
Requires-Dist: navig-audio>=0.3.0; extra == "render"
Requires-Dist: navig-media-core>=0.1.0; extra == "render"
Requires-Dist: navig-generate>=0.2.0; extra == "render"
Requires-Dist: Pillow>=10.0; extra == "render"
Requires-Dist: numpy>=1.24; extra == "render"

# navig-video

<!-- navig:plugin-card:start -->
<!-- Generated by scripts/gen_plugin_catalog.py — edit the plugin's pyproject.toml, not this block. -->

> Render a channel's video formats (kinetic episodes, bulletins, motion cards) from its workspace of texts, plates and voice: timeline → frames → ffmpeg, with per-destination encode variants.

**Works on its own** — its own CLI, no navig required · v0.2.2 · not on PyPI yet (install from source below)

**On its own** (no navig needed)

```bash
pip install "git+https://github.com/navig-run/plugins#subdirectory=navig-video"
navig-video --help   # no navig needed
```

**With navig**

```bash
pip install "git+https://github.com/navig-run/plugins#subdirectory=navig-video"
navig video --help
```

<details><summary>Commands</summary>

| Command | What it does |
|---|---|
| `navig video cut` | 🎬 Render an EDL — the editable timeline — into its outputs. |
| `navig video doctor` | Deep check: workspace layout, engines, ffmpeg, fonts. Exit 1 if a requirement fails. |
| `navig video kinetic plan` | 🗓 The timeline without rendering — beat times, words, plates, cuts. |
| `navig video kinetic render` | 🎬 Render kinetic episodes — voice timing drives every cut. |
| `navig video parity` | ⚖ Do two renders match? Container, pixels, audio — the porting contract. |
| `navig video status` | Workspace, engines and render verbs — one glance at what is wired. |

</details>

<!-- navig:plugin-card:end -->

Render a channel's video formats — kinetic episodes, bulletins, motion cards and
per-destination encode variants — from its workspace of texts, plates and voice:
timeline → frames → ffmpeg. It runs on its own as `navig-video`, and inside navig as
`navig video`.

## On its own

```bash
pip install navig-video                 # adds the `navig-video` command
navig-video status                      # workspace, ffmpeg, engines, verbs
navig-video doctor                      # deep checks — exit 1 names what is missing
pip install "navig-video[render]"       # + navig-audio, navig-media-core, navig-generate, Pillow, numpy
```

The workspace (media, copy, voice, beds) stays where it is — pass `--workspace` or
set `NAVIG_WORKSPACE`. Media never enters this repo: only the rendering code lives
here. ffmpeg is probed on `PATH` (never a pip dependency); keys resolve from the
environment or the shared vault (`navig-vault`).

## Inside navig

The same commands are `navig video …`.

## Why it exists

The channel's render engines (word-timed kinetic, bulletin pages, per-destination
encode) are a video domain of their own — audio owns voice and beats, generate owns
stills and the frame engine, and this plugin owns the timelines that turn them into
video. A render verb ships only at parity with the channel's existing script output
(same frames, duration and loudness); until then the scripts stay the fallback.
