The -well tools · Spoolwell · User Guide
Spoolwell icon

Spoolwell™ User Guide

Video Finishing Toolbox

The guide that comes with Spoolwell 1.13.9, the current version

Contents
  1. What Spoolwell is
  2. Quick start
  3. Check videos for problems
  4. Merge tape captures by day
  5. Trim the blue screen
  6. Split a video at break points
  7. Add or fix a title
  8. Cover a ragged edge with black bars
  9. Set a video's date
  10. Convert the sound to AAC
  11. Make a video details inventory
  12. Work from Lightroom Classic
  13. Settings
  14. The dashboard
  15. The browser dashboard
  16. Where your files go
  17. GPU acceleration
  18. Command line
  19. Troubleshooting
  20. Install
  21. License and free trial
  22. Updates
  23. Help
  24. Appendix: What's new
  25. Appendix: What's in the folder
  26. Appendix: License and credits

What Spoolwell is

Spoolwell finishes home movies and tape transfers. It can:

  • Check videos for corruption and sound that drifts out of sync.
  • Merge a tape's clips into one dated video per recording day.
  • Trim the VCR blue screen, or split a tape into separate videos.
  • Title a video in your studio branding and fix it later, or re-date a video given the wrong date.
  • Convert the sound to AAC, and list every video and its details in an inventory.

It works losslessly where it can and keeps sound in sync. Originals are replaced only if you ask, and the tools that make videos start with Preview only ticked.

It comes three ways, with one license for all:

  • The dashboard on Windows: Start menu > Spoolwell Video Toolbox.
  • The browser dashboard: the same tools in your browser, on a Mac or Windows.
  • The Lightroom Classic plug-in: select videos, then Library > Plug-in Extras.

Quick start

  1. Install: on Windows run ThePictureOrg-Spoolwell-Setup-<version>.exe; on a Mac unzip ThePictureOrg-Spoolwell-Mac-<version>.zip and open Install Spoolwell Video Toolbox (see Install).
  2. Open Spoolwell Video Toolbox from the Start menu, or from Applications > ThePictureOrg on a Mac (it opens in your browser).
  3. What to do: click a task tile. To check videos, click Check videos.
  4. Target Media: click Folder... or File..., or type or paste a path. For the tools that make videos, leave Output Folder blank to put them in a folder next to the originals. A name on its own, with no drive, makes that folder inside the folder you're working on.
  5. Click Execute Task and watch the progress bar and the console log.
  6. When it finishes, click Open CSV Report.

In Lightroom Classic

Select videos in the Library and choose Library > Plug-in Extras > Check Videos for Problems. The result is in the Spoolwell fields of the Metadata panel; new videos from the other commands are added to your catalog.

Print the one-page Cheat Sheet (also Media-Toolbox-Cheat-Sheet.pdf in the docs folder) and keep it by the capture station.

Next: Check videos for problems, Merge tape captures by day, Trim the blue screen, Split a video at break points, Add or fix a title, Set a video's date, Convert the sound to AAC.

Check videos for problems

Use it on new captures, on a client's finished videos before they go out, or on an old drive to see what has decayed. Every frame is decoded, so a file that passes plays through to the end.

  1. What to do: Check videos.
  2. Target Media: a folder (tick Recursive Scan to include sub-folders) or one file.
  3. Tick Deep Analysis to also look for frozen or black picture, silence, clipped sound and sync drift (slower).
  4. Click Execute Task, then Open CSV Report: one row per file, PASS, WARN or FAIL.

Auto-Move Corrupted Files to '_On Hold' is ticked the first time you open the dashboard: each FAIL file is moved into an _On Hold folder next to it (see Quarantine). Untick it to leave files where they are.

Tips:

  • A WARN is a prompt to look at the file, not proof it's bad. Screen recordings, for example, can have no sound or long still frames.
  • Deep Analysis makes a scan noticeably slower on large files.
  • Files named ._something.mp4 (small files macOS leaves on FAT and exFAT drives) are skipped.

What the check looks for

Standard scan (always on). ffmpeg decodes the entire file to a null output. A file FAILS if ffmpeg exits with an error or logs any warning-or-higher message. It stops at the first error ("fail-fast") to save time. Because every frame is decoded, scan time is roughly proportional to the file's length.

Deep Analysis (optional). Adds checks that produce warnings rather than failures:

Check Flags Default sensitivity
Missing audio Video with no audio stream (NO_AUDIO) n/a
Sync drift Picture and sound start or end at different times (SYNC_DRIFT) more than one frame + 50 ms
Video freeze Frozen picture 3 s or longer
Black frames Black picture 2 s or longer
Silence Audio below -50 dB 1.5 s or longer
Clipping Audio stuck at peak level (CLIPPING) see Tuning the check

How findings are shown. Each finding is logged as one readable line with start, end and length, for example:

[ANOMALY] BLACK 00:02:15 - 00:02:58 (43.0s)
[ANOMALY] FREEZE 00:02:27 - 00:02:30 (3.2s)
[ANOMALY] SILENCE 00:10:04 - 00:10:09 (5.1s)

The same text goes into the CSV, so the report matches the console. A frozen picture inside a black stretch is reported as both, since a black screen is also still.

Result statuses

  • PASS: decoded cleanly, nothing flagged.
  • WARN: decoded cleanly, but Deep Analysis flagged something worth a look.
  • FAIL: decode errors or a non-zero ffmpeg exit code.

Supported containers: .mp4, .mov, .mkv, .avi, .m4v.

Quarantine

With Auto-Move enabled, each FAIL file is moved to an _On Hold folder next to it, or to -QuarantinePath on the command line. The name stands out in a folder list, so someone goes to look. Videos in a failed folder are skipped too. The move is a rename within the same folder, so nothing is copied. Name collisions get a numeric suffix (clip_1.mp4), so nothing is overwritten. The QuarantineAction column records the destination. On later runs, files already inside the quarantine folder are skipped. In a folder that can't be written to (a read-only folder, or a locked studio project), nothing is moved: the log and the QuarantineAction column say where each file would have gone.

Audit CSV columns: FileName, Status, FilePath, FileSizeMB, DurationSec (scan time, not video length), ErrorMessage, QuarantineAction, DetectedDate. For a FAIL, ErrorMessage holds the first ffmpeg error followed by any anomalies found before it stopped; for a WARN it lists the anomalies. Long lists are cut at 25 entries with "(+N more)". Rows are written as each file finishes, so a partial report survives a cancel or crash.

Tuning the check

  • Clipping too sensitive or not sensitive enough: adjust -ClipFlatFactor (higher = fewer, more severe hits) and -ClipMinFrames. The defaults are a starting point. Test on a file you know is clean and one you know is clipped. This detects hard digital clipping, not distortion from limiting.
  • A harmless ffmpeg warning causes false FAILs: add part of the message to the $benignPatterns list near the top of Test-Mp4Integrity.ps1.

From the command line

# Scan a folder recursively, write a CSV
.\Test-Mp4Integrity.ps1 -Path "D:\Videos" -Recurse -CsvLog "D:\report.csv"

# Deep analysis, and move failures to a chosen folder
.\Test-Mp4Integrity.ps1 -Path "D:\Videos" -Recurse -DeepAnalysis -Quarantine -QuarantinePath "D:\Bad"

# One file
.\Test-Mp4Integrity.ps1 -Path "D:\Videos\clip.mp4"
Parameter Description
-Path File or folder (required)
-Recurse Include sub-folders
-CsvLog Write the CSV report here
-Quarantine Move failed files
-QuarantinePath Destination folder for quarantine (default: _On Hold beside each file)
-DeepAnalysis Enable the extra detectors
-ClipFlatFactor Clipping threshold in dB (default 10)
-ClipMinFrames Frames over the threshold needed to flag clipping (default 3)

Merge tape captures by day

Groups capture files by the day they were recorded and makes one MP4 per day, with the clips in recording order. A day with a single clip is simply converted. Each MP4 is named and dated from its first clip, e.g. Masek_2001-12-01 17.08.25.mp4, both inside the file (creation time) and as the file's Windows dates. The originals are never changed.

Dashboard: click the Merge DV video files by day tile. The check's options are replaced by the merge fields:

Field What it does
File Prefix Text before the date in each file name, e.g. Masek_. Optional. Left blank, it comes from the family name (below).
Output Folder Where the MP4s go. Blank = a Merged folder inside the target folder.
Deinterlace On by default. Smooth 50 fps (PAL) or 59.94 fps (NTSC) motion. Off keeps the original interlaced frames.
Use file date if no recorded date Falls back to each file's Date modified. Off by default, so undated files are listed and left out instead of guessed.
Replace existing MP4s Otherwise days that already have an MP4 are skipped, so a stopped run can be restarted.
Preview only On by default. Lists the day groups, clips and output names without converting anything. Untick it to make the files.
Title No title (default), Title card or Overlay text, see Add or fix a title. The title is the day's date, e.g. August 1, 2004.
Family name Optional, e.g. The Smith Family, shown above the date on the title card. With File Prefix blank it also names the files: "The", words such as Family, Archives or Collection, and possessives are dropped, so The Smith Family Archives gives Smith_, The Smith-Jones Family gives Smith-Jones_, and The Smith and Jones Families gives Smith-Jones_. The log shows the prefix it chose.
Studio Branding In Settings (top right): your studio's name, card color and logo, shared with the blue screen tool. See Studio branding.

Titles. A title card adds 4 seconds before each day's video; an overlay writes the date over its first 4 seconds. See Add or fix a title.

