Expand description
ffcine triage: a searchable clip index from proxies, before anything is rendered.
Per clip, from the DJI .LRF proxy when there is one: a contact strip and scene cuts
(scene), a speech map (vad), runaway/dead/dark flags (flags), and a word-timed
transcript from one batched GPU whisper run (transcribe). The result is index.json
(index), searchable with search, and a static clip page (page) for picking clips.
snap moves proposed in/out points onto word boundaries and silence.
Clips come from a directory scan or a list (clips) until the ffcine-ingest catalog lands;
see docs/triage.md.
Re-exports§
pub use index::Clip;pub use index::Flag;pub use index::FlagKind;pub use index::Index;pub use index::Span;pub use index::Transcript;pub use index::Word;pub use index::timecode;pub use search::Hit;pub use search::search;pub use snap::Prefer;pub use snap::SnapParams;pub use snap::snap;
Modules§
- clips
- Which clips to triage: the
ffcine-ingestcatalog (DIR/catalog.json) when there is one, with its corrected clocks and proxy paths; otherwise a directory scan or a list of paths. - flags
- Clip flags: runaway takes (left recording), dead stretches, dark clips, blips.
- index
- The triage index: one JSON file (
index.json) with every clip’s analysis. Fields are only ever added; readers ignore unknown ones, so an older index stays readable (versionbumps when a field changes meaning). - location
- Where each clip was shot, from the GPS of phone photos in Immich taken around the same time. The Pocket has no GPS; the phones always do.
- page
- The clip page: one static
index.html(strips beside it) that the editor can open from a share or an Immich/Syncthing folder, search, and mark clips Use/Skip before anything is rendered. Picks live in the browser and leave asapprovals.json(Export), whichApprovalsreads. - scene
- Scene cuts and picture activity from small luma frames, online so a 4 h clip never sits in memory.
- search
- Full-text search over transcripts:
ffcine search "konbini"-> clip + timecode. - snap
- Snap proposed in/out points to word boundaries and silence, so a line is never cut mid-word (a line that ended on “in ni-”).
- strip
- Contact strips: a clip’s thumbnails side by side in one JPEG.
- transcribe
- GPU transcripts with word times: one faster-whisper process per run, model loaded once, every clip with speech fed through it as a batch (no tool queue, no per-clip model load).
- vad
- Speech map: an energy VAD on 16 kHz mono audio, band-limited to the voice range so wind rumble and hiss count less. Rough by design: it drives the speech map, the dead-stretch flags and silence snapping; whisper runs its own Silero VAD for transcription.