look.py, scenes.py --sheet, overlay.py --text and graphics.py could crash on real Windows
FFmpeg builds (confirmed on winget's gyan.dev 9.x): drawtext's own fontconfig resolution dies
with an access violation whenever it has to resolve a font by family name, with or without a
valid fonts.conf — and doctor reported missing required: none, since -filters correctly
lists drawtext as present; the crash only ever surfaced as a runtime failure, the exact thing
the step-0 capability check exists to prevent.
- All four tools now resolve a concrete font file by default (
default_font_file()in
_common.py: a well-known system font path on Windows,fc-matchon Linux/macOS) and emit
fontfile=instead offont=whenever one can be found —fontfile=skips fontconfig
entirely, the one form confirmed not to crash.font=remains the fallback when nothing can be
resolved, unchanged from before. doctornow actually renders one frame throughdrawtextinstead of trusting the-filters
listing alone. A confirmed crash (killed by signal on POSIX, an access-violation-style exit on
Windows) downgradesfilter:drawtextfrom "listed" tomissing, with the crash detail in
errors[]; an ordinary nonzero exit proves nothing either way and leaves the listing-based
result standing (same "unknown is not missing" principle used everywhere else in capability
detection).scenes.py --sheetgained--no-timecode, matchinglook.py, as a way out if drawtext is
ever genuinely unusable on a machine.- Fixed a
SyntaxWarning: invalid escape sequence '\;'in_common.py'sshell_quote()(a stray
backslash before an already-unescaped character; harmless today, an error in a future Python). - README's Quick Start script examples now note that Windows/Git Bash needs
python, not
python3(bin/install.jsanddoctor/contractalready handled this; the raw examples
didn't say so). - SKILL.md's Gotchas section documents the crash and the fixes above.
Thanks to @willy92wins for the detailed repro in #100.
What's Changed
- fit/color/graphics/overlay: stop silently dropping subtitle/data streams by @kajisho5 in #92
- caption.py --mode mux: keep the input's existing subtitle track(s) by @kajisho5 in #94
- color.py --correct: add gamma, lift/gain, levels, and curves by @kajisho5 in #95
- stabilize.py: add --tripod and --crop (keep/black) by @kajisho5 in #97
- README: name the contract-derivation pattern SPEC by @kajisho5 in #98
- README: surface SPEC near the top by @kajisho5 in #99
- fix drawtext crash on Windows fontconfig resolution by @kajisho5 in #101
Full Changelog: v0.12.0...v0.12.5