Skip to content

Build1 publisher3 min readPublished

FFmpegKit Extended's jump to FFmpeg 9.0.1 is an ABI break with features attached

Six of FFmpeg's core libraries take new major versions in one step. Teams shipping native code or pinned shared libraries next to the wrapper are planning a rebuild, not reading a changelog.

The Engineer · Build desk

Drafted by a language model from the sources cited here and checked against its claim ledger before publication. How we use AISend a correction

What happened

  • FFmpegKit Extended is moving from FFmpeg 8.1.2 to FFmpeg 9.0.1 "Lei", giving Flutter and React Native applications access to FFmpeg 9 through the same FFmpeg, FFprobe and FFplay command execution model already exposed by the wrapper.
  • The upgrade moves FFmpeg's primary libraries to new major ABI versions, including libavcodec 63, libavformat 63, libavfilter 12, libavutil 61, libswscale 10 and libswresample 7.
  • For FFmpegKit Extended users, the capabilities remain accessible through familiar FFmpeg commands; the wrapper provides the execution and session layer while FFmpeg provides the media-processing command surface.
  • Features introduced by FFmpeg 9 can be used from Flutter and React Native by executing the same command arguments normally provided to ffmpeg, ffprobe and ffplay, with no separate media-processing abstraction required.
  • FFmpeg 9 adds both an animated WebP demuxer and an animated WebP decoder.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

FFmpegKit Extended is moving from FFmpeg 8.1.2 to FFmpeg 9.0.1 "Lei", and the same upgrade takes FFmpeg's primary libraries to new major ABI versions: libavcodec 63, libavformat 63, libavfilter 12, libavutil 61, libswscale 10, libswresample 7 [1][2]. For an app that only pushes command strings through the wrapper that is a version bump; for anyone linking libav* from their own native code or pinning those shared objects alongside the wrapper, a major ABI increment means binaries built against the previous majors cannot be assumed to link or load [17].

Six libraries change major number at once [16]. That is the whole story for build engineers, and it is worth noting what the announcement does not give you: it lists the new numbers but not the ones that shipped with 8.1.2, so the size of each step is not computable from the post [18]. Check it against your own build output rather than the release note.

The wrapper's own contract is unchanged. FFmpegKit Extended exposes FFmpeg, FFprobe and FFplay across Android, iOS, macOS, Linux and Windows, with asynchronous execution, parallel sessions, callbacks, cancellation, introspection and cross-platform playback [15]. The publisher's framing is that FFmpeg 9 capabilities arrive through the same command arguments you would pass to ffmpeg, ffprobe or ffplay, with no separate media-processing abstraction in between [3][4]. That is the useful part of a thin wrapper: the ABI churn is underneath the process boundary, not in your Dart or JavaScript.

On the feature side, FFmpeg 9 adds an animated WebP demuxer and decoder [5], which means the format can be inspected through FFprobe's existing -show_streams, -show_format, -show_frames and -show_entries interfaces [6] and played through the FFplay surface without a conversion pass first [7]. The new GPU filters are more conditional. transpose_cuda provides CUDA implementations of clock, cclock, clock_flip, cclock_flip, reversal, hflip and vflip [8]; v360_vulkan is the Vulkan-accelerated counterpart for 360 degree projection work [9]; frc_amf uses AMD's Advanced Media Framework Frame Rate Converter and is documented as doubling frame rate through hardware-accelerated interpolation, with options for DirectX 11/12 execution, interpolation fallback, motion-search quality and whether future frames are used [10][11].

None of that is switched on by upgrading. Hardware features are build-dependent: the project ships dedicated Video+Hardware and Full configurations, and documents CUDA/NVDEC/NVENC and other hardware integrations as requiring custom deployments with non-free libraries enabled [12][19]. A team that wants NVDEC -> CUDA filter -> NVENC without a round trip to system memory is signing up for a custom build and a licensing conversation, not a dependency line change.

FFmpeg 9.0.1 was released on 12 August 2026 and is described as the current stable release in the 9.0 branch [14], with an extensive set of stability, correctness, security, decoder, demuxer, GPU, streaming and format fixes on top of 9.0 [13]. The security fixes are not enumerated in the announcement [13], so treat that as a reason to read upstream release notes before deciding how urgent your rebuild is.

Watch for the per-platform soname list in the Extended build's own release artefacts, and for which packaged configurations actually enable CUDA, Vulkan and AMF paths versus requiring you to compile them yourself [12].

Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories