Skip to main content

Crate ffcine_triage

Crate ffcine_triage 

Source
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-ingest catalog (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 (version bumps 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 as approvals.json (Export), which Approvals reads.
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.

Enums§

Error

Type Aliases§

Result