Ways to import
| Entry point | Notes |
|---|---|
| ⌘I or File → Import media… | Files begin at the selected column of the selected layer |
| Import media button in the library sidebar | Same behaviour |
| Click / release on an empty tile | Opens the Source Browser for that slot |
| A clip's Import / replace media… context item | Replaces that one clip's source |
| File drop onto the console | Handled by the same import path |
Multiple files may be selected. They occupy successive columns; importing more files than there are remaining columns appends new trailing columns one at a time.
Original files are never moved or copied. A set stores paths.
What happens during import
Before anything enters your set, each file is validated off the main thread by decoding a real
first frame - not by probing its container. Two files may be validated concurrently. If validation
takes longer than a few seconds you will see Validating N media files… in the status line.
If the target changed while the file was being decoded - you switched banks, or replaced the slot -
that file is skipped with "Import target changed while decoding…", and a changed set abandons the
whole batch. Failures report as <filename>: <reason> and appear as import notes.
The import/replacement path grows columns and appends a trailing empty column as needed. That is not an unconditional bank invariant: explicitly removing the last empty column can leave the last remaining column occupied.
Supported media
See Media formats for the full picture. In short:
- Video and movie files: AVFoundation handles most formats first; a bundled LGPL FFmpeg 9.0.2 build handles everything else, including Matroska, WebM, AVI, WMV/ASF, MXF, MPEG-TS, MPEG program streams, FLV and Ogg.
- Still images: whatever ImageIO can open. There is no extension whitelist - ImageIO decides.
- Animated images: GIF and APNG only, via ImageIO.
- Audio-only files become clips that draw a measured waveform instead of video frames.
Every source reports which backend actually decoded it - AVFoundation, FFmpeg · <codec>,
ImageIO · GIF or ImageIO · APNG - so you can see why a file behaves the way it does.
Thumbnails
Thumbnails are generated at prepare time and cached:
- Video: the first frame, scaled to fit inside 320 × 180.
- Stills: ImageIO's thumbnail at up to 320 pixels per side, honouring orientation. (A "full size" still decode caps at 8192 pixels per side.)
- Audio-only: a measured waveform drawn instead of a frame.
- Full-resolution material is never retained for inactive imports; only the thumbnail persists.
The thumbnail cache is cleared entirely once it passes 256 entries.
Missing media: the Media manager
Composition → Media manager… lists media whose path no longer resolves and offers both Relink and Collect composition.
A path counts as missing when it cannot be resolved or is not a regular file. Relative paths are resolved against the saved set's folder.
Relink
Pick one replacement file. Every clip referencing that exact path is updated - the panel tells you how many beforehand. The replacement is validated before any state changes, and the commit re-checks nothing else moved. The whole relink is one undo step, and it refreshes the new file's duration and file-tempo estimate for those clips.
Your original files are never touched.
Collect composition
Writes a portable copy of the whole set plus hash-verified copies of the media:
<folder>/Composition.uvj
<folder>/Assets/<sha256>-<original filename>
Sets also tend to be reopened anywhere: a collected set resolves its relative Assets/… paths
automatically.
Details worth knowing:
- The destination folder must not already exist, and its parent must.
- Each referenced file is hashed once (SHA-256, in 1 MiB chunks) even when many clips share it.
- The result is verified by byte readback, a successful decode, and a zero-missing-media check.
- Collect is disabled while any media is missing - relink first.
- On failure, partial files are retained and reported. Your originals are untouched.
Import notes
Anything the importer could not accept becomes an import note, visible from the status row. Notes
are preserved in the saved set, so reopening later still explains what happened. .avc imports and
unsupported or missing media produce notes rather than silently dropping content.
Import limits
There is no single byte-size ceiling for all media. Separate-poster APNG input is limited to 256 MiB during normalization. Other bounds depend on the decoding path: dimensions, decoded-frame memory, worker capacity and operation deadlines can also reject a file.
Limits that do apply during import and handling:
| Limit | Value |
|---|---|
| FFmpeg video dimensions | 8192 per side, 33,554,432 pixels total |
| Animated image dimensions | 8192 per side, 33,554,432 pixels total |
| Still-image decode | ImageIO scales to at most 8192 pixels per side |
| Separate-poster APNG input | 256 MiB |
| Per-frame decoded video bytes | 128 MiB |
| Concurrent decode workers | 2, process-wide |
| Operation / frame deadlines | 5 seconds each |
| Animation frames | 100,000 maximum |