Skip to content

v2.5.0

Choose a tag to compare

@infidelus infidelus released this 29 Aug 14:43
· 8 commits to main since this release

Snipwright 2.5.0

Finding the adverts no longer needs a second program. Chalkline is built into Snipwright, needs nothing installed or configured, and learns each channel's logo from the edits you make. Comskip is still fully supported and is now a choice rather than a prerequisite.

Alongside it: EDL cut lists can be imported and exported properly, the Quick Stream Fix working folder can be moved off a small system drive, output profiles can drop the audio entirely, and both user guides have been brought up to date in English and German.

🎯 Chalkline, a built-in advert detector

Detecting commercials meant finding, installing and configuring Comskip, then pointing Snipwright at it and tuning an .ini per source. Chalkline is part of Snipwright. There is nothing to install and nothing to set up.

It reads three things from the recording — the channel logo, the shape of the picture, and the aspect ratio the broadcaster declares — and where they disagree it prefers to report nothing rather than guess. That trade is deliberate. A missed break costs you a manual pass through the timeline; an invented one silently removes part of the programme, and that is not recoverable once the video has been saved. So a recording Chalkline says nothing about is one to mark by hand, not one where the adverts were quietly missed.

Which detector runs is chosen in Settings → Advert detection, and the choice applies to both Detect Commercials in the editor and the Watcher's unattended scans — there is no way for the two to disagree. Comskip's program path, its .ini and the per-channel .ini selection have moved onto that page from External tools, so everything to do with finding adverts is now in one place.

Chalkline is a little slower than Comskip — a few per cent over a run of several recordings — because it decodes the recording rather than reading the broadcast's own signalling. On a single programme it is not a difference you would notice.

It learns from your edits

Correct a detection, save the project, and Chalkline remembers what that channel's logo looks like. The next recording from that channel is detected better.

It only ever learns from a project you have edited yourself. The Watcher's output is deliberately excluded — that is the detector's own guess, and learning from it would compound whatever it got wrong. Several other conditions have to hold too, all of them about having trustworthy ground truth: the project has to be a .vprj rather than an EDL, the edit has to keep more than half the recording and contain breaks of a plausible length, and nothing can already be remembered for that channel. A logo that is working is never silently replaced, because one poor edit could otherwise undo a good one with nothing to show it had happened.

Learning decodes the whole recording, so it takes several minutes and finishes well after the save that triggered it. The status line says when it starts and when it finishes; a save that will teach nothing stays silent.

Settings → Advert detection → Remembered logos shows what has been learned, with each mask drawn, its size and contrast, and a Forget button to force a fresh start on a channel that is not working well.

If your recordings come from two different machines

This is worth knowing if you record the same channels on more than one box. Recorders disagree about what they keep: some preserve the channel name, others only the numeric service ID. Neither keeps both, and nothing in a recording connects one to the other — so the same channel recorded two ways is learned twice, and neither entry helps the other.

The Remembered logos dialog lets you pair them up by hand. Fill in the missing half of a row and the logo is used for recordings from both. It is the one thing in there you may actually need to do.

✂️ EDL cut lists can be imported and exported

Snipwright could read the EDL Comskip produces during detection, but there was no way to load one of your own. Choosing an .edl through Import Project gave a syntax error, because the file was being handed to the project reader, which expects XML. Dragging one onto the window did nothing at all, and opening one from a file manager pointed at a File → Import → EDL menu entry that has never existed.

An EDL holds cut times and nothing else — no reference to the recording it describes — so it cannot open a video the way a project can. Import Project now accepts EDLs and applies them to the video already open; if none is, it offers to find the recording the cut list belongs to. Dragging one onto the window and opening one from a file manager both do the same thing.

Cut lists can be written out too, as a second format in Save Project As. An EDL saved this way does not become the current project, so Ctrl+P still saves a full .vprj and cannot quietly replace your work with a copy that has no marks in it.

Because an EDL names no video, nothing normally stops one being applied to the wrong recording — and the result looks plausible rather than broken. Two shapes are now stopped for: a cut list running past the end of the video, which nothing legitimate does, and one covering less than half of it, which usually means the times came from a shorter recording. Neither is certain, so both ask rather than refuse.

💾 The Quick Stream Fix working folder can be moved

