firehose> #llmops

Multimodal Video Ingestion

To make a video legible to a text+vision LLM you reduce it to the two channels the model can read: frames (sampled still images = the visual channel) and a transcript (aligned text = the audio channel). Ingestion is then two jobs: get a good transcript, and choose good frames — then fuse them so the model sees "what was on screen while this was said" rather than two disconnected streams. The transcript is the cheap half (pull free platform captions when they exist; fall back to ASR — Whisper/Groq/OpenAI — when they don't, as with Loom or Zoom recordings). The frames are where the real design choices live, because you have a fixed attention/token budget and must decide which stills earn a place — see Scene-Change Frame Sampling. The fused product is a structured, timestamp-keyed report, not a raw dump.

This is the exact contract firehose consumes: claude-watch's /scry emits a manifest.json of frames[] (each with a t_s) and transcript.segments[] (each with start_s/end_s), and the distiller fuses each frame with the transcript segment whose span contains its timestamp. firehose never touches ffmpeg/yt-dlp — it owns the manifest contract and consumes it only.

Claims


Linked from