Repository navigation
Features
- New
burnaction/generator: draws a subtitle file (.srt, .ass, or a file's text stream) over a section or on its own layer, e.g.add:burn:talk.srt, with overrides for font, size, colors, and alignment. - New
textaction/generator: writes text over a section or on its own layer, e.g.add:text:Chapter 1, with the same overrides and an optional vertical layout. burnwithout a file draws the subtitles of the media under it: its first text subtitle stream, else a .srt or .ass with the same name. They stay on their words through cuts and speed changes.- New
--fontoption, the default font forburnandtext. - New
scaleaction: scales the picture about its center without growing the frame, e.g.scale:0.8orscale:0.4:1. - New
turnaction: turns the picture clockwise about its center without growing the frame, e.g.turn:15. - New
convolveaction: runs audio through an impulse response file, or a folder of H_LL/H_LR/H_RL/H_RR.wav files for true stereo. maskandconfinetakepoly=x1/y1/x2/y2/...for any closed polygon.- Keyframes can say when they are with
value@time, in frames,sec, or%of the section, e.g.zoom:1@0..2@1.5sec..1@100%. - FCP7 XML import reads transitions as dissolves.
- Exporting to an editor warns about the actions and tracks its format can't hold.
- Enable the MJPEG encoder.
Performance
- x265 uses its assembly on arm64 for 10-bit encoding.
zoomscales only the part of the frame that stays visible and reuses its scaler, making 4K renders with zoom 1.4–1.9× faster.- Exporting to Premiere, Resolve, Final Cut Pro, Shotcut, and Kdenlive uses far less memory and is up to 1.6× faster. A 50,000-clip timeline peaks at 0.6 GiB instead of 2.1 GiB for Premiere, and 0.2 GiB instead of 1.6 GiB for Shotcut.
- Importing FCP7 XML streams the file and uses about a third of the memory: a 50,000-clip Premiere XML peaks at 0.7 GiB instead of 1.8 GiB.
- Loading a timeline where many clips have different actions no longer slows down quadratically: 50,000 clips, each with its own volume, load in 0.5 seconds instead of 12.
Fixes
- WebP images, still and animated, can again be used as inputs. Required enabling FFmpeg's vp8 decoder.
- RGB sources keep their colors when encoded to YUV, instead of a strong green/purple shift (#1289).
- Runs on older x86_64 CPUs. Checks for SSE4.2 when it runs, rather than requiring it, which crashed CPUs without them.
- A sample aspect ratio set by the container (an MP4
paspbox, Matroska) is kept, ininfoand in renders. Before, only the one in the video bitstream was used. - A video-only file whose stream has no duration of its own, like Matroska, no longer gives an empty timeline.
- Copying H.264 from Matroska with B-frames no longer fails with "Could not write packet: Invalid argument".
- MJPEG video in avi/mov no longer freezes on its first frame.
- Cover art is skipped for output formats that can't hold it.
- Motion analysis no longer writes out of bounds when a stream changes resolution.
- An unknown audio codec reports an error instead of crashing.
- Subtitle cues starting before 0 no longer crash subtitle analysis.
- Deeply nested
--editexpressions report an error instead of overflowing the stack, and an invalid regex pattern reports an error instead of crashing. - Actions reject
nanandinfvalues. - A speed too small to store in v1 timelines or FCP7 XML time remaps reports an error instead of hanging.
- FCP7 XML import rejects bad integer fields, a timebase of 0, and clips that end before they start.
- Exporting to Premiere, Resolve (FCP7 XML), Shotcut, or Kdenlive with an output path that can't be written reports an error instead of crashing.
- FCP7 XML import reads text in CDATA sections, such as a
<pathurl>, instead of dropping it. - Importing an FCP7 XML file that doesn't exist reports an error instead of crashing.
Misc.
- Can be now be used as a Nim library, without going through command-line strings.
- Use whisper.cpp 1.9.5.
Full Changelog: 31.7.2...31.8.0