File formats¶
Shotwork writes two kinds of document. Both are plain JSON text you can open in any text editor, and neither contains footage: they point at your video files where they already are.
| Extension | Called | What it holds |
|---|---|---|
.shotwork |
shot list | The videos you marked, every shot in them, and the fields those shots carry. |
.swreel |
reel | Which shots play, in what order, for how long, and what sits over and under them. |
Shot list¶
| Key | Holds |
|---|---|
schema_version |
The format version. Currently 5. |
fields |
The shot list's own metadata fields, copied from the preset it started from. |
sources |
One record per video. |
shots |
One record per shot. |
exports |
Reserved for a later version; nothing writes it yet. |
A source¶
| Key | Holds |
|---|---|
path |
The video's full path, as of the last save. |
relative_path |
The path from the shot list's own folder, or empty when the video is outside that folder or on another drive. |
file_fingerprint |
A short signature of the file that recognizes it after a move or rename. It is not an integrity check. |
fps_num, fps_den |
The exact frame rate as a fraction, for example 24000 and 1001. |
frame_count, width, height |
The video's length in frames and its frame size. |
start_timecode |
The timecode embedded in the file. |
has_vfr |
Whether the video has a variable frame rate. |
interest_points |
Every interest point on this video, by frame and level. |
A shot¶
| Key | Holds |
|---|---|
in_frame, out_frame |
The first and last frame of the shot, both included. |
name, tags, rating, notes, restricted |
What you entered in the detail panel. |
values |
Every preset field's value, by field id. |
created_at, updated_at |
When the shot was made and last changed, in UTC. |
A shot list stores frames only. Seconds and timecode are worked out from the frame rate whenever Shotwork shows them.
Reel¶
A reel is an edit decision, not a render. It never stores frame positions: Shotwork works them out from your shot lists every time it opens the reel, so a reel cannot carry arithmetic that has gone out of date.
| Key | Holds |
|---|---|
schema_version |
The format version. Currently 20. |
name |
The reel's name. |
timeline_fps |
The frame rate as a fraction, or empty to follow the footage. |
items |
The shots, gaps and cards, in playing order. |
trim |
Which part of a shortened shot plays: its start or its middle. |
max_seconds |
The length budget, or empty for none. |
include_restricted |
Whether restricted shots were allowed when the reel was made. |
notes |
Notes, such as an AI assistant's reasons for its order. |
music_tracks |
Each song's file, window on the reel, offset, level and fades. |
fades |
Fades on clip edges. |
default_template, template_overrides |
The reel's overlay template by name, and any per-shot overrides. |
overlay_fade_frames |
How long an overlay takes to fade in after a cut. |
viewport_seconds |
The length of the reel timeline's canvas. |
replace_uses_interest_point |
Whether a replacement starts at the new shot's interest point. |
An item¶
| Kind | Stores |
|---|---|
| Shot | The shot's id, how long it holds (empty to play the whole shot), and, once changed, its trim anchor and scale. |
| Gap | Its length in seconds. |
| Card | Whether it is an image, color or title card, how long it holds, and the image path, color or template name. |
Files from other versions¶
- An older file opens and is upgraded as it loads. Nothing is lost, and the next save writes the current format.
- A file saved by a newer Shotwork refuses to open, with Could not open shot list or Could not open reel. Update Shotwork to open it.
Beside exported clips¶
Export shots writes a metadata folder beside
the clips, with one JSON file per clip. Each holds the clip's path relative to
that folder, the whole shot record with the interest points inside its range,
the source video's path, the frames actually exported including handles, the
preset, and when it was exported.
Each clip also carries a small copy in its own comment tag: the shot's id, name, tags, project and exported frames. A clip separated from its folder still says what it is.
Overlay templates¶
One JSON file per template, in the overlay_templates folder of
Shotwork's app data. Each lists its items with their zone,
kind, text or tag field, image path, font, size, color, scale and offset. Reels
refer to a template by name, so a reel moved to another computer shows its
overlay only if a template of that name exists there.