Skip to content
CAI
Software that uses CAICheck a score

lisamelton/video_transcoding

43.3

Weak · 19 September 2026

1k

lines of production code

Ruby

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a collection of standalone Ruby scripts for video transcoding and crop detection, replacing a previous gem-based library. It provides command-line tools to handle video conversion and analysis using external utilities like FFmpeg and HandBrake. The project has been redesigned to use date-based versioning and requires manual installation of its individual scripts.

Removals

Removal of legacy video conversion and crop detection scripts

The \convert-video\, \detect-crop\, \query-handbrake-log\, and \transcode-video\ command-line tools have been removed from the \bin\ directory. These scripts, which previously handled video transcoding, container conversion, crop detection, and log querying using \HandBrakeCLI\, \mplayer\, and \ffmpeg\, are no longer part of the project.

bin · high confidence

Removal of the legacy video\_transcoding library

The entire \lib/video\_transcoding\ module has been deleted, removing the legacy video transcoding functionality. This includes the removal of the main library entry point, the CLI interface, and all supporting modules for media handling, console output, copyright, crop detection, error handling, and tool management (FFmpeg, HandBrake, MKVmerge, MKVpropedit, MP4track, and MPlayer).

_lib/video\transcoding · high confidence

Behavioural changes

Project redesigned and rewritten with new tools and date-based versioning

The project has been completely redesigned and rewritten, replacing the legacy RubyGems-based package with standalone Ruby scripts (\transcode-video.rb\, \detect-crop.rb\, \convert-video.rb\) that require manual installation. This release introduces incompatible APIs and new behavior, including the addition of \nvenc-av1\ and \nvenc-hevc\ video modes, fixes for \--extra\ option parsing and VBV settings, and a shift to a date-based versioning scheme starting with 2025.01.09.

(repo-wide) · high confidence

Dependencies

Removed legacy video\_transcoding gemspec

The video\_transcoding.gemspec file has been deleted, removing the legacy gem specification and associated metadata (author, email, homepage) from the project.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 43.

Lenses

  • Code Health 76
  • Architecture 69
  • Maturity 47
  • Readiness 24
  • Security 85

Changes since last survey

  • 300 commits — 273 feature/other, 27 fixes

By area

  • (root) — 123 commits
  • bin/transcode-video — 89 commits
  • lib/video_transcoding — 56 commits
  • bin/convert-video — 9 commits
  • bin/detect-crop — 9 commits
  • bin/query-handbrake-log — 8 commits
  • (repo) — 6 commits

Notable commits

  • fix: - Add a special case in the parsiong of name and value arguments for the --extra option to handle 23 specific HandBrakeCLI options which require an "=" between the option name and its argument. - To eliminate modifications elsewhere, this new isolated change simply appends an "=" and the parsed --extra option value to the parsed name and then sets value to nil, reproducing the syntax used by HandBrakeCLI. - There is no change in the behavior of any other --extra option and argument when passed to HandBrakeCLI. For those, the name and value are still separated. - This fixes an embarassingly long-standing open issue.
  • fix: Fix a bug from the previous change which sent the same debug output to the console twice. Also eliminate a redundant blank line.
  • fix: Fix a bug in convert-video where the number of audio channels was wrong when tracks had to be transcoded. This was most noticeable for AAC output and appears due to a change in the behavior of ffmpeg.
  • fix: Fix a bug in transcode-video creating MP3 instead of AAC audio in MKV output on Windows. This was caused by a previous optimization not passing a named AAC audio encoder, i.e. ca_aac or av_aac.
  • fix: Fix a bug in transcode-video preventing the proper detection of certain input audio formats, normally allowed for pass-through, from being copied unchanged to the output.
  • fix: Fix a bug in transcode-video where --small and --small-video were not overriding the --target option.
  • fix: Fix a bug in transcode-video where a constant frame rate was not forced for inputs containing MPEG-2 video. This bug affected the transcoding of all DVDs but very few Blu-ray Discs.
  • fix: Fix a bug in transcode-video where the --filter option failed when nlmeans-tune was used as a argument. This was due to a regular expression only allowing lowercase alpha characters and not hyphens.
  • fix: Fix a bug in transcode-video where the --force-rate option failed to force a constant frame rate when used with HandBrakeCLI versions 1.0 and later.
  • fix: Fix a bug in the parsing of audio and subtitle track names that was introduced by the integration of Libav version 12.0 in HandBrake on December 17, 2016, affecting HandBrakeCLI versions 1.0.0 and later. This caused transcode-video to substitute any commas with underscores in added audio track names when used with those versions of HandBrakeCLI.
  • fix: Fix a bug where query-handbrake-log time reported the wrong result when parsing .log files from output using a forced frame rate.
  • fix: Fix a bug where query-handbrake-log failed for time or speed on OS X or Linux when parsing .log files created on Windows.
  • fix: Fix a crash in transcode-video with the --copy-audio-name option when the input audio track name does not exist.
  • fix: Fix bogus VBV being set when using custom encoder.
  • fix: Fix bug preventing encopts being passed to --extra.
  • fix: Fix bug preventing detection of "default" audio track when parsing scan output from HandBrakeCLI 1.0.0 and later. Fix bug preventing detection of all subtitles and disambiguation with chapter information in MP4 files when parsing scan output from mp4track.
  • fix: Fix bug where query-handbrake-log ratefactor failed if number it was searching for was less than 10 due to HandBrake unexpectedly inserting a space before that number.
  • fix: Fix bug where query-handbrake-log reported wrong time or speed when parsing logs with output from HandBrake subtitle scan mode.
  • fix: Fix failure of subtitle detection for HandBrake nightly builds.
  • fix: Fix failure of version detection for recent HandBrake nightly builds.
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

lisamelton/video_transcoding was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 09386eda37b1cec7d0a570e02fa6f789806f3ded — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.