Repairing a recording writes a working copy — a full remux, so roughly the size of the original — and the editor cuts that copy. Those copies used to go to the system temporary folder with no way to move them. On Windows that folder sits on the system drive, usually the smallest one on the machine.

Settings → Maintenance now has a folder box above the existing retention setting. Leave it blank and behaviour is exactly as before. If the folder you set goes missing or cannot be written to — a disconnected share, a renamed drive — the system folder is used instead rather than the repair failing.

Deleting old copies, which Snipwright has done since 2.1.0, never helped with this: it does nothing when a single repair needs more room than the drive has. Two different problems, and only one of them had a fix. Raised by PaulWebster, who filled a Windows system drive part-way through a repair.

🔇 Export without audio

Output profiles gain a third audio setting, "No audio (silent)", alongside the lossless copy and the AAC re-encode. Useful for a recording with background noise you would rather lose entirely than keep.

The tracks are never offered to the cutter rather than being stripped afterwards, so nothing is decoded, re-encoded or muxed on their account and the export is quicker. Bitrate, surround and loudness grey out when it is chosen, since there is no longer a track for them to act on. It applies to every track, so audio description and alternative languages go with it.

🇩🇪 German, and the guides

Everything new in this release is fully translated. Four longer-standing German faults are fixed too, none of which any count of untranslated strings could have found — in each case the string was present and marked as translated, and simply never looked up. Every Settings page was showing an English heading above German controls. The file and folder field labels — Comskip's program and .ini, the three Files & folders paths, the log folder, and the mkvmerge, ffmpeg and ffprobe paths — were never marked for translation at all. Two age settings on the Maintenance page read "30 days" and "never" directly below a third reading "7 Tage". And eight strings addressed the reader informally while the rest of the interface used the formal form.

Both user guides now cover everything added since 2.4.0: choosing a detector, how Chalkline works and why it reports nothing rather than guessing, learning channel logos, the Remembered logos dialog, the silent audio option, the configurable working folder, and the Watcher following the editor's detector choice. Comparing the two guides section by section also turned up three places where the German had quietly lost content — a paragraph on the skip distances, a whole note on multi-track audio and DVB subtitles, and two sentences on drag-and-drop opening.

🐛 Also fixed

  • The frame under the playhead no longer hides which scene it belongs to. It was drawn with a blue border instead of the yellow one marking scene membership, so the one frame whose membership matters most was the only one not showing it. Reported by PaulWebster.
  • An audio-description track carrying nothing during the programme is no longer reported as a fault asking for a bug report. Where the dropped track holds nothing within the scenes you kept, it is described as what it is. A track that genuinely holds audio and could not be written is still reported as a fault.
  • Settings pages no longer stretch their controls to fill the window.
  • Project files written by Comskip appear in the file dialog again. The filter matched .vprj and .VPRJ, but Comskip writes .VPrj, which is neither — so the files the dialog is most often pointed at were the ones it could not show.
  • Projects Snipwright writes now carry <SnipwrightVersion> rather than <VideoReDoVersion>. Both are read, so every existing project still opens, and the root element is deliberately unchanged so VideoReDo can still open Snipwright's projects.
  • Save Project As and the project pickers described the format as a "VideoReDo Project". Snipwright writes the same .vprj format and always will, but the dialogue is naming Snipwright's own output, so it now reads "Snipwright Project".

📺 HDR and 4K

Unchanged from 2.4.0, and still worth stating plainly: both are largely untested, because UK Freeview broadcasts neither and there is nothing off the tuner to test against. HDR metadata — mastering display, MaxCLL, MaxFALL, and Dolby Vision — is lost on export, leaving a file tagged BT.2020 and PQ with no static metadata. The single-threaded boundary decode introduced in 2.4.0 has been measured only on 1080p H.264; its cost on 4K HEVC is unknown.

If you record HDR or 4K off a PVR and can share a sample, that would be genuinely useful.


Bug reports are welcome, especially with a sample recording — a short clip cut with ffmpeg -ss … -t 60 -i recording.ts -c copy sample.ts is usually enough. If Chalkline misses a break or cuts into the programme, saying which channel it was and whether it reported nothing or reported the wrong thing is the most useful detail you can give. The full changelog is in CHANGELOG.md.