Video Compressor

A desktop workflow for encoding, validation, and safe recovery.

Video Compressor queue and encoding controls, using a synthetic pending test file.
Actual interface, synthetic test file. This capture shows a pending job, not a completed benchmark.

Screenshots use synthetic or built-in fictional demonstration data.

View full screenshot

The problem

Recompressing a video library is easy to start and expensive to get wrong. A smaller file is useful only if the application preserves the required streams, makes failures recoverable, and leaves the original alone.

My contribution

I scoped the fidelity and safety requirements, directed the agent-assisted implementation, compared codec tradeoffs, and validated the queue and recovery behavior. FFmpeg, NVIDIA codecs, and their underlying algorithms are upstream work.

Architecture

The Qt interface manages immutable job settings. A pipeline module coordinates cancellable subprocesses, a durable manifest, media validation, and no-clobber publication. A small C bridge preserves AAC priming; a separately pinned FFmpeg verifier checks decoded audio.

Video Compressor architecture diagram. A text description follows.
Read the architecture flow
  1. 1Source identity + settings
  2. 2Encode video
  3. 3Checksum checkpoint
  4. 4Copy auxiliary streams
  5. 5Validate
  6. 6Publish separate output
Conceptual data flow, simplified from the inspected implementation. Scroll horizontally when needed, or use the text version above. Components can communicate in both directions.

Make verification part of the job

The application separates video encoding from the final mux and validation. A completed encode becomes a checksum-bound checkpoint. If finalization fails, retry can reuse that video instead of spending the encoding time again. An interrupted partial encode restarts; it does not pretend to resume a codec stream.

The tradeoff

Full decode and preservation checks cost time. Encoding FPS alone would hide that cost. The interface therefore reports verification as a separate phase, and the final filename appears only after acceptance.

Unedited application capture on an isolated virtual display, with synthetic media and disposable state.
Read demonstration transcript

A synthetic test file is added to a separate Compressor queue. The source is inspected, then the queue starts. The application reports encoding, validation, and completion. Original media remains separate from the output. This short fixture demonstrates the workflow, not representative throughput or perceptual quality.

74.3% smaller in one retained HDR test

A recorded 4K HDR HEVC test reduced 5,472,536,698 bytes to 1,404,958,321 bytes. That is a 74.327% reduction in final-file size. This was a lossy re-encode of one source, not a promise of invisible differences or typical savings.

Video Compressor evidence summary
Input size5.473 GB
Final output1.405 GB
Encoding throughput97.48 FPS
Measured successful stages30.75 FPS

Method and scope

Retained release-acceptance records, September 2026. Intel i3-12100, 32 GB RAM, RTX 4060, driver 580.173.02; FFmpeg 6.1.1. HEVC NVENC CQ20/p4. Successful-stage timing includes the recorded scan, encode, packet work, mux, and successful validation. It excludes failed development attempts and unmeasured overhead. Some runs overlapped other GPU work. This audit checked the retained records; it did not repeat the full episode.

Verification and limits

38 existing regression cases passed on a private source copy on October 21, 2026. The suite includes synthetic stream-preservation, recovery, no-clobber, timing, color, audio, and Qt queue checks.

  • Savings depend strongly on the source. Two other documented HEVC user runs saved only 3.5% and 4.6%.
  • Structural validation does not establish perceptual transparency, calibrated HDR display quality, or compatibility with every player.
  • Unsupported media fails explicitly. Publication depends on a filesystem supporting the required no-clobber hard-link operation.

These results describe the inspected project and stated test conditions. They are not a guarantee for every input or machine.