github kajisho5/ffmpeg-skill v2.24.0

latest release: v2.24.1
3 hours ago

Automated release: version and notes generated from pull requests merged since 2.23.1.

Added

  • export.py --preset copy --repair remuxes a damaged file (a recording cut off mid-write, broken timestamps from a screen recorder): timestamps regenerated, corrupt packets dropped, negative timestamps shifted to zero, the input untouched. Decode errors and timestamp warnings are counted before and after; errors a remux cannot fix are named.
  • export.py --max-mb MB fits a delivery under a size limit (an email attachment, a chat app's upload cap): a two-pass x264 encode at the bitrate the running time leaves after the audio, with the written size measured. A size too small for a watchable picture (under 100 kb/s) is refused before anything runs.
  • Every writing tool reports output_identity: {size, mtime_ns}, and check.py --expect-identity SIZE:MTIME_NS checks against it. A check run after a write that failed, leaving an older file at the path, or after another run replaced it, used to grade whatever was there; with the flag an identity row FAILs instead. check.py reports the file it graded as input_identity. SKILL.md's delivery check passes it.
  • check.py --compare REF measures the picture against a reference: mean SSIM, the worst frame and its time, and mean PSNR, in one pass; WARN under a mean SSIM of 0.98. Frames of another size are not compared.
  • join.py --copy --transition none joins clips by stream copy, without re-encoding, when they already match: the same codec, size, frame rate, pixel format, colour tags, sample rate and channels in the first video and audio stream, no edit-list pre-roll, and picture and sound ending within 50 ms in each clip. Anything else is refused before ffmpeg runs, naming each clip and what differs (reason: join_copy_mismatch). The join is measured before it replaces anything: its video packet count must equal the clips' total and its length their summed length.
  • cut.py --remove A-B,... drops ranges and keeps the rest, the inverse of --segments: overlapping ranges merge, a leftover shorter than one frame is not kept, and a removal that leaves nothing is refused.
  • SKILL.md routes the 2.24 features from plain requests: "under 25 MB" → export.py --max-mb, "remove 1:00-1:30" → cut.py --remove, "join without re-encoding" → join.py --copy --transition none, "the recording is corrupted" → export.py --preset copy --repair, "how much quality was lost" → check.py --compare. The report format now sits above the routing table so it survives context compaction; two rows already covered elsewhere (--dry-run, VFR phone video) were dropped to stay under the 30 KB budget.
  • Add join.py --copy, cut.py --remove, output identity, check.py --compare, export.py --max-mb and --repair (#385)

What's Changed

  • Add join.py --copy, cut.py --remove, output identity, check.py --compare, export.py --max-mb and --repair by @kajisho5 in #385

Full Changelog: v2.23.1...v2.24.0

Don't miss a new ffmpeg-skill release

NewReleases is sending notifications on new releases.