Media management

File details, search, filters, sorting, tags and collections, where each file is used, relinking missing files, and proxies for heavy footage.

The Project bin knows each file's details and helps find, group and track footage. Everything here is organization: none of it changes what plays or exports.

Metadata. The editor reads every file in media/ and library/ with ffprobe (via GET /api/media-info) and writes what it finds onto the media entry. These fields are read-only - they describe the file:

keydoes
fpsvideo frame rate (29.97, 25, 59.94 …); absent for stills and audio
codecvideo codec (h264, hevc, prores, vp9 …), or the image format (png, mjpeg)
audioCodec · audioChannels · sampleRatefirst audio stream: codec, channel count (0 = the file has no audio), Hz
size · bitratefile size in bytes · overall bitrate, bits per second
width · height · durationas before; filled in when missing (phone footage shot rotated reports its upright size)

Without ffprobe on PATH only size is filled in; the browser still probes duration, width and height.

Organizing. favorite: true stars a file; tags is a list of free-form labels (at most 24, each up to 32 characters, matched without regard to case). collections at the top of the document group media across folders - a file can be in any number of them, while it sits in one folder (folderId).

Usage. A file's placements are the clips that show it, on the main timeline and inside every composition. A video and the audio stems linked to it count as one placement, so a shot used twice reads "used 2×".

In the editor, the Project tab has:

Offline media. A file is offline when its src names nothing under media/ or library/ - it was moved, renamed or deleted. The editor checks on load and whenever those folders change. An offline file's clips stay where they are: the timeline hatches them red (⚠ Offline), the monitor and the export draw a Media offline slate in the picture's place, and its audio is silent. The bin marks the file OFFLINE, says how many are missing, and the Show filter gains ⚠ Offline. The Export dialog warns before rendering one. Files under media/ may sit in subfolders (/media/archive/a.mp4).

Proxies. Heavy footage - 4K, HEVC, ProRes, long phone clips - can stutter while you scrub and play. A proxy is a light copy the editor plays instead while you edit: H.264 at 540p (or 720p / 1080p, never larger than the source), a keyframe every 12 frames so seeking is quick, the source's own timestamps (frame for frame - no frames added or dropped) and its first audio stream. The edit always refers to the original: the timeline, project.json and every clip stay the same whether proxies are on or off.

Export always reads the originals, and so do fablecut_frame (timeline mode), fablecut_scopes, tracking and every other measurement - the players switch to the original files for the render and back afterwards. A proxy only changes how smoothly the preview runs, never the result.

Agents: