Automated release: version and notes generated from pull requests merged since 3.8.23.
Added
fit.pysays where the picture sits in the frame it wrote (#519). After a reframe
(--aspect,--widthor--height) the result carriespicture: the picture's rectangle
{x, y, width, height}in the written frame,frame_share(its share of the frame's area),
scale(its width over the source's) and the source pixels--fit cropcut on each side
(cropped). It is measured, not judged: ffmpeg runs the frame's own filters on a white and a
black frame of the source's size and pixel format, and the picture is where the two differ, so
--aspect 9:16 --width 360on a 640x360 clip reports 360x202 at y 218 in a 360x640 frame, as
the written file has it (no frame of the source is decoded). A picture scaled down with no--width/--height
asked gets a note.subject_framingstays inunverified.
Fixed
- A still picture given where a clip with a length is needed is refused as an input (#531).
cut.pywrote 0.04 s withverified: truefrom--start 0and failed askind: outputpast
the one frame;fit.py --durationrefused a speed of 0.00x or wrote one frame as verified
(--method trim);freeze.py,speedramp.pyandloop.pyquoted a length of 0.000;
metadata.py --chaptersfailed inside ffmpeg. Each is nowkind: input, naming the still and
insert.py, which makes a clip of one.freeze.py --at 0still holds a still's one frame. look.py --atpast a still's one frame, and--comparepast either clip's end, is refused
(#531). Both werekind: output("not written"), where a plain clip with a time past its end
got akind: inputrefusal;--comparechecked neither picture's length.--at 0on a TGA
still (which image2 gives a length of one frame) wrote nothing and now shows it.stabilize.pytakes an RGB source (#531). vid.stab aborts on RGB (a PNG still, a qtrle
or RGB.mov:kind: ffmpeg); both passes now stabilize a YUV 4:4:4 copy, converted to BT.709
as every SDR RGB re-encode is (an HDR or BT.2020 one by FFmpeg's own conversion, as on every
other line), and a note says so. The output's pixel format is the encoder line's,
as before (probe.video.pix_fmt).caption.py --fonts-dir DIR --font NAMEreports the font libass drew with (#531). With no
face named NAME in DIR, libass asks fontconfig, and the result said
font_used.substituted: falsewhatever it got. DIR is now read for the face (fc-scan); without
one, the font is reported as a run without--fonts-dirreports it:substituted: true, with a
font_substitutedfallback, only when fontconfig gives another family. A face counts as found
only as libass 0.17 matches one: the folder's own files (not subfolders), by family name, or by
full name for TrueType and PostScript name for CFF. A file is named only for a face in exactly
the asked style (upright, regular or--bold) or one asked by its full or PostScript name; a
folder holding the family in other styles only getsfile: nulland a note, since libass then
chooses among those and the installed faces.font_usednames one face: libass draws a glyph
it lacks from another face, not recorded.- feat: fit reports where the picture sits; a still where a clip is expected is refused, stabilize takes RGB input (#543)
What's Changed
- fix: a still where a clip is expected is refused as an input, stabilize takes RGB input, and fit reports where the picture sits by @kajisho5 in #543
Full Changelog: v3.8.23...v3.9.0