Automated release: version and notes generated from pull requests merged since 2.10.8.
Added
doctorwarns when the FFmpeg it runs is older than the upstream fix for a known high-severity CVE. ffmpeg-skill does not ship FFmpeg, so a decoder bug in the installed build stays until the user upgrades it.doctor --jsonhas a newffmpeg_securityfield (source,checked, per-binaryversion/status/advisories,warnings), and each older version gets onewarning:line on stderr. The table is small, dated and hand-maintained from https://ffmpeg.org/security.html (checked 2026-10-22). It holds CVE-2026-8461 ("PixelSmash", MagicYUV decoder heap out-of-bounds write, CVSS 8.8), fixed in 8.0.3, 8.1.2 and 9.0. A version on an older branch with no fixed release (7.1, 6.1, ...) is compared with 8.0.3. The line never says the build is vulnerable: an Ubuntu (8.0.1-3ubuntu2) or Debian (+deb13u1) package may carry the fix as a backport under the old number, and the line says so and names the update command. An unparseable version (a git snapshot) gets no warning. It is advice only:ok, every tool'susableand the exit code are unchanged, and nothing is fetched. AISLE's CVE-2026-64830..64835 are not on security.html yet and have no row.
Deprecated
- Python 3.9 (since 2.11.0, removed in 3.0.0). CPython 3.9 reached end of life in October 2025 and gets no security fixes. It still works throughout 2.x: the floor stays
>=3.9and CI keeps testing it. On 3.9,doctorand thenpxinstaller print one stderr line naming the replacement, Python 3.10+.contract --json'sdeprecatedlist has the entry, andrequirements.pythonsays 3.10+ is recommended.
Fixed
Three failures on Ubuntu 26.04 (ubuntu-latest since 2026-10-21), whose apt FFmpeg is 8.0.1. Each is an FFmpeg bug in specific releases; the tools now behave the same on 5.1.1, 6.1.1, 7.0.2, 8.0.1 and 8.1.3, the builds they were run on.
pad.pyno longer hangs on a clip with sound. FFmpeg 8.0.1 (and conda-forge's 7.1.1, though not Debian's 7.1.5) deadlocks with no CPU use when one input feeds a-vfgraph and an-afgraph whose sound both starts late (adelay) and is padded at the end (apad). 8.1.3 does not. The job sat until--timeout(1800 s), with--end 0too. This is the conda-forge 7.1.1 hangreferences/ci-platform-pitfalls.mdrecorded as one build's quirk. Both streams now go through one-filter_complex. An odd-sized source gets its even scale in that graph, becauserun()'s retry adds one only to a-vf.silence.pycuts the sound as well as the picture. FFmpeg 8.0 and 8.0.1 ship anaselectthat passes every frame through: itsactivatecallback was lost when the filter was converted, and 8.0.2 and 8.1 restore it. On those builds a 12 s talk came out with 6.75 s of picture and 12 s of sound (the container reported 12.01 s), and--fillerremoved nothing. The sound is now cut by tagging the frames the samebetween()expression keeps (ametadata=mode=addwith a timelineenable) and keeping the tagged ones (ametadata=mode=select). That keeps exactly the framesaselectkept on every other release, in a command no longer than before.- Multi-line titles and lower-thirds have no box at the line break. FFmpeg 8.0, 8.0.1 and 8.1.0 pass each line of a multi-line
drawtextto HarfBuzz with its newline, so the font's missing-glyph box is drawn at the end of every line but the last and counted intext_w. 8.0.2 and 8.1.1 fix it. On those releasesgraphics.py --text-render autorenders a label that is drawn on more than one line through libass (text_renderer: "ass"), whether the newline was given or added by the wrap. A pinned--text-render drawtextkeeps drawtext and warns.overlay.py --text, which has no libass route, warns and adds anotesline. The release is read with a newffmpeg_release(), becauseffmpeg_version()'s major.minor cannot tell 8.1.0 from 8.1.1. - ci: the Python 3.9 jobs run on
ubuntu-24.04, since Ubuntu 26.04 has no Python 3.9 build. - fix: FFmpeg 8.0.1 (Ubuntu 26.04) failures; doctor CVE advisory; deprecate Python 3.9 (#346)
What's Changed
- fix: FFmpeg 8.0.1 (Ubuntu 26.04) failures; doctor CVE advisory; deprecate Python 3.9 by @kajisho5 in #346
Full Changelog: v2.10.8...v2.10.9