Target Media must be a folder. Recursive Scan treats each sub-folder as its own tape: its days are merged separately (never mixed with another folder's clips), and its MP4s go into a Merged folder inside that sub-folder. With an Output Folder set, each tape gets a matching sub-folder there instead. To pool all sub-folders into one set of days, use -CombineFolders on the command line. When it finishes, Open Merge Report opens a CSV with one row per day (status, clips, date source, size, durations, and Time: how long the day took, start to finish). Each day's log also ends with that time, and the summary shows the total.

NTSC and PAL. Each file's size, frame rate and shape are read, so either kind works with no settings: NTSC 4:3 becomes 640×480, PAL 4:3 768×576, widescreen 854×480 or 1024×576. The pixels are made square, so nothing looks stretched. If one day mixes the two, the day takes the first clip's format.

Where the date comes from, first found wins: the date stored in the file, then exiftool (if present), then the file name (Scenalyzer's scene'20011201 17.08.25.avi and similar), then, only if allowed, the file's Date modified.

Problems it handles.

  • A clip ffprobe can't read, or one with no picture that can be decoded, is left out of its day with a warning (check it with the validator). The day is still made, named and dated from its first good clip, and marked WARN in the report. A day with no readable clips is marked FAIL.
  • Tape dropouts the DV decoder patches over are counted and reported as one note per day instead of hundreds of lines.
  • A clip with no aspect-ratio flag is treated as 4:3.
  • Each output is checked against the total length of its clips (within 0.25 s + 0.05 s per clip), and its picture and sound lengths are compared (a WARN when they differ by more than one frame + 50 ms).
  • Unlocked DV sound. On some camcorders the sound runs a touch faster or slower than the picture, so a long clip's sound ends a little before or after it. When a clip's PCM sound is off by more than half a frame but less than 2 %, it is gently stretched to the picture's length, so the two stay together to the end; a [SYNC] line in the log says by how much (in ppm). -NoAudioStretch turns this off.
  • Picture quality. Each clip is scaled once with a high-quality (Lanczos) filter, and the output carries color tags (PAL, NTSC or HD) so players show the colors as captured.

Speed. With Use GPU when available on (the default), each day is encoded on the graphics card when one is found, and on the CPU if that fails. DV has no GPU decoder, so decoding always uses the CPU. See GPU acceleration.

From the command line

.\Merge-VideosByDate.ps1 -SourcePath "D:\Smith\Captures" -Prefix "Smith_" -WhatIf
.\Merge-VideosByDate.ps1 -SourcePath "D:\Smith\Captures" -Prefix "Smith_" -CsvLog "D:\Smith\merge.csv"
.\Merge-VideosByDate.ps1 -SourcePath "D:\Smith\Captures" -Title Card -FamilyName "The Smith Family"

Other parameters: -Title (None, Card or Overlay), -TitleSeconds (default 4), -FamilyName, -TitleText, -OutputPath, -Recurse, -CombineFolders, -AllowFileDate, -NoDeinterlace, -Overwrite, -Encoder (Auto, CPU, NVENC, QSV, AMF or VideoToolbox; default Auto), -NoHwDecode (decode on the CPU), -Crf (quality, default 16), -Preset (default slow), -AudioBitrate (default 256k), -Extensions (default .avi, .dv), -SourceTimeIsUtc, -NoAudioStretch (don't stretch unlocked DV sound to the picture).

Trim the blue screen

When a VCR has no signal it shows a solid blue screen, so analog captures often start and end with blue, and sometimes have blue in the middle where the tape was blank. This tool finds those sections and makes a copy of each file without them. The originals are never changed.

Dashboard: click the Trim blue screen tile. Target Media can be one file or a folder (Recursive Scan includes sub-folders).

Field What it does
Cut Method Smart cut (recommended): re-encodes only the second or so around each cut and copies everything else untouched, so almost the whole tape stays bit-for-bit original. Full re-encode: re-encodes the whole file; slowest, use it if smart cut reports a problem. Smart cut re-encodes the whole file by itself when the capture's frame rate varies (dropped frames), because cutting it in place would move the sound; the log and report say smart cut not used: and why. Copy only: no re-encoding at all, but cuts move to the nearest keyframe (a little blue may remain) and there are no fades.
File Prefix Optional text put before each finished file's name: Shanahan gives Shanahan_1995-03-26.mp4 (an underscore is added after a letter or digit; end it with a space, _ or - to choose your own separator). Blank = taken from the family name if one is entered (The Shanahan Family gives Shanahan_), otherwise the original name. The title card still comes from the original name.
Output Folder Blank = a Trimmed folder next to each file.
Fade at mid-tape cuts On by default. A quick 0.3 s fade out and in where blue is removed from the middle. Cuts at the very start and end never fade.
Blue must be silent On by default. Blue with sound under it is kept and listed as [KEEP], because it may be a real recording with a lost picture. Blue that runs to the end of the tape is cut anyway: that is the tape after the recording stopped, and its sound is usually hiss. Untick to cut all blue.
Cut silent black at the start and end On by default. Many tapes also start and end on black. Black at the very start or end, where the sound is silent, is cut along with any blue next to it and listed as [BLACK]. Black in the middle of a tape is never cut, because fades between scenes are black, and black with sound under it is kept.
Replace existing MP4s Otherwise files that already have a trimmed copy are skipped.
Preview only On by default. Lists the blue sections found in each file without writing anything. Untick it to make the files.
Split into separate videos at the blue screens Off by default. Instead of one trimmed video, each stretch of picture between the blue screens becomes its own video. See Split at the blue screens.
Use GPU when available See GPU acceleration. Smart cut re-encodes so little that it always uses the CPU encoder, matched to the original's settings, so the joins are seamless.
Title No title (default), Title card or Overlay text. See Add or fix a title.
Family name Optional, e.g. The Smith Family. Shown only on a title card; with File Prefix blank it also gives the prefix (Smith_).
Studio Branding In Settings (top right): your studio's name, the title card color, and a logo (Logo...). See Studio branding.

What counts as blue. The picture must be strongly blue and almost flat (no detail), for at least 0.3 seconds (so the half-second blue flash some camcorders leave between recordings is cut too; shorter blue is listed as KEEP in the log and left in). Blue within a fraction of a second of the start or end is treated as the start or end. A file with no blue is listed as "No blue found" and not copied, unless its name starts with a date (see below).

The result keeps the original's name, recording date (inside the file and as the file's dates) and quality. If the file name starts with a date, such as 1998-10-25 Halloween.mp4 (also 1998_10_25, 1998.10.25 or 19981025), that date is used instead, both inside the file (creation_time, which Mylio, Lightroom, Photos and Windows read) and as its Date created and Date modified. A time right after the date (2001-12-01 14.23.10) is used too; a date on its own gets 12:00 noon, so no time zone can move it to the day before. Files whose names don't start with a date keep the original's dates. A file with no blue screen is normally left alone, but if its name starts with a date it gets an untouched copy (no re-encode) in the Trimmed folder with that date: an MP4, or a MOV for DV AVIs, whose DV picture and PCM sound don't fit in MP4. To turn this off from PowerShell, add -NoFileNameDate. Smart cut checks its own work (length and a test decode across every join) and falls back to a full re-encode if anything is off, so you never get a broken file. Open Trim Report opens a CSV with one row per file: status, method, the blue sections cut, the length before and after, Time (start to finish) and StepTimes, how long each step took (scan, keyframes, copy untouched, re-encode at cuts, sound, join, check, copy to output). The step times show where the time goes, for example how much a network share costs compared with a local drive.

If blue isn't detected, or real footage is cut, run with -WhatIf and look at the listed sections. Lower -MinBlueU (for example 150) if a pale blue screen is missed; lower -MaxSpread if a mostly blue real scene is caught. Blue under sound is never cut unless Blue must be silent is off, or the blue runs to the end of the tape. Black at the ends counts as black when the whole picture is dark (average luma 32 or less, on a 16 = black scale) with no color; for a lighter black, raise -MaxBlackY (for example 40). The command-line switch is -TrimBlack.

Split at the blue screens

Tick Split into separate videos at the blue screens (or add -Split on the command line) and each stretch of picture between the blue screens becomes its own video, named after the tape: 1998-10-25 Halloween - Part 01.mp4, - Part 02 and so on, in a Split folder next to the file (or the Output Folder). The blue itself is left out, exactly as when trimming.

  • Same quality and sync as a trim. Each part is cut the way a join is: with Smart cut only the frames from the cut to the next keyframe are re-encoded, the rest is copied untouched, each edge lands on the exact frame and the sound is cut at the same point, so it stays in sync. There are no fades at the edges.
  • Short slivers are left out. A moment of picture shorter than 2 seconds between two blue screens is listed in the log and not made into a video (-MinPartSeconds changes it).
  • Dates. Each part gets the tape's date plus the time its part starts (part 2 starting 14 minutes in is dated 12:14 on a noon-dated tape), so the parts sort in order in Mylio, Lightroom and Photos.
  • Titles. With a title card, each part gets one; the date line says which part it is ("October 25, 1998 · Part 2 of 5").
  • No blue found: the file is reported as "No blue found" and isn't split.
  • Preview only lists the parts that would be made, with their start, end and length.

Matching the original's settings

Smart cut reads the original's H.264 settings (reference frames, B-frames, entropy coding) and encodes the re-encoded pieces with the same ones, then checks the first piece. In the rare case some setting still differs, the method shows as smart (headers differ) and the report says which; most players don't mind. If a player refuses such a file, run it again with -StrictHeaders, which re-encodes the whole file instead in that case.

From the command line

.\Remove-BlueScreen.ps1 -Path "D:\Smith\Tapes" -WhatIf
.\Remove-BlueScreen.ps1 -Path "D:\Smith\Tapes\Tape 1.mp4" -CsvLog "D:\Smith\blue.csv"

Other parameters: -Prefix (text before each output file name), -Split (one video per part between the blue screens), -MinPartSeconds (default 2), -Title (None, Card or Overlay), -TitleSeconds (default 4), -FamilyName, -TitleText (your own title, for a single file), -OutputPath, -Recurse, -Mode (Smart, Reencode or Copy), -FadeSeconds (default 0.3; 0 = no fades), -IgnoreAudio, -MinBlueSeconds (default 0.3), -SilenceDb (default -50), -MinBlueU and -MaxSpread (detection thresholds; defaults 165 and 24), -SampleFps (default 5), -Encoder, -NoHwDecode, -Crf (default 16), -Preset (default slow), -AudioBitrate (default 256k), -Overwrite, -Extensions (default .mp4, .mov, .m4v, .mkv, .avi), -StrictHeaders (see Matching the original's settings).

Split a video at break points

Splits one video into separate videos at the places you choose: for example a two-hour tape into Birthday party, Christmas morning and Lake trip. You scrub through the video in a player, add a break wherever a new video should start, optionally name each part, and leave out parts you don't want. The original is never changed.

How parts are made, skipped and joined

Read this first; everything else in this section builds on it.

1. Breaks cut the video into parts. Each break point is the first frame of a new part. A part runs from its break up to the next break, or to the end of the video. The part before the first break is the Start part. So 4 breaks always make 5 parts.

2. Every part is either kept or skipped. A part is kept unless you untick its Keep box (in the text, a name starting with skip means the same). A skipped part is removed completely, from its break up to the next break. Nothing else is removed.

3. Each kept part becomes its own file, named or not. A name only labels the file: ... - 02 Interview.mp4 instead of ... - Part 02.mp4. Parts are never merged because of their names. That includes suggested breaks you didn't name: each one still starts a new file.

4. To make two parts one, delete the break between them. The part then runs on to the next break. Remove Suggestions deletes all the suggested breaks you haven't named or moved in one go.

5. Join puts all the kept parts in one video. With Join the kept parts into one video ticked, the kept parts are joined in order into one file, ... - Edited.mp4, with a quick fade where a skipped part was removed. Kept parts that follow each other run on with no fade, so a break you left in by mistake doesn't show. Without it, you get one file per kept part.

6. Nothing is made until you run it. Ticking, naming and adding breaks only change the plan. The files are made when you click Execute Task. The Result line under the list in the player says what you'll get, before you run it.

Worked example: a newscast. A family member appears in a news segment before and after a commercial break. You want both segments and nothing else.

 Start         Break 1           Break 2         Break 3           Break 4
 |  news before  | Interview pt 1  | commercial  | Interview pt 2  | rest of tape  |
 0:00          12:04             15:30           18:12             21:45          end
   skip           Keep              skip           Keep               skip
Part Runs Keep Name Without Join With Join
Start 0:00 to 12:04 off removed removed
Break 1 12:04 to 15:30 on Interview part 1 News - 01 Interview part 1.mp4 first half of News - Edited.mp4
Break 2 15:30 to 18:12 off removed removed (a quick fade here)
Break 3 18:12 to 21:45 on Interview part 2 News - 02 Interview part 2.mp4 second half of News - Edited.mp4
Break 4 21:45 to the end off removed removed

If Find Scene Changes had also suggested a break at 13:30 and you left it in, Interview part 1 would come out as two files (01 Interview part 1 from 12:04 to 13:30, and Part 02 from 13:30 to 15:30), or as one video with Join ticked. Delete it, or use Remove Suggestions, to keep the segment in one piece.

Cutting out a short stretch, such as a half-second blue flash. A skipped part always runs to the next break, so a short stretch needs a break at each end: stop on the first blue frame and press M, step to the first good frame after it and press M again, then untick Keep on the little part between. The trim tool (see Trim the blue screen) also finds blue flashes of 0.3 s or more by itself.

Marking the breaks

Dashboard: click the Split a video tile and pick the video with File....

  • Windows dashboard: click Find / Mark Breaks... next to the Break Points box. A player window opens.
  • Browser dashboard: the player opens below the options when you pick the file (or click Find / Mark Breaks...).

If the video has no break points yet, the player starts Find Scene Changes by itself, so the suggested breaks appear while you watch; you can mark your own at the same time. Use the button whether you want the breaks found for you, want to mark them yourself, or both.

In the player

Control What it does
Play / Pause (Space) Plays or stops.
‹ Frame / Frame › (Left / Right arrow) Steps one frame back or forward, so you can stop on the exact first frame of a new scene.
‹ 1s / 1s › (Shift + arrow), « 10s / 10s » Jumps 1 or 10 seconds (1 second is 30 frames on NTSC tape, 60 on 59.94p files). The slider (Windows) or the timeline bar (browser) jumps anywhere.
⇤ Start / End ⇥ (Home / End) Goes to the first or last frame of the video.
Keys while typing The keys above are left alone while you type a name or edit the text box. Press Esc (or click the picture or the slider) to give them back to the player. Ticking Keep doesn't take them away.
Add Break Here (M) A new video starts at the frame shown.
Break points list One line per break. The break the frame shown belongs to is highlighted, so after N, P or a click you can see which one you're on. Windows: two parts side by side. On the left, a list of the parts: a Start row for the part before the first break, then one row per break (yellow time = suggested). Each row has a Keep tickbox (untick it to leave that part out) and a name box (type a name, then press Enter or click elsewhere). Click a time to go to it; the part shown is highlighted. On the right, the same break points as text, which you can also edit directly: delete a line to remove a break. Then click Use These Break Points. Browser: a table; click a row to go to its break, type a name, untick Keep to leave a part out, Remove to delete a break.
Break markers A row of markers under the slider (Windows) or the timeline (browser), one per break: yellow for a suggestion, blue for yours, white for the break shown. Click one to go straight to that break; hover over it for its time and name. The browser's colored timeline also shows the parts, with left-out parts striped.
Find Scene Changes Looks through the whole video and suggests a break at each sudden change of scene. See Finding the scene changes for you below.
‹ Break / Break › (P / N) Jumps to the previous or next break and stops there, showing the first frame of the new part.
Move Nearest Break Here (H) Moves the break nearest the frame shown (within 10 seconds) to that frame. Use it when a break is a frame or two off.
Remove Suggestions Removes the suggested breaks you haven't named or moved.
Save Break Points (browser) Saves the list as <video name>.marks.txt in the Split folder, so you can come back to it. The player reloads it the next time you open that video, in either dashboard.

Finding the scene changes for you. This starts by itself when you open a video with no break points; click Find Scene Changes to run it again (for example with another setting). The toolbox reads the whole video once, looking for frames where the picture changes suddenly from one frame to the next: where the camcorder was stopped and started again, or one recording was taped over another. Each one is added as a break point marked suggested (a yellow marker under the timeline, and # suggested with a number after the time). The number is how sudden the change was, from 0 to 100: Fewer (the default) suggests changes of 12 and up, Normal 8 and up, More 5 and up, so low numbers are the ones most worth checking. A 2-hour tape takes several minutes; the progress shows next to the button, and you can keep marking by hand meanwhile.

The suggestions are a starting point, so check them before splitting:

  1. Press N (Break ›), or click a yellow marker. The player stops on the first frame of the new part. Press Left to see the last frame before it, Right to come back.
  2. If the break is right, name the part in its name box (or, in the Windows text box, after # suggested 23: it's moved in front of the note) or just press N for the next one. If it's a frame or two off, step to the right frame and press H (Move Nearest Break Here). If it isn't a real change, remove it (Remove in the browser; delete the line in Windows).
  3. Add any that were missed with M, as usual.
Setting What it does
Fewer (sharpest changes only) The default. Only clear-cut changes. Least to check; may miss a cut between two similar scenes.
Normal Also gentler changes (8 and up, against 12 for Fewer).
More (gentler changes too) Also changes between similar-looking scenes. More to check.

Changing the setting and clicking Find Scene Changes again is instant (the scan is kept in the temp folder for a week). A new search replaces the suggestions you haven't named or moved; the breaks you made, named or moved stay, and no suggestion is added within a second of one of them.

What it ignores: slow changes (fades, pans, zooms), a camera flash or a brief dropout in the middle of a scene (the picture after it is the same as before), and a run of static or noise between two recordings, which counts as one change with the break on the first clean frame after it. No suggested part is shorter than 5 seconds. It can miss a cut that fades through black into a dark scene, or a cut between two very similar shots; that's what the check is for. Suggestions are always on exact frames, and splitting works exactly as for breaks you mark yourself.

Then set the other fields and click Execute Task (Preview Split while Preview only is ticked lists the parts without making them):

Field What it does
Cut Method Smart cut (recommended), Full re-encode or Copy only; the same as for the blue-screen tool.
File Prefix Optional text put before each part's file name, as for the blue-screen tool: Shanahan_1998-10-25 Halloween - Part 01.mp4. Blank = taken from the family name if one is entered.
Output Folder Blank = a Split folder next to the video.
Title / Family name / Studio Branding A title card or overlay on each part. A part with a name gets its name as the title; one without gets the file's title and "Part 2 of 5".
Join the kept parts into one video Off: each kept part is its own file. On: the kept parts are joined, in order, into one video (<video name> - Edited.mp4 in the Split folder), with a quick (0.3 s) fade out and in at each place a part was left out, as the blue-screen tool does. The joins are cut exactly as the parts would be, so the sound stays in step.
Replace existing MP4s, Preview only, Use GPU when available As for the other tools.

The result. With Join ticked, one video, 1998-10-25 Halloween - Edited.mp4, of the kept parts in order. Otherwise each part kept becomes an MP4 named after the original: 1998-10-25 Halloween - Part 01.mp4, or 1998-10-25 Halloween - 02 Birthday party.mp4 when the part has a name. Parts are numbered in order, counting only the ones made. Each break lands on the exact frame; with Smart cut only the frames up to the next keyframe are re-encoded and the rest is copied untouched, and the sound is cut at the same point, so it stays in sync. Each part is dated like the parts of a blue-screen split (the original's date plus the part's start time). A copy of the break points used is saved next to the parts as <video name>.marks.txt. Open Split Report opens a CSV listing the break points and the files made.

Videos the player can't play. Windows' player and the browsers play H.264 MP4 and MOV files directly. For other formats (DV AVI captures, MPEG-2, some MKVs) the player offers Make a Preview Copy: ffmpeg makes a small 480-line copy, frame for frame the same as the original, in your temp folder (kept for a week, then deleted). You mark the break points on the copy; the original is what gets split. A 2-hour DV tape takes a few minutes to copy.

If the Windows player closes by itself. The player runs as a separate program, so only the player closes; the dashboard stays open, and the break points made so far are kept (they are saved as you go). The dashboard then offers to open the player again on a preview copy, which Windows plays more reliably. While the copy is being made, the picture area shows its progress and time left, and the break list, markers and Find Scene Changes already work. The event is noted in Logs\dashboard_trace.log and Logs\dashboard_error.log.

DV and other non-H.264 sources can't be smart cut, so their parts are re-encoded to H.264 (on the GPU when available), as the blue-screen tool does.

Break-point format

One line per break: the time, then an optional name for the part that starts there.

00:12:30.5   Birthday party
00:45:10     skip static
01:02:00     Christmas morning
  • Times can be 1:02:03.5, 62:03.5, 3723.5, or a timecode 01:02:03:15 where the last number counts frames. A comma works as the decimal mark.
  • A name starting with skip leaves that part out (here, the static from 45:10 to 1:02:00). A line at 0 names the first part, or skips it.
  • Lines starting with # are notes, as is anything after a # on a line (00:12:30.500 # suggested 23 is a suggested break with no name). Each time is moved to the nearest frame. A line that isn't a time, or is past the end, is listed as a warning and ignored.

From the command line

.\Split-VideoAtMarks.ps1 -Path "D:\Smith\1998-10-25 Halloween.mp4" -Marks "0:12:30.5 Birthday party; 0:45:10 skip; 1:02:00 Christmas" -WhatIf
.\Split-VideoAtMarks.ps1 -Path "D:\Smith\Tape 3.mp4" -MarksFile "D:\Smith\Tape 3 marks.txt"
.\Split-VideoAtMarks.ps1 -Path "D:\Smith\News 1996.mp4" -Marks "0 skip; 12:04.2 Interview; 15:30 skip; 18:12.4 Interview; 21:45 skip" -Join

Other parameters: -Join (join the kept parts into one video), -OutputPath, -Prefix, -Mode (Smart, Reencode or Copy), -Title, -TitleSeconds, -FamilyName, -Encoder, -NoHwDecode, -Crf, -Preset, -AudioBitrate, -FadeSeconds, -MinPartSeconds, -StrictHeaders (all passed on to the cutter, see Trim the blue screen), -NoFileNameDate, -Overwrite, -CsvLog. Remove-BlueScreen.ps1 does the cutting, so it must be in the same folder.

Suggested break points from the command line, to check and edit before splitting:

.\Find-SceneChanges.ps1 -Path "D:\Smith\Tape 3.mp4" -OutFile "D:\Smith\Split\Tape 3.marks.txt"

Saved as <video name>.marks.txt in the Split folder, as here, the dashboards' player loads them when you open the video. Parameters: -Sensitivity (Low = Fewer, the default; Normal; High = More), -MinGapSeconds (default 5), -Rescan (read the video again rather than reuse the saved scan). Nothing is split by this script.

Add or fix a title

The merge, blue-screen and split tools can put a title on each video they make: a title card before it, or a title over its first seconds. Title is No title unless you choose otherwise. A title can be fixed later without making the video again.

Title card or overlay

The title comes from the file name with its leading date taken off, along with endings such as -Final, -Edited or v2, and underscores turned into spaces. 1998-10-25 Halloween to Christmas-Final.mp4 gets the title Halloween to Christmas and the date October 25, 1998. A name with no date gets a title only.

  • Title card: a 4-second card before the tape, with the logo, the family name (if given), the title, the date and "Preserved by studio name". It fades in from black and out to black, and the tape fades in after it. The video gets 4 seconds longer, and the sound starts exactly 4 seconds later so it stays in sync.
  • Family name left blank: the card takes the family name from the folders the video is in: the project folder (the folder just under Projects, or under a year folder in ProjectArchives, however deep the video is inside it), or else the nearest folder with "family" in its name, such as The Ortiz Family. Underscores read as spaces. The log says which name it used. When none is found, the dashboard asks before it starts (also for Show Title Sample): type a family name and click Use this name (it goes into the Family name box), or click No family name to make the card without one (asked again only for another Target Media). A family name found in the folder names is used on the card only, not for the file prefix. On the command line, -NoFamilyName leaves it off on purpose.
  • Overlay text: the title and date at the lower left of the first 4 seconds of the picture, fading in and out on soft dark boxes. The length doesn't change. The family name isn't shown. A camcorder date stamp in the lower right usually stays clear, unless the title is very long.
  • Quality: only the first few seconds (up to the next keyframe) are re-encoded. The rest of the tape is still copied untouched with smart cut.
  • Blue-screen tool: files with no blue screen are processed too when a title is chosen, so every tape gets one.
  • A title can be fixed later (a spelling, a missed line) without making the video again: see Fix a title.
  • Modes: titles work with Smart cut and Full re-encode. Copy only can't add a title, because it never re-encodes; the log says so and the file is trimmed without one.
  • Merged days: the title is the day's date, e.g. August 1, 2004, with the family name (if given) above it on a card. A Title Text puts your own title above the date.
  • Split parts: a part with a name gets its name as the title; one without gets the file's title and "Part 2 of 5".

Type the title for a tape

Once Title is set to a card or an overlay, two boxes appear under it: Title Text (the big line) and Second Line (the smaller line under it, usually the date; tick None for no second line). Left blank, they keep the automatic text described above. What you type is used for every video the run makes, so they are meant for a single tape (or a single day when merging). With split parts, a typed title takes the place of the part names, and "Part 2 of 5" is still added. The boxes are cleared when you choose another Target Media. On the command line: -TitleText, -SubText and -NoSubText.

See the title before you start

Show Title Sample (next to Execute Task) draws the title of the first videos, up to three, exactly as the finished videos will show it, and opens them in a window. Use Previous and Next to look through them. A card is shown on its own; an overlay is shown over a frame of the video, so you can judge it against the real picture. Nothing is cut, merged or changed.

  • Where: Merge DV video files by day, Trim blue screen and Split a video, once Title is set to a card or an overlay, and Fix a title.
  • What it uses: the same file names, dates, part names, family name, Title Text, Second Line and Studio Branding the real run would use. Change any of them and click Show Title Sample again.
  • For a single tape: when the sample is of one video (Trim blue screen) or one day (merging) and Title Text and Second Line are empty, the sample puts the text it drew into them, so you can correct a word and click Show Title Sample again.
  • Looks right: the sample window's green button closes it and starts the job (the same as the main button, so with Preview only ticked it previews).
  • Fix a title: the sample shows the new title, with your typed lines and the old ones you left blank, after the old title has been found in each video.
  • The pictures are kept in Reports\Title samples in your user data folder (the last five samples). On the command line, -TitleSample <folder> does the same.

Studio branding

For your studio, or another studio using the toolbox. The title card uses three settings, set in the Settings window (top right of either dashboard), saved in branding.json in your user data folder (see Where your files go) and shared by both dashboards and the tools (until you change something, the sample branding.json in the toolbox folder is used):

Setting What it does
Studio name Shown at the bottom of the card as "Preserved by name". Blank = no credit line.
Color The card's background. The text color is picked automatically (light on dark colors, dark on light ones).
Logo Shown at the top of the card, and at the top left of the dashboards (from their next start). PNG with a transparent background works best. It must be a real picture file (PNG, JPEG, GIF, BMP or ICO); any other file is ignored and the logo stays as it was. No logo = the text moves up to the middle of the card.

To use your own typeface, put Title-Bold.ttf and Title-Regular.ttf (or .otf) in assets\fonts. Otherwise the bundled Playfair Display is used. For exact text and accent colors, add "TextColor": "#RRGGBB" and "AccentColor": "#RRGGBB" to branding.json.

Fix a title

Fixes the title card or title overlay of a video the toolbox has already made, for example a spelling mistake in the title or the family name, or a line that was missed. Only the title changes: the rest of the picture and all of the sound are kept exactly as they were, and the video stays the same length.

Dashboard: click the Fix a title tile, pick the video (File...) or a folder of them (Folder...; Recursive Scan includes sub-folders), type what should change, and click Show Title Sample to see the new title as it will look (see See the title before you start). Preview Titles lists, in the log, for each video, the title it has now and what it will become. Untick Preview only and run it again to make the change.

Field What it does
New Title The big line, spelled as it should be. Blank keeps the old one.
Second Line The smaller line under the title, usually the date. Blank keeps the old one; None removes it. When the old title was just the date (the merge tool's default) and you type a title, the date moves to this line, as it would have when the video was made.
Family Line Title cards only: the line above the title, e.g. The Smith Family. Blank keeps the old one; None removes it.
Old Overlay / old seconds Only when the log asks for them (see Videos made by version 1.11.6 or earlier below).
Output Folder Blank (usual) = each video is replaced where it is, and its original is moved into an Old titles folder next to it. With a folder here, the new videos go there and the originals stay where they are.
Preview only On by default. Lists what would change, without changing anything.

How it works.

  • The title is redrawn with your current studio branding, at exactly the same length, so the video's length and the sound's timing don't change.
  • Only the first few seconds are re-encoded: the title and the picture up to the next keyframe, usually a second or two after the title. Everything after that is copied untouched, and the sound is copied untouched from start to finish.
  • A title card is simply drawn again.
  • An overlay is first taken off the picture: the dark box under the old text is lifted back out, and the old letters are filled in from the picture around them. Then the new text is drawn. Fixing a spelling leaves no visible trace. Where new text is much shorter than the old, a soft smudge can show where the old letters were, until the overlay would have faded out.
  • Before anything is replaced, the new video is checked against the original: the same number of frames, the sound the same length and starting at the same moment, the picture after the title identical frame for frame, and the join decodes cleanly. If any check fails, the original is left exactly as it was and the log says why.
  • The new video keeps the original's name, recording date and Date created / Date modified. When you are happy with the new videos, delete the Old titles folder (or keep it, if you have room).
  • If a family name was misspelled, the file name may carry it too (Smiht_2001-12-01.mp4). The tool doesn't rename files; rename it yourself if you need to.

Titled videos the toolbox makes remember their title inside the file (its kind, its length and each line), so the tool knows exactly what to take off and what to keep. Videos made by version 1.11.6 or earlier don't, so the tool works it out:

  • A title card is found from the picture (it fades in from black, holds still, then fades out to black), with its length. Its text isn't needed, because the whole card is redrawn; the new card starts from what the tool would have written (the title from the file name, or the date), so type the New Title and Family Line you want on it.
  • An overlay's old text must be known exactly before it can be taken off. The tool tries what the merge and blue-screen tools would have written from the file name (the date, or the title and the date) and only goes ahead when one of them sits exactly on the picture: every letter in place, and the box ending where it should. It also finds how long the overlay showed. If it can't, the video is marked FAIL, nothing is changed, and the log says what it needs: type the old text exactly in Old Overlay, with the title and second line separated by | (e.g. Hawaii Vacation|July 4, 1998), and, if the log asks, its length in old seconds (Title Seconds when it was made).

Good to know.

  • Works on the H.264 MP4 / MOV videos the toolbox makes. A video with no title is listed as FAIL and left alone.
  • Taking an overlay off needs the ordinary (yuv420p) picture format the toolbox makes; other videos are listed and left alone.
  • The few re-encoded seconds are made on the CPU at high quality (CRF 16, matched to the rest of the video). It takes seconds per video, plus the time to copy the file; on a NAS the network sets the pace.
  • Open Title Report lists each video with its old and new title, where the new one went, and why any failed.

Command line:

.\Replace-VideoTitle.ps1 -Path "D:\Smith\Merged\Smith_1998-10-25.mp4" -TitleText "Halloween 1998" -WhatIf
.\Replace-VideoTitle.ps1 -Path "D:\Smith\Merged" -FamilyName "The Smith Family" -CsvLog "D:\Smith\titles.csv"
.\Replace-VideoTitle.ps1 -Path "D:\Jones\Tape 3-Final.mp4" -OldText "Hawai Vacation|July 4, 1998" -TitleText "Hawaii Vacation"

Other parameters: -SubText, -NoSubText, -NoFamilyName, -Title (Auto, Card or Overlay: the kind already in the video; Auto finds it), -OldSeconds, -OutputPath, -Recurse, -NameSuffix (the Settings > File Names word, used only to read titles from file names), -Crf (default 16), -Preset (default slow), -Extensions (default .mp4, .m4v, .mov), -StrictHeaders (as for the blue-screen tool). A video whose frame rate varies is skipped with the reason in the log, because its title can't be replaced without moving the sound.

Cover a ragged edge with black bars

Old tapes often show a ragged or jittery edge along the bottom of the picture (where the tape heads switch), and sometimes along the top. Black Bars covers those lines with black. The picture is not stretched or zoomed, so the video keeps its size and shape; only the covered lines turn black. It is optional: blank boxes add no bars.

  • Where: Merge DV video files by day, Trim blue screen and Split a video, in both dashboards.
  • Top and Bottom: the number of picture lines to cover at each edge, from 0 to 200 (a standard tape has 480 or 576 lines; 6 to 12 at the bottom is typical).
  • Set Black Bars... opens a frame of the tape with two yellow lines. Drag the top line down and the bottom line up until the ragged edges are in the dark part. Click a line to pick it, then the Up and Down keys move it one line. Earlier frame and Later frame step through the tape, because the edge can change along it. No bars puts both lines back to the edges, and OK fills in the boxes. With a folder in Target Media, the frames come from its first video.
  • See it first: Show Sample (or Show Title Sample when a title is chosen) shows a frame with the bars, as the finished video will look, and nothing is made. Its Looks right button starts the job.
  • Re-encoding: every frame changes, so Trim blue screen and Split a video re-encode the whole video (Full re-encode) instead of the smart or copy cut; the log says so. Merging already re-encodes. The sound is untouched.
  • A title card is not covered: the bars are only on the tape's own picture.
  • The boxes are cleared when you choose another Target Media. On the command line: -MaskTop and -MaskBottom.

Set a video's date

For a video that was given the wrong date, for example a merged tape whose clips had no recorded date, or a video made from a capture done on another day. You type the date it was really recorded and the tool writes it into the video. Nothing else changes: the picture and the sound are copied, not re-encoded.

Dashboard: click the Set a video's date tile, pick the video (File...) or a folder of them (Folder...; Recursive Scan includes sub-folders), and type the New Date as year-month-day, for example 2004-08-01. Add a time if you know it: 2004-08-01 14:30. With no time, the video gets noon. Preview Dates lists each video and the date it would get. Untick Preview only and run it again to set the date.

What it changes.

  • MP4, MOV, M4V and MKV: the date stored inside the video (the one Lightroom, Apple Photos, Google Photos, Mylio and Windows sort by), and the file's Date created and Date modified. The video is copied with its new date, checked against the original (the same streams and length), and only then put in the original's place.
  • AVI: only Date created and Date modified, because an AVI has no place for a recorded date.
  • The date is local time on the computer you're using. Every video in a folder gets the same date, so pick one video when each needs its own.
  • The date can't be in the future or before 1950. A date the tool can't read is refused and nothing changes.
  • The file name is not changed. If the name carries the wrong date too, rename it yourself.
  • Open Date Report lists each video with its old and new date.

Command line:

.\Set-MergedVideoDate.ps1 -Path "D:\Smith\Merged\Smith_2001-12-01.mp4" -Date "2001-12-01 17:08" -WhatIf
.\Set-MergedVideoDate.ps1 -Path "D:\Smith\Merged" -Date "2001-12-01" -CsvLog "D:\Smith\dates.csv"

Other parameters: -Recurse, -SourceTimeIsUtc (the date you type is UTC, not local time), -KeepBackup (keeps the video as it was, as <name>.before-date.mp4).

Convert the sound to AAC

Converts the sound in videos to AAC, the format phones, TVs, Mylio and photo apps all play, and leaves the picture exactly as it is. Useful for DV captures and edits with uncompressed (PCM) sound, which some players won't play and which takes a lot of space, and for camcorder files with AC-3 sound. Any sound format works: PCM, FLAC, AC-3, MP2, MP3, ALAC, Opus, DTS and others. Sound that is already AAC is copied as it is, and a file whose sound is all AAC is listed and left alone. Files are not renamed.

Dashboard: click the Convert sound to AAC tile, and pick a folder (Recursive Scan includes sub-folders) or a file.

Field What it does
Output Folder Blank = an AAC folder next to each file. The new file has the same name.
Replace the originals Off by default, and not remembered between sessions. Each new file takes its original's place, with the same name, and the original is deleted, but only after the new file has passed every check below. The dashboard asks before it starts. The Output Folder isn't used.
Replace existing converted files Otherwise files already converted are skipped, so a stopped batch can be run again.
Preview only On by default. Lists each file's sound tracks and what would be done, without converting anything.

What stays the same. The picture is copied packet for packet, never re-encoded. Every sound track is kept, in order, with its language and channels; tracks that aren't AAC are encoded at 256k per stereo pair (-AudioBitrate changes it). Chapters, the recording date inside the file and the Windows Date created and Date modified are kept.

The container. MP4, M4V and MOV files stay MP4, M4V and MOV, so their names don't change at all. Other videos have to change container, so their extension changes: AVI, MKV, MTS, MPG and VOB become MP4 when the picture fits in MP4 (H.264, HEVC, MPEG-2 ...) and MOV otherwise (DV captures, for example). MP4 and MOV store AAC's start-up delay, so players skip it and the sound stays exactly in step. Audio files (add -Extensions .wav and so on from PowerShell) become M4A. A file with subtitle tracks is left alone, because the new file couldn't keep them.

Every new file is checked before it goes anywhere:

  • Picture: identical to the original's. The SHA-256 of every video packet must match. Where the new container stores the same frames differently (H.264 from AVCHD .MTS into MP4), every decoded frame is compared instead.
  • Sound: every track decodes without errors, starts at the same moment relative to the picture (within one AAC frame, about 21 ms, which is AAC's start-up delay that players skip), and is as long as the original's. This is measured from the packets themselves, not from the file's header.
  • Copy: the file is made in your temp folder and then copied to its place once, so a NAS is read once and written once. The copy's SHA-256 must match the file that was checked.
  • If ffmpeg reports any problem reading the original, the file is not converted.

A file that fails any check is marked FAIL in the log and the report, the reason is given, and its original is left exactly as it was. Open AAC Report lists each file with its sound before and after, the picture and sync checks, the lengths, whether the original was replaced, and the time each step took.

Space and time. The temp folder (usually on C:) needs room for the largest file; a 2-hour DV tape is about 26 GB. Encoding the sound is quick; most of the time goes on reading the original, writing the new file and reading the copy back to check it, so on a NAS the network sets the pace. The report's step times show where it goes.

If a replace is interrupted (power cut, network drop), the original is never lost: during the swap it is renamed <name>.aac-original.<ext> for a moment. If you ever find one, rename it back (remove .aac-original) unless a file with the plain name is next to it, then run the tool again. A <name>.aac-partial.<ext> file is an unfinished copy and can be deleted.

Command line:

.\Convert-AudioToAac.ps1 -Path "D:\Jones\MiniDV" -Recurse -WhatIf
.\Convert-AudioToAac.ps1 -Path "\\PICTUREORG\Projects\Jones\Final\MiniDV" -Recurse -ReplaceOriginal -CsvLog "D:\Jones\aac.csv"

Other parameters: -OutputPath, -AudioBitrate (default 256k; 256k, 256 and 256000 all mean the same), -Overwrite, -Extensions (default .mp4, .mov, .m4v, .mkv, .avi, .mts, .m2ts, .mpg, .mpeg, .vob, .dv).

Make a video details inventory

Builds an inventory of your media library: one CSV row per file with its technical details. It only reads files; it never moves or changes anything. It is much faster than the validator because it doesn't decode the video.

Dashboard: click the Video details inventory tile, set the Target Media and Recursive Scan, then Execute Task. When it finishes, Open Manifest opens the CSV.

Supported containers: .mp4, .mov, .mkv, .avi, .m4v, .wmv, .m2ts (the validator doesn't handle .wmv or .m2ts).

Inventory columns

Column Meaning
FileName, FilePath Where the file is
FileSizeMB Size on disk
Container File extension, for example MP4
VideoCodec, Resolution, FrameRate First real video stream (embedded cover art is ignored). Frame rate is the average rate.
AudioCodec, AudioChannels, SampleRate First audio stream. None / 0 means no audio.
BitrateKbps Overall bitrate. If the container doesn't report one (common in MKV), it's estimated from size and duration.
DurationSec Video length in seconds
DateModified, ScannedDate File's last-modified time and when it was scanned

N/A means ffprobe couldn't determine the value. The end-of-run summary shows total files, Probe Failures (files ffprobe couldn't read at all) and the total storage footprint in GB. As with the validator, rows are written as each file completes, so a partial manifest survives a cancel.

From the command line

.\Sync-MediaManifest.ps1 -Path "D:\Videos" -Recurse -ManifestLog "D:\manifest.csv"
Parameter Description
-Path File or folder (required)
-Recurse Include sub-folders
-ManifestLog Write the CSV manifest here

Work from Lightroom Classic

If your clients' scanned photos are already in Lightroom Classic, their videos can be too: checked, merged and trimmed without leaving Lightroom. The plug-in is another way in to the same tools. Every check, merge and trim is done by the toolbox's own scripts and ffmpeg, with the command the browser dashboard would use and your dashboard settings, so a video made from Lightroom is the same, byte for byte, as one made in the dashboard. It needs the toolbox installed (Setup, the Standalone folder, or the Mac app) and Lightroom Classic 6 or later.

Using it. Select one or more videos in the Library, then choose a command from Library > Plug-in Extras (under tpo: Spoolwell™, the plug-in's listing name in Lightroom). Photos in the selection are left out and counted in the summary. A video whose file can't be found (a drive not connected) is skipped and named in the summary.

Command What it does What you get in Lightroom
Check Videos for Problems The check (Check videos for problems) on the selected videos, without moving anything to Quarantine. The Spoolwell set in the Metadata panel: Check (OK, Warning or Problem found), Details (what was found) and Checked (when). Videos with a problem or warning also get the keyword Spoolwell > Problem found or Spoolwell > Warning; a later check that comes back OK takes it off.
Merge Clips by Date... One MP4 per recording day from the selected clips (see Merge tape captures by day), one run per folder. The new videos, added to the catalog in the Merged folder next to the clips (or your Output Folder), and selected.
Trim Blue Screen... The blue-screen tool (see Trim the blue screen). The trimmed videos, added from the Trimmed folder.
Split at Blue Screens... The blue-screen tool with Split into separate videos (see Trim the blue screen). Each part, added from the Split folder.
Convert Sound to AAC... The AAC tool (see Convert the sound to AAC). Videos whose sound is already AAC are left as they are. The converted copies, added from the AAC folder. The originals are never replaced from Lightroom.
Mark Breaks and Split... Windows: opens the Break Player on the first selected video (see Split a video at break points); close it to split. On a Mac, use the app's Split tool. The parts, added from the Split folder.
Make a Video Details Inventory... The video details inventory (see Make a video details inventory) of the selected videos' folders. The CSV, shown in Explorer or Finder.
Spoolwell: Create an error log The same error log as the dashboard's Settings button (see Help), on your Desktop. It is shown in Explorer or Finder, ready to attach to an email.

Each command with ... opens one short dialog with the choices that tool has in the dashboard (family name, title, cut mode, output folder, GPU and so on). It remembers your answers; the first time, it starts from the dashboard's saved settings. You can type or paste a path into the Output folder box, or click Choose.... Everything else comes from the dashboard: studio branding, the "-Final" ending (Settings > File Names) and where ffmpeg is, and the choices you last used there, such as the file prefix and Deep Analysis.

While a tool runs, Lightroom's progress bar (top left) shows the file it is on; Lightroom stays usable. Cancel on the progress bar stops the tool and its ffmpeg; videos already finished are kept and added, and an unfinished one is deleted. When it ends, a summary says what was made and what was skipped and how long it took (for example Took 2 min 14 s), with Show the report. Nothing in the catalog is removed or replaced, and the originals stay where they are. Lightroom can't stack videos from different folders, so new videos are added in their own folders and selected for you; open those folders in the Folders panel to see them.

Plug-in Manager. File > Plug-in Manager > tpo: Spoolwell™ has, at the top, Spoolwell home page (Spoolwell's page on thepictureorg.com), User Guide (this guide on thepictureorg.com, or the copy that came with Spoolwell when you're offline) and Other -well tools (the Tools page). The Updates section is laid out like the other Picture Org plug-ins (see Updating from Lightroom); below its update rows it shows which toolbox the plug-in uses (its version and folder, and where ffmpeg is), with Show the toolbox folder. Last comes the License section: the trial or license status, Buy a license, a box for your key, and Remove license from this computer. It is the same key and the same trial as the dashboard: entering or removing it in one does it for both.

Good to know.

  • The Spoolwell fields are text, so you can filter on them in Library Filter > Metadata (column Spoolwell check) or in a smart collection ("Spoolwell check is Problem found").
  • The keywords the plug-in adds are never exported with your photos and videos (Include on Export is off).
  • Raw DV captures (.avi) that Lightroom can't play can still be checked and merged: the plug-in works on the files on disk, not Lightroom's preview.
  • What the plug-in does is written to Logs/lightroom_run.log in your user data folder (see Where your files go), and goes into the error log.
  • If Lightroom says the toolbox could not be found, install it (or reinstall it), then restart Lightroom. On an Intel Mac, PowerShell and ffmpeg come from Homebrew as for the app (see The browser dashboard).

Settings

The Settings button at the top right opens the things you set once and rarely change: FFmpeg Binary (the path to ffmpeg.exe, with Browse...; ffprobe is found automatically, see How ffmpeg and ffprobe are found), Studio Branding (studio name, title card color and logo; see Studio branding), Updates (see Updates), File Names, the "-Final" ending of new videos (see File names), and Create an error log (see Help). At the top it shows The Picture Org logo and the Spoolwell icon; the last entry, License, shows your free trial or license (see License and free trial) with Enter Key..., and once a key is in it says THANK YOU for supporting a small family business! Click Done or press Esc to go back. If a job can't find ffmpeg, the Settings window opens by itself.

Saved fields (the ffmpeg path, target, tool, options, File Prefix, Output Folder, title choices and whether the shortcut question has been asked) are saved automatically to toolbox_settings.json as you change them, when a job starts and when the window closes, so the next launch shows your latest values. With two windows open, each one saves only the fields you changed in it, so a window left open (or minimized to the tray) no longer puts its older values back when it closes. An ffmpeg path inside the dashboard's own folder is saved relative to it (for example bin\ffmpeg.exe), so the folder can be moved or copied to another machine without breaking the setting. A path outside the folder, such as C:\Tools\ffmpeg.exe, is saved as typed.

File names

New videos made by the toolbox end with a hyphen and a word, -Final unless you change it, so the finished copy is easy to tell from the captures it came from:

Tool Without the ending With it (the default)
Merge DV video files by day (see Merge tape captures by day) Smith_2001-12-01 17.08.25.mp4 Smith_2001-12-01 17.08.25-Final.mp4
Trim blue screen (see Trim the blue screen) Tape 3.mp4 Tape 3-Final.mp4
Split into parts (Split at the blue screens and Split a video at break points) Tape 3 - Part 01.mp4, Tape 3 - 02 Birthday party.mp4 Tape 3 - Part 01-Final.mp4, Tape 3 - 02 Birthday party-Final.mp4
Join the kept parts (see Split a video at break points) Tape 3 - Edited.mp4 Tape 3 - Edited-Final.mp4
Convert the sound to AAC (see Convert the sound to AAC) Tape 3.mov (in the AAC folder) Tape 3-Final.mov

To change it: Settings (top right) > File Names. Untick Add to the end of each new video's name to name new videos without it, or type another word after the hyphen, for example Master or Edited. The line under it shows an example with your word. Each dashboard keeps its own choice (like its other settings, Where your files go).

Good to know:

  • Your originals are never renamed. The ending goes only on new files. With the AAC tool's Replace the originals ticked, the new file takes the original's place and name, so no ending is added. Sound-only files (M4A) don't get it either.
  • Never twice. A video whose name already ends with the word keeps one: trimming Tape 3-Final.mp4 gives Tape 3-Final.mp4 in the Trimmed folder, and joining its parts gives Tape 3 - Edited-Final.mp4, not Tape 3-Final - Edited-Final.mp4.
  • Earlier results still count. A video made before you turned the ending on (for example 2001-12-01 17.08.25.mp4) counts as already made, so running the tool again on the same folder skips it instead of making a second copy. Tick Replace existing MP4s to make it again with the new name (the earlier copy stays; delete it if you don't need it).
  • The word can't contain \ / : * ? " < > |. The tools say so before anything starts.
  • From PowerShell (see Command line): add -NameSuffix Final to Merge-VideosByDate.ps1, Remove-BlueScreen.ps1, Split-VideoAtMarks.ps1 or Convert-AudioToAac.ps1. Without it, the scripts add no ending.

The dashboard

What to do

Each task is a tile; click one and the window shows that task's options. Hold the pointer over a tile to see the script it runs.

  • Check videos (Test-Mp4Integrity.ps1): video validation.
  • Video details inventory (Sync-MediaManifest.ps1): a spreadsheet of every video and its details (see Make a video details inventory). Auto-Move and Deep Analysis are grayed out for this tool.
  • Merge DV video files by day (Merge-VideosByDate.ps1): one MP4 per recording day from tape captures (see Merge tape captures by day).
  • Trim blue screen (Remove-BlueScreen.ps1): trims blue screen from tape captures, or splits them at the blue screens (see Trim the blue screen).
  • Split a video (Split-VideoAtMarks.ps1): splits one video at break points you mark in a player (see Split a video at break points).
  • Convert sound to AAC (Convert-AudioToAac.ps1): converts the sound to AAC, picture untouched (see Convert the sound to AAC).
  • Fix a title (Replace-VideoTitle.ps1): fixes the title card or overlay of finished videos (see Fix a title).
  • Set a video's date (Set-MergedVideoDate.ps1): gives a video the date you type (see Set a video's date).

The merge, blue-screen, split, AAC, title and date tools replace Auto-Move and Deep Analysis with their own options. Merge, blue-screen and split have Use GPU when available (see GPU acceleration).

Options

  • Recursive Scan: include sub-folders.
  • Auto-Move Corrupted Files to '_On Hold': moves each FAIL file into an _On Hold folder next to it. It is ticked by default on first launch; after that the dashboard remembers your choice. See Quarantine.
  • Deep Analysis: adds freeze, black-frame, silence, sync-drift and audio-clipping checks. Slower. See What the check looks for.

Buttons

  • Execute Task / Cancel: Cancel stops the job and kills the ffmpeg process it started. It does not touch other ffmpeg processes on your machine.
  • Open CSV Report: becomes available when a run finishes. Orange means failures were found, green means a clean run, blue is a manifest.
  • Minimize to Tray: hides the window to the system tray. Click the tray icon to restore, or right-click for Open Dashboard / Exit. A balloon notification appears when a job completes.

Progress and status

  • The bar and label show files completed (for example "Processed 3 of 20 items (15%)") and the file currently being scanned.

  • The console log shows live output. During a file you'll see about one line a second, such as [FFmpeg] 00:12:40 / 01:20:05 (16%) | speed 4.2x. If nothing has been logged for 10 seconds you'll see still working....

  • The bottom status bar shows elapsed time and seconds since the last output.

  • Launch.bat first runs Apply-Updates.cmd (it finishes a PowerShell update left by an older version, if there is one), then puts bin and runtime\pwsh first on PATH for that session, then starts the bundled pwsh.exe with the dashboard script and no console window. Nothing needs to be installed on the machine.

  • User Guide button: the dashboard header has a User Guide button that opens this guide in your browser. It opens the guide on thepictureorg.com (thepictureorg.com/spoolwell-guide) when the site answers within a few seconds; otherwise, for example when you're offline, it opens the copy that came with Spoolwell: docs\Media-Toolbox-User-Guide.html next to the dashboard script, then the same file beside the script. If neither can be opened the status bar says so; copy the HTML guide into a docs folder to fix it. Next to it, Other -well tools opens The Picture Org's Tools page with every -well tool.

  • How long it took: when a job finishes, the status bar says how long it took (for example Completed. Took 2 min 14 s.), and so do the last line of the output and the notification.

  • Version: the toolbox version appears in the dashboard's title bar, in the bottom-right corner of the window. Each script has its own version, shown in its Get-Help -Full notes and listed in CHANGELOG.txt. This guide states the version it describes at the top.

  • Logo (optional): put an image named logo.png in an assets folder next to the dashboard script. It appears at the top left of the window and becomes the window icon. PNG with a transparent background works best, at least 256 px tall (it is shown 64 px tall). A JPEG cannot be transparent, so a logo saved as JPEG shows a white box around it; save it as PNG with a transparent background. .jpg, .ico, .bmp and .gif also work; SVG does not. Without the file there is no logo. A logo chosen under Studio Branding (Studio branding) is used instead when it exists; with the toolbox installed for everyone (Program Files), choose your logo there rather than adding files to the toolbox folder.

  • Desktop shortcut: when installed with the Setup program, the shortcuts are already made and nothing is asked. Otherwise, the first time the dashboard opens it asks whether to create a desktop shortcut. Choosing Yes creates Spoolwell Video Toolbox.lnk on your desktop. It points to Launch.bat when that file is present (so the bundled PowerShell and tools are used), and uses assets\app-icon.ico as its icon if that file exists. The question is asked once; the answer is stored in toolbox_settings.json. To be asked again, delete that file (or the ShortcutPrompted line in it). If you move the folder, delete the old shortcut and ask again the same way.

  • Launch-Debug.bat is for troubleshooting. It runs the same bundled PowerShell but leaves the console visible and open after the dashboard exits, so any startup error can be read or copied.

Running several jobs at once. Start the dashboard again (double-click Launch.bat or Launch-Web.bat once more) for each extra job; there's no need for a second copy of the folder. The second window is titled "(window 2)", and so on. Each window runs its own job, its Cancel stops only its own ffmpeg, and its reports carry its number (for example blue_report_..._w2.csv) and its log goes to Logs\dashboard_debug_2.log (Logs\web_debug_2.log for a second browser dashboard). Settings are shared: the last change made in any window is what the next new window starts with. Two jobs share the computer's CPU, GPU and disk, so each runs slower than it would alone, and two jobs on the same network share are limited by the network. Don't point two windows at the same folder with the same tool.

Closing the window or pressing Exit stops any running job and its ffmpeg process.

How ffmpeg and ffprobe are found

For ffmpeg, the dashboard looks in this order and uses the first that exists:

  1. The path saved from your last session.
  2. bin\ffmpeg.exe next to the dashboard script (the packaged layout).
  3. ffmpeg on your PATH.

If the saved path no longer exists (for example after the folder moved) the dashboard quietly switches to the bundled copy, shows the new path in the field, and notes it in the console log when you run a job. It only reports "FFmpeg binary could not be found" if none of the three exists.

ffprobe is looked up separately, in this order:

  1. ffprobe.exe in the same folder as the ffmpeg being used.
  2. bin\ffprobe.exe next to the dashboard script.
  3. ffprobe on your PATH.

It can therefore live in a different folder from ffmpeg. If none is found:

  • Video details inventory: the dashboard refuses to start and tells you where to put ffprobe, because that tool cannot work without it.
  • Integrity scan: it starts anyway and the console log shows a warning. Deep Analysis runs as a standard scan, and the progress percentage is not shown.

The browser dashboard

MediaToolboxWeb.ps1 does the same job as the Windows dashboard, but in your web browser, so it works on a Mac. It starts a small server that listens only on your own computer and opens the page in your default browser. You can use it alongside the Windows dashboard; the two keep separate settings.

What it looks like and does. The page has the same controls as the Windows dashboard: tool choice, target, Output Folder, a Settings button for the ffmpeg path and studio branding, the three options (Auto-Move is ticked by default on first launch), Execute, Cancel and Open CSV Report, a progress bar that moves within a file, a color-coded console log, the logo, a User Guide button and the version at the bottom right. The scripts and reports are exactly the same.

Starting it

Computer How
Mac Open Spoolwell Video Toolbox from Applications (see Install). Or in Terminal: pwsh ./MediaToolboxWeb.ps1
Windows Double-click Launch-Web.bat. Or: pwsh .\MediaToolboxWeb.ps1

The terminal window shows an address like http://127.0.0.1:8765/?t=.... The browser opens it by itself; if not, copy that address into a browser. Keep the terminal window open while you work. To stop, click Quit in the page or press Ctrl+C in the terminal. Closing the browser tab does not stop it (except with the Mac app, which has no terminal window: it stops by itself 10 minutes after the last dashboard page was closed, unless a task is still running). Add -NoBrowser to skip the automatic opening, or -Port 9000 to choose a port.

Differences from the Windows dashboard

  • Pickers: the Browse, Folder and File buttons open the Mac's own chooser in front of the browser. The first time, macOS asks whether Terminal (or the app you started it from) may control System Events. Click OK; the chooser can't open without it. If you refused it, allow it under System Settings > Privacy & Security > Automation. If a system has no chooser, type or paste the path instead. In the Mac chooser, Cmd-Shift-G lets you type or paste a folder path too.
  • Tray and shortcut: there is no tray icon and no first-launch shortcut question. On a Mac, drag Spoolwell Video Toolbox from Applications > ThePictureOrg to the Dock, like any app.
  • Settings: the Settings button (top right) holds FFmpeg Binary, Studio Branding, Updates and File Names (see File names), as in the Windows dashboard; click Done to save them. Everything else is saved as you change it, in toolbox_web_settings.json in your user data folder (see Where your files go), separate from toolbox_settings.json, because paths such as ffmpeg differ between Windows and macOS. The Settings window also shows your user data folder under Your Files, with an Open Folder button.
  • Cancel: stops the running scan and its ffmpeg, the same as in the Windows dashboard.
  • Player (split tool): the player is part of the page, below the options. Chrome, Edge and Safari play H.264 MP4 and MOV files as they are; for anything else (DV AVI, MPEG-2) the page offers a preview copy (see Split a video at break points).

Safety. The server accepts only connections from your own computer, and every request must carry a random token that appears only in the address printed in your terminal. Pages in other browser tabs cannot control it. Do not share that address.

Where your files go

In short: the toolbox's own folder holds only the program. Everything the toolbox writes for you, apart from your videos, goes in your user data folder, a folder in your own account:

Computer Your user data folder How to get there
Windows %LOCALAPPDATA%\PictureOrg\MediaToolbox (for example C:\Users\Anna\AppData\Local\PictureOrg\MediaToolbox) In the dashboard: Settings, then Open Folder next to Your Files. Or Start menu > Spoolwell Video Toolbox > My Reports and Logs. Or paste %LOCALAPPDATA%\PictureOrg\MediaToolbox into File Explorer's address bar.
Mac ~/Library/Application Support/PictureOrg/MediaToolbox Settings, then Open Folder. Or in Finder: Go > Go to Folder..., then paste that path.

Inside it:

  • Reports: the CSV report of every run (the Open CSV Report button opens the newest one). The newest 50 of each kind are kept; older ones are deleted when the toolbox opens. Copy any you want to keep for longer to another folder.
  • Logs: the dashboards' logs, for troubleshooting. When the toolbox opens, a log longer than 2000 lines is cut back to its newest 2000, so none grows without end.
  • toolbox_settings.json and toolbox_web_settings.json: the two dashboards' saved settings.
  • branding.json: your studio branding, once you have changed it (until then the sample in the toolbox folder is used).

Why: a program installed for everyone lives in C:\Program Files, which Windows protects: only an administrator can change it, so the toolbox can't keep anything there. Keeping your files in your own account also means each person who uses the computer has their own settings and reports, and an update or reinstall never touches them. The standalone zip and the Mac app use the same folder, so it's the same whichever you use. Your license key is kept one level up, in PictureOrg (see License and free trial). Your videos are not affected: outputs go where you choose (usually next to the originals).

Coming from a much older version: versions 1.11.0 and older kept these files inside the toolbox folder. The first time a newer version opens, it copies them into your user data folder; the originals are left where they were, so nothing is lost. It does this once, and writes a note of what it copied (copied-from-older-version.txt) in the user data folder. After that the old copies aren't used, and you can delete them if you like.

File (in the user data folder) Contents
Reports\audit_mp4_report_YYYYMMDD_HHMMSS.csv One row per file (columns below). The other tools' reports (merge_report_, blue_report_, split_report_, aac_report_, retitle_report_, date_report_) are here too.
Reports\media_manifest_YYYYMMDD_HHMMSS.csv Output of the manifest tool (columns in Make a video details inventory)
toolbox_settings.json Saved dashboard settings
Logs\dashboard_debug.log Full console output of the latest run. The four runs before it are kept as dashboard_debug.1.log (the run before) to dashboard_debug.4.log.
toolbox_web_settings.json, Logs\web_debug.log The browser dashboard's saved settings and latest-run output (see The browser dashboard); web_debug.1.log to web_debug.4.log are the four runs before
update_check.json The newer-version check: whether it is on, when it last ran, the newest version found and any version you skipped (see Updates)
Logs\dashboard_trace.log Timestamped record of dashboard start-ups, jobs started and finished, shutdowns, and any error that closed the window (the newest 2000 lines are kept; each line shows the window's process number). Send it if the window ever closes unexpectedly.
Logs\dashboard_error.log Dashboard errors (startup failures, unexpected window errors), with timestamps. Created only if something goes wrong. The newest 2000 lines are kept.
Logs/app_launcher.log, Logs/install.log, Logs/uninstall.log Mac only: what the app, the installer and the uninstaller did, each time (see The browser dashboard). The newest 2000 lines are kept.

Read-only folders and studio servers

On every computer: before any work starts, Spoolwell checks that it can write where the new videos go. If it can't (a read-only folder, a drive you don't have permission to change), the job stops at once and says so, instead of failing hours later when the video is saved. Choose an Output Folder somewhere you can write; videos in a read-only folder can still be read. Scans also never look inside snapshot or recycle folders (.zfs, #snapshot, #recycle, @eaDir and the like), which hold another copy of every file. And a name that differs from an existing one only in case (Tape 3-Final.mp4 next to Tape 3-final.mp4) counts as the same name, so Spoolwell never makes the second one.

On a studio ZFS server: Spoolwell recognizes a project kept on a ZFS server with snapshots (a .zfs\snapshot folder in the project or above it) and does two more things there, by itself. Nowhere else does anything change.

  • A job in progress. While a job runs, Spoolwell leaves a small hidden file named .pictureorg-busy-spoolwell-...json in the project folders it works in, and refreshes it every few minutes. Studio ZFS won't send or archive a project while it holds a fresh one. The file is deleted when the job ends, also after Cancel; one left behind by a crash stops counting after 15 minutes.
  • Working files stay on your computer. Trimming and fixing a title make large working files. In a studio project they go only on this computer's own drive: the server's hourly snapshots would keep each deleted working file for weeks. When your drive is too full, that video stops with a message saying how much space it needs, so you can free some and run it again. (Anywhere else, Spoolwell works beside the output when your drive is too full, as it always has.)
  • A locked project (sent to the other studio or archived) is read-only, so the write test above stops a job aimed at it: "This project is locked (sent to the other studio or archived). Choose an Output Folder elsewhere."
  • Nothing directly beside the projects. The folders that hold the projects (such as Projects, ProjectArchives or a year folder) and each project's own folder are managed by the server. Spoolwell never makes, renames or deletes anything directly in a folder that holds projects: aim the Output Folder at a folder inside a project, where anything goes. If you choose the projects folder itself, the job stops at once and says so.

Two things to know on such a server:

  • Free space after deleting. Deleting files from a project doesn't free its space right away: the snapshots keep them until they age out. Free space shown right after a cleanup can look lower than you expect.
  • Getting an original back. Spoolwell's own safety copies (the Old titles folder, a .aac-original file) and the server's snapshots overlap. If a replaced video turns out wrong, right-click the project folder and choose Restore previous versions (or ask for a restore from the snapshots). That works even after Spoolwell has deleted its own copy.

GPU acceleration

The merge and blue-screen tools use your graphics card to encode when they can. It is on by default (Use GPU when available) and needs no setup.

  • Which GPU. Each run tries, in order, NVIDIA (NVENC), Intel (Quick Sync), AMD (AMF), and on a Mac Apple VideoToolbox, with a tiny test encode. The first that works is used and named in the log, e.g. [INFO] Video encoder: h264_nvenc (NVIDIA GPU). If none works, the CPU encoder (x264) is used.
  • Safety net. If the GPU encode fails part way, that file or day is redone on the CPU automatically.
  • Decoding. With Use GPU when available on, the blue-screen tool (scanning, finding the exact edges and re-encoding), the merge tool and Find Scene Changes in the split player also decode on the GPU, and redo the work on the CPU if that fails. The result is the same either way: we checked that every frame of the output is identical with and without GPU decoding. DV (MiniDV) gets no gain: graphics cards have no DV decoder, so DV is always decoded on the CPU, and only other formats (MP4, MOV, MPEG-2 and the like) can be faster. Untick Use GPU when available (or use -NoHwDecode on the command line) to decode on the CPU.
  • Quality and size. GPU encodes are set to their highest-quality modes, aimed at the same visual quality as the CPU setting. For the same quality, GPU files are usually somewhat larger than x264's. Untick Use GPU when available (or use -Encoder CPU) for the smallest files at the cost of time.
  • What stays on the CPU. The validator (Test-Mp4Integrity.ps1) always decodes on the CPU, because a GPU decoder can hide or report corruption differently and the validator's job is to be exact. The manifest only reads file details, so it needs no GPU.
  • Your ffmpeg must include the GPU encoders. The ffmpeg bundled in bin in the Windows package (the gyan.dev "essentials" build) already includes NVENC, Quick Sync and AMF, and the NVIDIA decoder; the Mac package's ffmpeg includes Apple VideoToolbox. Only if you swap in a different ffmpeg do you need to check this. Keep your graphics driver up to date; an old NVIDIA driver is the usual reason NVENC is not found.

Command line

Built-in help. Each script carries its own help text. From a PowerShell 7 window in the scripts' folder:

Get-Help .\Test-Mp4Integrity.ps1 -Full
Get-Help .\Sync-MediaManifest.ps1 -Examples
Get-Help .\MediaToolboxDashboard.ps1

-Full shows the description, every parameter and the examples; -Examples shows just the examples. The scripts are also commented throughout if you want to see how they work.

The validator and the manifest tool need ffmpeg and ffprobe on PATH when run from the command line; the other tools also look in the bin folder next to the scripts. The dashboard adds the folder of the ffmpeg you selected to PATH for the run.

Each tool's own section ends with its command-line examples and parameters.

Troubleshooting

Symptom Likely cause and fix
"Child script not found" The scripts aren't in the same folder. Move them together.
"The FFmpeg binary set in Settings could not be found" None of the saved path, bin\ffmpeg.exe or PATH has ffmpeg. The Settings window opens: fix the FFmpeg Binary path there, put ffmpeg in the bin folder, or add it to PATH.
Deep Analysis ran as a standard scan ffprobe wasn't found (see the console warning). Add it as described in How ffmpeg and ffprobe are found.
FFmpeg path changed by itself The saved path no longer existed, so the dashboard switched to the bundled bin\ffmpeg.exe. This is expected after moving the folder.
Settings don't save The status bar shows the reason. Settings are saved in your user data folder (see Where your files go), which is normally always writable; check that the disk isn't full and that security software isn't blocking AppData\Local\PictureOrg.
Can't find my reports or logs after updating from a much older version They are in your user data folder (see Where your files go): Settings, then Open Folder next to Your Files. The first start after the update copied the old ones there.
Progress shows no percentage ffprobe wasn't found, so total length is unknown. Position and speed still show.
Deep Analysis reports "ffprobe not found" Deep Analysis needs ffprobe to detect the audio and video streams. Without it the scan runs as a standard scan.
A finished video is left as <name>.partial.mp4 Windows (or the studio server) wouldn't let it take its name, usually because the old copy being replaced was still open in a player or File Explorer. The tool waits and tries again first; if it still can't, it keeps the video and says so in the log. Close whatever has the old copy open, then rename the .partial.mp4 file to .mp4.
Files fail with a harmless-looking warning See Tuning the check ($benignPatterns).
"No supported video targets located" The path has no files with the supported extensions, or Recursive Scan is off.
Manifest shows N/A for a file ffprobe couldn't read it (see the Probe Failures count). The file may be corrupt. Run the validator on it.
"ffprobe could not be found" (manifest) or a console warning about ffprobe (integrity scan) Put ffprobe.exe in the same folder as ffmpeg.exe, in the bin folder next to the dashboard, or on your PATH.
Dashboard window closes a few seconds after opening Run Launch-Debug.bat instead of Launch.bat. It keeps a console open and shows the error. Also check dashboard_error.log and dashboard_trace.log in the Logs folder of your user data folder (see Where your files go). Common causes: antivirus quarantining the bundled pwsh.exe, or files left blocked after unzipping (see Install). Unexpected errors inside the window are now logged and no longer close it.
The desktop shortcut still shows the old icon Open the toolbox once and the shortcut is pointed at the new icon file. If it still shows the old picture, restart the computer (Windows remembers icons it has shown before).
Desktop shortcut wasn't created The status bar shows the reason and Logs\dashboard_error.log has details. A desktop managed by company policy can block it. You can instead right-click Launch.bat, choose Send to, then Desktop (create shortcut).
User Guide button says the guide wasn't found Put Media-Toolbox-User-Guide.html in a docs folder next to MediaToolboxDashboard.ps1.
Task Manager shows many PowerShell 7 (pwsh.exe) processes after closing the toolbox They may not be the toolbox's: it ends its own when it closes. To see whose they are, add the Command line column in Task Manager's Details tab: the toolbox's show its folder and a script name such as MediaToolboxDashboard.ps1. Each time the dashboard starts, Logs\dashboard_trace.log also lists every other pwsh.exe running, with its command line. To clear old ones, close the toolbox and restart the computer, or in Task Manager's Details tab end the pwsh.exe entries (this also closes any other PowerShell 7 windows you have open).
Browser dashboard: the Folder or File chooser doesn't appear, or does nothing On a Mac, allow the Automation prompt described in The browser dashboard (System Settings > Privacy & Security > Automation, where Terminal must be allowed to control System Events). Look for the dialog behind other windows. You can always type or paste the path instead.
Browser dashboard: "Forbidden" page Open the address printed in the terminal (it contains a one-time token). A link from an old run no longer works.
Browser dashboard: "Lost contact with the dashboard server" The server was stopped or the terminal window was closed. Start it again.
"The trial has ended. Enter a license key to keep using Video Finishing Toolbox." The 21-day trial and its 7 reminder days are over. Click Buy a license at the bottom of the dashboard, then Enter key... and paste the key from your email (see License and free trial).
"That key is not valid" when entering a key Paste the whole key from the email, including the dot in the middle. Spaces and line breaks don't matter. A key for Auto Crop & Straighten alone doesn't unlock the toolbox.
Nothing appears in the console Check Logs\dashboard_debug.log while the job runs. If it's filling up but the window isn't, the message [GUI ERROR] will appear in the log box.

Install

What you need:

  • Windows 10 or 11 for the dashboard window, or a Mac (or Windows) for the browser dashboard. The Mac package needs a Mac with Apple silicon and, we believe, macOS 14 or later; Intel Macs use Homebrew (see The browser dashboard).
  • PowerShell 7 and ffmpeg/ffprobe are included in the packaged folder (runtime and bin, in both the Windows and the Mac package), so nothing else needs installing. If you run the scripts outside the package, you need PowerShell 7 or later and ffmpeg with ffprobe (see "How ffmpeg and ffprobe are found").
  • Nothing has to be writable in the toolbox's own folder: settings, reports (Reports) and logs (Logs) are saved in your user data folder (see Where your files go). It can be in Program Files.
  • Optional: an NVIDIA, Intel or AMD GPU for faster merging and trimming.

Windows

  • Installing: the easy way is ThePictureOrg-Spoolwell-Setup-<version>.exe. It asks who will use the toolbox:

    • Anyone who uses this computer (recommended, the default): installs in C:\Program Files\ThePictureOrg\Spoolwell, with Start menu and desktop icons for every account. Windows asks for an administrator's permission (click Yes; on a computer where you aren't an administrator, the person who is types their password).
    • Only for me: installs in your own account, %LOCALAPPDATA%\Programs\ThePictureOrg\Spoolwell, with no administrator permission.
    • Moving from an older version: older versions installed in C:\Program Files\The Picture Org\Media Toolbox or %LOCALAPPDATA%\Programs\Picture Org Media Toolbox. Setup moves an install from there into the new folder by itself, removes the old program files and remakes the Start menu and desktop icons. Anything of yours left in the old folder stays there, and your user data folder (see Where your files go) is not touched. If the toolbox is running, Setup asks you to let any task finish and close it first.

    Either way it makes a Spoolwell Video Toolbox folder in the Start menu (dashboard, browser dashboard, troubleshooting, User Guide, Cheat Sheet, My Reports and Logs, Uninstall) and, if ticked, a desktop icon. Running a newer Setup updates in place. Your settings, branding, Reports and Logs are in your user data folder (see Where your files go), so installing, updating and uninstalling never touch them unless you tick the box to delete them when uninstalling. If an earlier version is installed only for you and you now choose Anyone, Setup removes the old copy's Start menu and desktop icons (so there aren't two) and offers to remove its program files; your settings, branding, Reports and Logs are kept and the new version copies them to your user data folder the first time it opens. The Setup program is signed by The Picture Org LLC; if Windows still says "Windows protected your PC" (it can while a certificate is new), click More info, then Run anyway. Or unzip the zip to a folder of your choosing; README.txt has the steps, including upgrading and uninstalling.

  • Moving or copying the folder is safe. The dashboard finds the child scripts next to itself, falls back to bin\ffmpeg.exe and bin\ffprobe.exe if the saved path is gone, and stores in-folder paths relative (see Saved fields). Keep both executables in bin.

  • Where to put it (zip): anywhere, including Program Files: the toolbox only reads its own folder. Your settings, logs and reports go in your user data folder (see Where your files go), the same one the installed toolbox uses.

  • First run after downloading a zip: Windows may show a security prompt for Launch.bat or pwsh.exe. Right-click the zip, choose Properties, tick Unblock and click OK before extracting to avoid it.

  • Sharing the folder (for example on a network drive) is fine: each person's settings, Reports and Logs stay in their own account.

Mac

There are two packages: the Windows one (ThePictureOrg-Spoolwell-Standalone-<version>.zip, or the Setup program) and the Mac one (ThePictureOrg-Spoolwell-Mac-<version>.zip). The Mac package has the same scripts and documents, plus PowerShell 7 and ffmpeg built for Apple silicon (M1 and later), so nothing else needs installing. It needs a recent macOS (14 Sonoma or later; this is inferred from the .NET 10 runtime PowerShell 7.6 uses).

The Mac package is an app, Spoolwell Video Toolbox.app, which comes inside an installer app. Both are signed by The Picture Org (an Apple Developer ID) and notarized (checked by Apple), so macOS opens them without the "can't check for malicious software" warning:

  1. Double-click the zip to unpack it. The MediaToolbox-Mac folder holds Install Spoolwell Video Toolbox, Uninstall Spoolwell Video Toolbox, the README and the documents.
  2. Double-click Install Spoolwell Video Toolbox. macOS may say it was downloaded from the internet and ask whether to open it: click Open. The installer asks before it does anything, then copies the app into Applications > ThePictureOrg (or into Applications > ThePictureOrg in your home folder, if your account can't add apps to the main one), replacing an older copy (also one directly in Applications, where older versions went), and shows the next steps. If the toolbox is running, it asks you to click Quit on its page first. What it did is written to Logs/install.log in your user data folder.
  3. Open Spoolwell Video Toolbox from Applications > ThePictureOrg, or Launchpad. If you kept the app in the Dock, drag it in again from Applications > ThePictureOrg. The dashboard opens in your browser. To stop it, click Quit on the page (or just close the tab: it stops by itself 10 minutes later).

You can now delete the zip and the unpacked folder.

Your files on a Mac are in ~/Library/Application Support/PictureOrg/MediaToolbox (see Where your files go), never inside the app, so installing a new version or removing the app keeps them. Settings and branding from an older Mac package (a MediaToolbox-Mac folder in Downloads, Desktop, Documents or Applications) are copied there the first time a newer version opens.

Removing it: double-click Uninstall Spoolwell Video Toolbox (or drag the app to the Bin). It asks first. Your settings, Reports, Logs and license key are kept; the uninstaller says where they are if you want to delete them too.

Intel Macs. The app opens on an Intel Mac too, but the bundled PowerShell and ffmpeg are for Apple silicon and are skipped there. Install PowerShell and ffmpeg with Homebrew instead (brew install --cask powershell, then brew install ffmpeg); the app finds them. With the Windows package's scripts on any Mac, Launch.command does the same.

Updating on a Mac. The app is signed, and changing anything inside it would break that, so current PowerShell and ffmpeg come with each new Mac package (Homebrew's are updated with brew upgrade). To move to a new Mac package, just run its installer.

Untested so far: the Mac package was put together on Linux and has not yet been run on a Mac. If the app doesn't open the dashboard, look in Logs/app_launcher.log in your user data folder, or open Terminal and run bash "/Applications/ThePictureOrg/Spoolwell Video Toolbox.app/Contents/Resources/launcher.sh" and then look in that log. A disk image (.dmg) to drag the app from, the usual Mac way, may come in a later version.

Lightroom Classic plug-in

Installing it. Setup (Windows) and Install Spoolwell Video Toolbox (Mac) put the plug-in in Lightroom's Modules folder for you; restart Lightroom and it is there. Updates (Install Update in the dashboard or in the plug-in, or a new Setup or Mac download) update it too; restart Lightroom afterwards. With the Standalone folder, or for another account on a computer where the toolbox is installed for everyone, open the dashboard once (Windows), or add it yourself: in Lightroom, File > Plug-in Manager > Add, then choose Spoolwell.lrplugin in the toolbox folder (on a Mac it is inside the app: right-click Spoolwell Video Toolbox in Applications > ThePictureOrg, Show Package Contents, then Contents > Resources).

License and free trial

The toolbox is free to try for 21 days, with every feature. The bottom right of either dashboard shows the days left, for example Free trial: 14 days left.

  • After the 21 days the toolbox keeps working for 7 more days, and a reminder opens each time you open the dashboard, with Buy a license and a box for the key.
  • After those 7 days the dashboard still opens, but Execute Task and the split player don't start until a license key is entered; a window explains why and has the box for the key. Your settings, reports and every file you have already made stay available.

Buying and entering a key. Click Buy a license at the bottom of the dashboard. The license key comes by email. Click Enter key... (or Enter Key... under License at the bottom of Settings), paste the whole key (it has a dot in the middle; spaces and line breaks don't matter) and click Save Key. The bottom of the dashboard then says Licensed to and your name. If the key is refused, the window says why (for example, a key that isn't complete, or a key for Auto Crop & Straighten alone).

What a license covers. One person, on up to 2 computers. Updates are complimentary within the major version: a key for version 1 works with every 1.x version. The full terms are in LICENSE.txt.

Moving to another computer. Click Remove license from this computer at the bottom of the dashboard (it asks first), then enter the key on the new computer. A bundle key for the toolbox and Auto Crop & Straighten unlocks both programs, and removing it removes it from both on that computer (the dashboard says so before it does).

Where the key is kept. In your user account, not in the toolbox folder, so it survives upgrades, the Setup program and moving the folder: %LOCALAPPDATA%\PictureOrg on Windows, ~/Library/Application Support/PictureOrg on a Mac. Each Windows or Mac user account on a computer enters the key once.

Command line. The tool scripts check too. After the trial and its reminder days, they print the reason and stop with exit code 9 before doing any work; during the reminder days they print a warning and carry on. The launchers are never stopped.

Updates

The dashboard checks by itself whether a newer version of the toolbox is out every time it opens. It reads a short list of current version numbers from The Picture Org's download service (the same list Auto Crop & Straighten uses). Nothing else is sent: not your name, your license key, your files or anything about your computer. If there is no internet connection, nothing is shown and the toolbox works as usual.

When a newer version is out, a bar appears above the Console Log Output (in either dashboard), once each time you open the dashboard:

  • Install Update (Windows): the toolbox installs the new version itself. Click it, then OK: the toolbox closes, a small window downloads the update, checks that it really comes from The Picture Org (its checksum and The Picture Org's release signature, and that every script is signed by The Picture Org LLC), puts the new files in place and opens the dashboard again. If the toolbox is installed for everyone, Windows asks for an administrator's permission first. If anything goes wrong, the old files are put back and nothing is changed; the window says why, and you can use Download instead. The previous version's files are kept in a .update-backup folder inside the toolbox folder. PowerShell and ffmpeg are not part of these small updates. Let any running task finish first: Install Update starts only when no task is running. If another Spoolwell window is still open (a second dashboard, the browser dashboard, a command from Lightroom), the small window names it and offers to close it for you before installing. What happened is written to Logs/update_install.log in your user data folder.
  • Install Update with the full installer (on a Mac, and for a version that comes with a new PowerShell or ffmpeg, or when your copy is too old for the small update): the toolbox closes, downloads the full Setup (on a Mac, the Mac download), checks its checksum and that it is signed by The Picture Org LLC (on a Mac, also that Apple accepts it), and starts it. Follow the installer's steps; it keeps your settings, Reports, Logs and license key. If a check fails nothing is started, and you can use Download instead.
  • Download opens the download in your browser. Close the toolbox, then run the new Setup from the download (on a Mac, open Install Spoolwell Video Toolbox). Your settings, studio branding, Reports, Logs and license key stay as they are (see Where your files go).
  • What's New opens the Tools page on our website, with what changed in each version.
  • Not Now hides the bar until the next time you open the dashboard.
  • Skip This Version stops the reminders for that version; you are told again when a later one comes out.

Nothing is downloaded or installed until you click Install Update or Download. Updates within the major version are complimentary: a version 1 license key works with every 1.x version (see License and free trial).

Settings > Updates shows the version you have and the result of the last check. Check Now asks straight away (and shows the bar even for a version you skipped); if the check fails it says why, for example no internet connection. Untick Check for updates automatically to stop the daily check; Check Now still works. The choice is shared by both dashboards and kept in update_check.json in your user data folder.

Spoolwell's PowerShell and ffmpeg are the versions it was tested with, and they are updated only by a new Spoolwell version.

Updating from Lightroom

The first time you use a Spoolwell command after Lightroom starts, the plug-in checks for a newer version (the same short version list as the dashboard, Updates; nothing about you or your files is sent). When one is out, the next command offers it once per Lightroom session: Install update, Not now or Skip this version. The Plug-in Manager's Updates section shows what the last check found, with Check now and What's new, Download installer and Install update when a newer version is out, and a tickbox to turn the automatic check off (shared with the dashboard's). Install update does what the dashboard's Install Update does: on Windows a small window downloads the update, checks The Picture Org's signature, installs it and refreshes Lightroom's copy of the plug-in; for a version that comes with a new PowerShell or ffmpeg, and on a Mac, it downloads the full Setup or Mac installer, checks its signature and starts it. Close the Spoolwell dashboard first if it is open. Then restart Lightroom Classic.

Help

Create an error log. If something isn't working and you'd like help, open Settings and click Create an error log (in both dashboards). It saves one text file on your Desktop, named like Video Toolbox error log 2026-10-17 0915.txt, and shows it in Explorer or Finder. Email it to The Picture Org with a line on what went wrong. It holds:

  • the toolbox, Windows or macOS, PowerShell and ffmpeg versions;
  • your settings from both dashboards, with any license key left out and files and folders shown only as (set) or (blank);
  • the end of every log in the Logs folder (see Where your files go), including the last 5 runs;
  • the newest Report.

Your home folder is shown as ~, so your account name isn't in it. The names of your videos and their folders can appear in the logs; the videos themselves never do. Nothing is sent by itself: you choose whether to email it.

Each script's own help. Each script carries its own help text: Get-Help .\Test-Mp4Integrity.ps1 -Full (see Command line).

Appendix: What's new

  • 1.13.9: a finished video is no longer lost when Windows won't let it take its name at the end of a job ("Access to the path is denied"). The tool waits and tries again, and if that fails it keeps the video as .partial.mp4 and says so. Full re-encode (used with black bars), Copy only and merging now work on your PC's own drive and copy only the finished video to a server, as smart cut already did. With Family name blank, a title card takes the family name from the project folder, or a folder with "family" in its name (see Title card or overlay).
  • 1.13.8: Black Bars for a merge, a blue-screen trim or a split: cover a ragged top or bottom edge with black without changing the picture's size or shape. Set Black Bars... opens a frame with two lines to drag, and Show Sample shows the finished look (see Cover a ragged edge with black bars).
  • 1.13.7: Title Text and Second Line boxes when you start a merge, a blue-screen trim or a split, so a tape's title can be set before it is made, with the same choices as Fix a title. Show Title Sample fills them in for a single tape, and its window has a Looks right button that starts the job (see Type the title for a tape).
  • 1.13.6: Trim blue screen also cuts silent black at the very start and end of a tape (Cut silent black at the start and end, on by default; black in the middle is kept). When a job makes nothing because its output is already there, Spoolwell now says so instead of just finishing.
  • 1.13.5: the dashboard opens again (1.13.3 closed as soon as it started), and Install Update names any other Spoolwell window still open and offers to close it. The Update ffmpeg tile is gone: new ffmpeg and PowerShell versions now come only with a Spoolwell version they were tested with. Two tiles have clearer names: Merge DV video files by day and Video details inventory. The new Set a video's date tile gives a video the date you type, for one that was given the wrong date (see Set a video's date). Spoolwell is now the Spoolwell™ Video Finishing Toolbox (only the name changed), and in Lightroom Make a Storage Manifest... is now Make a Video Details Inventory....
  • 1.13.3: Spoolwell checks for a newer version every time it opens, not once a day, and in Lightroom the first Spoolwell command after Lightroom starts checks too.
  • 1.13.2: a job whose output folder can't be written to stops before any work and says so, scans skip snapshot folders, and on a studio ZFS server a running job tells the server so the project isn't sent or archived halfway through (see Read-only folders and studio servers). The dashboards show the tasks as tiles with plain names (Check videos, Merge by day, Trim blue screen and so on) instead of a list of script names, Show Title Sample draws the first titles exactly as they will look before anything is made, and Auto-Move puts broken videos in an _On Hold folder (it was failed, which scans still skip).
  • 1.12.9: blue that runs to the end of a tape is cut even when there is sound under it (tape hiss), and an Output Folder given as just a name is made inside the folder you're working on (before, it went into Spoolwell's own program folder and the job failed).
  • 1.12.8: Install Update in the Windows dashboard works after a job has run, and Setup asks you to close the toolbox when it is open, instead of stopping on a file in use.
  • 1.12.7: trimming the blue screen with a title card keeps the sound in step with the picture (some players started the sound under the card and rushed the start of the video), and captures whose picture starts a moment after their sound are trimmed in sync.
  • 1.12.6: this guide has a new order: what Spoolwell is and a Quick start first, then one section for each job, and the version history here at the end.
  • 1.12.5: a User Guide button in Lightroom's Plug-in Manager and the dashboards opens the guide on thepictureorg.com (the copy that came with Spoolwell when you're offline), and Other -well tools opens the Tools page. The home page button opens Spoolwell's own page, the Plug-in Manager's Updates box looks like the other Picture Org plug-ins, and a finished job says how long it took.
  • 1.12.4: update from Lightroom: the plug-in checks once a day, offers a new version before a command, and has Check now and Install update in the Plug-in Manager.
  • 1.12.3: the Lightroom plug-in no longer stops with an "attempt to call field 'getenv'" error on Windows, and is listed in Lightroom as tpo: Spoolwell™.

Earlier versions: see CHANGELOG.txt.

Appendix: What's in the folder

File Purpose
MediaToolboxDashboard.ps1 The dashboard window. Launches the other scripts, shows live progress, saves your settings.
MediaToolboxWeb.ps1 The browser dashboard for macOS (and Windows). Does the same job in your web browser. See The browser dashboard.
Test-Mp4Integrity.ps1 The validator. Fully decodes each video with ffmpeg and reports PASS / WARN / FAIL. Can also run in Deep Analysis mode.
Sync-MediaManifest.ps1 Inventory tool. Reads each media file's technical details (codecs, resolution, bitrate and so on) with ffprobe and writes a CSV manifest. See Make a video details inventory.
Merge-VideosByDate.ps1 Turns a folder of tape captures (AVI/DV, NTSC or PAL) into one MP4 per recording day, dated from the day's first clip. See Merge tape captures by day.
Remove-BlueScreen.ps1 Trims the VCR blue screen from the start, end and middle of analog tape captures, re-encoding only around each cut. See Trim the blue screen.
Split-VideoAtMarks.ps1 Splits one video into separate videos at break points you mark in the dashboards' player (or type in). See Split a video at break points.
Show-BreakPlayer.ps1 The Windows dashboard's player window for marking break points. It runs as its own program, so if Windows' video playback fails on a file, only the player closes. See Split a video at break points.
Find-SceneChanges.ps1 Suggests break points where the picture suddenly changes scene, for you to check in the player before splitting. See Split a video at break points.
Convert-AudioToAac.ps1 Converts the sound in videos (PCM, FLAC, AC-3 and so on) to AAC, copying the picture untouched and keeping the file name. Checks every new file before it is used. See Convert the sound to AAC.
Replace-VideoTitle.ps1 Redraws the title card or overlay of a finished video (a spelling fix, a missed line), keeping the rest of the picture and the sound untouched. See Fix a title.
Set-MergedVideoDate.ps1 Sets the date of finished videos: the date you type (the Set a video's date tile), or, on the command line, the first original clip's date for MP4s that were merged elsewhere (for example in UniConverter).
PictureOrgLicense.ps1 Checks the free trial and the license key, for the dashboards and the tools. See License and free trial.
ToolboxPaths.ps1 Says where the toolbox keeps your settings, branding, Reports and Logs (your user data folder, Where your files go).
ToolboxUpdateCheck.ps1 Checks whether a newer version of the toolbox is out, each time a dashboard opens (see Updates).
ToolboxJobs.ps1 Builds each tool's command from your choices, for the browser dashboard and the Lightroom plug-in alike, so both run a tool the same way.
Spoolwell.lrplugin The Lightroom Classic plug-in (see Work from Lightroom Classic).
Spoolwell-Lr.ps1 The plug-in's link to the toolbox: it runs the tools on the videos selected in Lightroom (see Work from Lightroom Classic).

Keep all scripts in the same folder. The dashboard looks for the child scripts next to itself. It only reads that folder; your settings, reports and logs go in your user data folder (see Where your files go).

A self-contained copy is laid out like this:

MediaToolbox\
  Launch.bat                  starts the dashboard (no console window)
  Launch-Debug.bat            same, but keeps a console open to show errors
  Launch-Web.bat              starts the browser dashboard on Windows
  Launch.command              starts the browser dashboard on a Mac with Homebrew's PowerShell (the Mac package is an app instead, [The browser dashboard](#the-browser-dashboard))
  MediaToolboxWeb.ps1         the browser dashboard
  docs\                       User Guide (HTML, opened by the User Guide button), Cheat Sheet (HTML and PDF)
  assets\                     logo.png (top-left logo), app-icon.ico (the toolbox icon; shortcut.ico is the same picture under its older name), fonts\ (title font)
  MediaToolboxDashboard.ps1   the dashboard
  Test-Mp4Integrity.ps1       the validator
  Sync-MediaManifest.ps1      the manifest tool
  Merge-VideosByDate.ps1      merges tape captures by day (see [Merge tape captures by day](#merge-tape-captures-by-day))
  Remove-BlueScreen.ps1       trims blue screen (see [Trim the blue screen](#trim-the-blue-screen))
  Split-VideoAtMarks.ps1      splits a video at break points (see [Split a video at break points](#split-a-video-at-break-points))
  Show-BreakPlayer.ps1        the Windows player window for marking breaks (see [Split a video at break points](#split-a-video-at-break-points))
  Find-SceneChanges.ps1       suggests break points at scene changes (see [Split a video at break points](#split-a-video-at-break-points))
  Convert-AudioToAac.ps1      converts the sound to AAC (see [Convert the sound to AAC](#convert-the-sound-to-aac))
  Replace-VideoTitle.ps1      replaces a title card or overlay (see [Fix a title](#fix-a-title))
  Set-MergedVideoDate.ps1     sets a video's date (Set a video's date tile)
  Apply-Updates.cmd           switches in a downloaded PowerShell; the launchers call it
  README.txt                  installing, upgrading and uninstalling
  CHANGELOG.txt               what changed in each version
  LICENSE.txt                 the terms of use (21-day free trial, then a license key; not to modify or resell)
  PictureOrgLicense.ps1       checks the trial and the license key (see [License and free trial](#license-and-free-trial))
  ToolboxPaths.ps1            where your settings, branding, Reports and Logs are kept (see [Where your files go](#where-your-files-go))
  ToolboxCommon.ps1           helpers the processing tools share (they won't start without it)
  tests\                      Test-Toolbox.ps1 (checks the tools on test clips it makes; needs only ffmpeg) and
                              Measure-EncoderQuality.ps1 (compares GPU encoders with the CPU one on a clip of yours)
  ToolboxUpdateCheck.ps1      checks for a newer version of the toolbox (see [Updates](#updates))
  NOTICE.txt                  copyright and the licenses of the bundled FFmpeg, PowerShell and font
  branding.json               the sample studio branding; your own is saved in your user data folder (see [Trim the blue screen](#trim-the-blue-screen))
  bin\                        ffmpeg.exe and ffprobe.exe, with FFmpeg's license (LICENSE-ffmpeg-GPLv3.txt)
  runtime\pwsh\               portable PowerShell 7 for Windows (pwsh.exe)

Reports, Logs and settings are not in this folder: they are in your user data folder (see Where your files go). The Mac package has the same files inside Spoolwell Video Toolbox.app (see The browser dashboard).

Inside the Mac app. What's where inside the app (right-click > Show Package Contents): Contents/MacOS/MediaToolbox is a small signed starter program that runs Contents/Resources/launcher.sh; Contents/Resources holds the toolbox; runtime/pwsh-macos/ there holds PowerShell, bin/ffmpeg and bin/ffprobe are ffmpeg, and lib/ holds the libraries ffmpeg needs. They are the conda-forge community builds, unchanged; their licenses are in runtime/licenses-macos/. runtime/fontconfig/fonts.conf tells ffmpeg where the Mac's fonts are. The app's own messages go to Logs/app_launcher.log in your user data folder.

Appendix: License and credits

© 2026 The Picture Org LLC. Free to try for 21 days, then a license key is needed (see License and free trial); not to be modified or resold; see LICENSE.txt. Includes PowerShell, © Microsoft Corporation (MIT License), and FFmpeg, © 2000-2026 the FFmpeg developers (GNU GPL version 3). Microsoft, Windows and PowerShell are trademarks of the Microsoft group of companies; FFmpeg is a trademark of Fabrice Bellard; other names are trademarks of their owners. See NOTICE.txt.

This is the User Guide that comes with Spoolwell, kept up to date with each release. Questions: info@thepictureorg.com · Spoolwell home page · All the -well tools