WebsiteGet Ultimate VJ
DocumentationThe workspace

Importing media

On this page

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.

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:

text
<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