pro_video_editor
A Flutter video editor: Seamlessly enhance your videos with user-friendly editing features.
2.11.3
57K downloads/mo
#1404 most downloaded on pub.dev
hm21/pro_video_editor
What this package is like to depend on
Last release 8 days ago
15 Aug 2026
Ships on a steady schedule
a new release about every 9 days
Nearly every release is documented
notes for 112 of 112 stable releases
Nothing withdrawn
no release was ever pulled
1 years old
148 releases · first in 2025
120 releases in the last 12 months
see the full history below
Release timeline
148 releases · Mar 2025 to Aug 2026Releases
latest 60 of 148-
2.11.315 Aug 2026Release notes
Open source →- FIX(iOS, macOS): Cancelling a render or split while its export still waits for the encoder no longer crashes the app. The queued session was cancelled and then started anyway, which AVFoundation answers with an Objective-C exception Swift cannot catch.
- FIX(iOS, macOS): A cancelled render now unwinds at the HDR pre-transcode or transition pre-render it is in, instead of building the whole composition first and reporting the cancellation as a render error.
- FIX(iOS, macOS): Cancelling an audio merge now stops its encoder instead of running the container to completion, and a cancelled extraction no longer encodes a result nobody reads.
- FIX(iOS, macOS): A cancelled or failed job no longer leaves a half-written file behind — a split half at the path you gave it, a transition blend, or a merge container.
-
2.11.209 Aug 2026Release notes
Open source →- PERF(android, iOS, macOS): A file-backed image is handed to the renderer as a path and opened only while it is decoded, instead of crossing the platform channel as bytes. A few hundred stop-motion frames at 3–4 MB each used to exhaust Android's heap before the first one was decoded. Applies to
StopMotionFrame, imageVideoLayers andChromaKey.backgroundImagebuilt fromEditorLayerImage.file; other sources still travel as bytes. - PERF(android): A
VideoRenderData.audioTracksentry is pre-rendered through a scratch file instead of one in-memory PCM byte array, which reached ~30 MB for a three-minute stereo track. - FIX(android): A source whose decoder emits float PCM no longer comes out as noise in
extractAudio/mergeAudio— the samples were read big-endian on a little-endian device. - FIX(android): An
audioTracksentry that is shorter than its slot and not looping now fills the rest of that slot with silence, as documented, instead of ending the exported audio early.
- PERF(android, iOS, macOS): A file-backed image is handed to the renderer as a path and opened only while it is decoded, instead of crossing the platform channel as bytes. A few hundred stop-motion frames at 3–4 MB each used to exhaust Android's heap before the first one was decoded. Applies to
-
2.11.130 Jul 2026Release notes
Open source →- FIX(android, iOS, macOS): A
ChromaKey.backgroundImageor imageVideoLayerfed a photo straight from the gallery no longer renders sideways — the EXIFOrientationtag is now honored on all three platforms. - FIX(iOS, macOS): A stop-motion frame no longer lands sideways when its thumbnail decode falls back to the full-size decode.
- PERF(android): An image
VideoLayeris decoded at the size it will be scaled to instead of at full resolution, so a large gallery photo no longer risks an out-of-memory overlay.
- FIX(android, iOS, macOS): A
-
2.11.028 Jul 2026Release notes
Open source →- FEAT(android, iOS, macOS): Add
ChromaKey— green-screen removal with a soft edge and spill suppression. The keyed area becomes abackgroundColor, abackgroundImage, or (in aVideoComposition) the layer below. Settable onVideoRenderData,VideoLayerandVideoSegment, resolved per clip as segment → layer → global. H.264/HEVC carry no alpha, so on the single-trackvideoSegmentspath a key without a background is flattened to black. - FEAT:
ChromaKey.autoDetect(video)measures the key color andsimilarityoff the footage, for any saturated screen hue.ChromaKey.detectreturns the raw measurement. Costs one thumbnail decode, no render. - FEAT:
ChromaKey.greenScreen()andChromaKey.blueScreen()presets. Blue separates skin better but crowds denim and blue eyes, so it keys tighter and despills more gently. - FIX(android): A
VideoCompositionlayer no longer squares its own alpha.VideoCompositionTransformationblended against an already-transparent framebuffer, thinning any partially transparent edge. - FIX(android, iOS, macOS): Two sources resolved in the same millisecond no longer collide on one temp file in
EditorVideo.safeFilePath.
- FEAT(android, iOS, macOS): Add
-
2.10.027 Jul 2026Release notes
Open source →- FEAT(iOS, macOS): Add
VideoRenderData.trimToCommonTrackEnd(defaultfalse). Ends each clip where both its video and audio track still have content, so an export no longer finishes on a stretch of missing audio — the seam a looping player replays every cycle. Leave it off when a clip is meant to outlast its own audio.
- FEAT(iOS, macOS): Add
-
2.9.026 Jul 2026Release notes
Open source →- FEAT(android):
RenderEncoderExceptionnow carriesisTransient. A render that failed because the device's codec resources were exhausted is flagged as retryable, so it can be told apart from a genuine format/encoder incompatibility, which is not. Covers a starved decoder as well as a starved encoder. - FIX(android): The software-encoder fallback no longer silently re-runs the hardware encoder under a
software-encoderlabel. It is skipped with an explicit log line when the device has no usable software encoder.
- FEAT(android):
-
2.8.024 Jul 2026Release notes
Open source →- FEAT(android, iOS, macOS): Add
ProVideoEditor.mergeAudioToFile— merge an ordered list of trimmed clip windows (AudioMergeConfigs) into one gap-less audio file plus a per-segment offset map (AudioMergeResult) that maps each clip back onto the output timeline. Every segment is brought to one uniform format (optionalsampleRate/channelsresample/downmix), a clip without an audio track contributes silence instead of throwing, and a single-segment merge is byte-for-byte identical toextractAudioToFile. WAV output is exact on all platforms; other formats encode to AAC. Not supported on Web/Windows/Linux.
- FEAT(android, iOS, macOS): Add
-
2.7.121 Jul 2026Release notes
Open source →- FIX(android, iOS, macOS): A clip transition whose blend fully consumes an adjacent clip (no non-blended body left) now renders instead of degrading to a hard cut.
planOverlappreviously required both sides to keep some non-blended body, so a boundary where a clip is entirely the blend — two back-to-back transitions sharing a short clip, or a pre-rendered seam trimmed to exactly the blend — fell back to a hard cut (not enough content for boundary). The fully-consumed side is now dropped and the blend takes its place; zero-length clips are no longer fed to the composer.
- FIX(android, iOS, macOS): A clip transition whose blend fully consumes an adjacent clip (no non-blended body left) now renders instead of degrading to a hard cut.
-
2.7.016 Jul 2026Release notes
Open source →- PERF(iOS, macOS): Splitting without an explicit
bitratenow stream-copies both halves (passthrough export, frame-accurate via a container edit list) instead of re-encoding them. Measured on an M-series Mac: 29.5s 720p H.264 404ms → 32ms, 5s 10-bit HEVC 793ms → 13ms, 32s 4K60 14.3s → 0.12s. This also fixes two quality losses of the old re-encode: 60fps sources no longer drop to 30fps, and HEVC/HDR sources are no longer converted to 8-bit H.264. An explicitbitrate/qualityConfigre-encodes as before; a source that cannot be stream-copied falls back to the re-encode automatically. - PERF(android): A split without an explicit
bitratenow transmuxes both halves losslessly (Media3 edit-list trim: the mid-GOP half keeps samples from the preceding keyframe and an MP4 edit list gates playback at the exact cut — frame-accuracy verified pixel-exact against the plugin's own thumbnail/metadata pipelines). Measured on a Galaxy S26: 32s 4K60 8.6s → 1.2s, 5s 10-bit HEVC 724ms → 290ms, 29.5s 720p H.264 1.4s → 1.0s. The halves no longer lose quality and HEVC/HDR no longer converts to 8-bit H.264. An out-of-range split position is now validated explicitly up front (samePlatformExceptionas before, since a transmux — unlike the old transcode — would not fail on its own). - FIX(iOS, macOS): The export watchdog now fires reliably for bounds tighter than its 250ms poll interval, and a stall/timeout is no longer misreported as a cancellation when the force-cancelled export happens to finish the race first.
- PERF(iOS, macOS): Splitting without an explicit
-
2.6.011 Jul 2026Release notes
Open source →What's Changed
- fix: diagnose split-export stalls and serialize encoder-heavy exports by @hm21 in #176
- fix: guard render encodes with the stall watchdog and serialize them on Android by @hm21 in #177
Full Changelog: v2.5.1...v2.6.0
Release notes
Open source →- FIX(android, iOS, macOS): Concurrent split and render re-encodes no longer contend for the hardware encoder. They share a process-wide gate so only one runs at a time; previously they starved each other on the shared encoder pool — measured, three concurrent 4K re-encodes each took ~43s versus ~19s alone — and on a throttled device a starved session could sit at 0% until the watchdog (the reported split freeze). Each encode now runs at its solo speed, and the wait is queued before the watchdog starts, so it never counts as a stall. Passthrough/stream-copy exports (no encoder) stay ungated.
- FEAT(android, iOS, macOS): Split and render exports are guarded by a stall watchdog: an encode that makes no forward progress for
stallTimeout(split default 12s) is force-cancelled with a diagnostic reason instead of hanging — e.g.Split export stalled after 12s with no progress [half=end progress=0.00 segment=0.52s split=0.53s total=1.05s preset=… audio=false](preseton iOS/macOS,mimeon Android). A wedged encode therefore releases its gate slot instead of deadlocking later exports.exportTimeout(hard bound) andstallTimeout(inner bound) are tunable onSplitVideoModel(stallTimeoutmust be< exportTimeout); successful exports are unaffected.
-
2.5.109 Jul 2026Release notes
Open source →- FIX(iOS, macOS): Loading many clips no longer freezes the editor. A thumbnail decoder race (out-of-order callbacks seen on iOS 26.5) could hang
getThumbnailsforever or map frames to the wrong timestamps; frames now stay index-aligned with their requested timestamps and the call always completes.
- FIX(iOS, macOS): Loading many clips no longer freezes the editor. A thumbnail decoder race (out-of-order callbacks seen on iOS 26.5) could hang
-
2.5.009 Jul 2026Release notes
Open source →- FEAT(android, iOS, macOS): A
ClipTransitionon the last (or only)VideoSegmentnow wraps back into the first segment, so a single-track render loops seamlessly — e.g. adissolveon one segment cross-dissolves on restart. Overlap types (dissolve/slide/push/wipe) shorten the output by the transition duration and require a single clip longer than 2× the duration (otherwise the wrap is skipped); dip types (fadeToBlack/fadeToWhite) keep the length and dip through the color at the seam. Previously a transition on the last segment was silently ignored.
- FEAT(android, iOS, macOS): A
-
2.4.007 Jul 2026Release notes
Open source →- FIX(android, iOS, macOS): The render
bitrateis now enforced as a real maximum instead of being silently ignored (Android transmuxed the source untouched; iOS/macOS picked anAVAssetExportSessionpreset with its own bitrate). A source above the cap is re-encoded down to it, a source already within it keeps a lossless fast path (transmux / passthrough), and anullbitrate is unchanged. Note: an over-cap source that used to export losslessly is now re-encoded.
- FIX(android, iOS, macOS): The render
-
2.3.007 Jul 2026Release notes
Open source →- CHORE(android): Migrate the Android module to Flutter's built-in Kotlin (drop the manual Kotlin Gradle Plugin apply) so the plugin no longer triggers the KGP deprecation warning and stays AGP 9+ compatible. Now requires Flutter 3.44+.
-
2.2.5-dev.203 Jul 2026 pre-releaseNothing published for this version
-
2.2.5-dev.103 Jul 2026 pre-releaseNothing published for this version
-
2.2.403 Jul 2026Release notes
Open source →- FIX(android, iOS, macOS): Stop-motion render progress now advances smoothly instead of sitting near 0% and snapping to 100% at the end. Media3's image-to-video export reports no intra-export progress on Android, so the encode phase is now driven by a smooth, monotonic time-based estimate (using the real value when available); Darwin reports 100% only after the writer finishes so the finalize step stays visible.
-
2.2.4-dev.103 Jul 2026 pre-releaseNothing published for this version
-
2.2.302 Jul 2026Release notes
Open source →- PERF(android): Timestamp thumbnails (
getThumbnails) are now extracted with up to three parallel hardware decoders that each decode forward through a contiguous timeline chunk (every GOP decoded at most once), with frames GPU-scaled straight to the thumbnail size — instead of one softwareMediaMetadataRetrieverper timestamp. Measured on a Galaxy S26: 20 timeline thumbnails from a 720p H.264 video 2.8s → 0.64s (~4x), 10 from a 1080p 10-bit HEVC video 6.2s → 0.3s (~20x), 14 from a 6s 4K60 HEVC clip 3.6s → 1.3s (~3x), with roughly 3-4x less CPU overall. Extraction keeps its speed while the UI is actively rendering (batch-mode decoder hints, non-blocking pump at display priority). Frame positions are unchanged (still the closest frame) and HDR10/rotation are handled by the GPU. Falls back to Media3FrameExtractor, then to the previous retriever path when a video can't be decoded in hardware.
- PERF(android): Timestamp thumbnails (
-
2.2.201 Jul 2026Release notes
Open source →- FIX(android, iOS, macOS): Layer
animateOut/animateInOutanimations now play for layers that run until the end of the video (endTimeunset). An open-ended layer's end previously resolved to "infinity", so the out-phase never triggered and the layer popped off at the last frame; it now resolves to the composition length, so the layer animates out. Only layers carrying an out-phase animation are affected. - FIX(iOS, macOS): Smoother clip transitions. The pre-rendered transition clip is now authored at the composition's frame rate (
max(30, source fps)) instead of only the outgoing clip's, so a 25 fps source no longer stutters at the transition seams; directionalslide/pushtransitions also use one easing ramp per output frame, removing velocity kinks withbounce/elasticcurves.
- FIX(android, iOS, macOS): Layer
-
2.2.101 Jul 2026Release notes
Open source →- FIX(iOS, macOS): Fix a layer sliding in from an edge briefly shifting and shrinking the video (e.g. a black bar at the top) when a custom output resolution is set. Off-frame overlay content is now clipped to the video frame before letterboxing, so the frame no longer inflates during the animation.
-
2.2.1-dev.101 Jul 2026 pre-releaseNothing published for this version
-
2.2.030 Jun 2026Release notes
Open source →- FEAT(android, iOS, macOS): Add
ProVideoEditor.splitVideo— a frame-accurate split that cuts one video into two files (SplitVideoModel). Each half is re-encoded from the exact cut frame without the render compositor/effects, making it far faster and more stall-resistant than splitting viarenderVideoToFile; every export is guarded by a watchdog timeout. Cancellable and progress-reporting via the taskid. Web/Windows/Linux throwUnimplementedError.
- FEAT(android, iOS, macOS): Add
-
2.1.329 Jun 2026Release notes
Open source →- FIX(iOS, macOS): Make FlutterEngine detach terminal for method-channel result delivery. After detach, a late render/audio/waveform/metadata/thumbnail callback no longer calls a captured
FlutterResultagainst a torn-down engine, closing the remainingNSInternalInconsistencyException: Sending a message before the FlutterEngine has been runpath from 2.1.2.
- FIX(iOS, macOS): Make FlutterEngine detach terminal for method-channel result delivery. After detach, a late render/audio/waveform/metadata/thumbnail callback no longer calls a captured
-
2.1.229 Jun 2026Release notes
Open source →- FIX(iOS, macOS): Cancel active tasks and clear event sinks when the FlutterEngine is torn down. In-flight render/audio/waveform callbacks no longer message a stopped engine, fixing
NSInternalInconsistencyException: Sending a message before the FlutterEngine has been runcrashes on app termination or surface recreation.
- FIX(iOS, macOS): Cancel active tasks and clear event sinks when the FlutterEngine is torn down. In-flight render/audio/waveform callbacks no longer message a stopped engine, fixing
-
2.1.128 Jun 2026Release notes
Open source →- FIX(android): The global output trim now respects per-clip and global
playbackSpeed. A sped-up composition capped byendTimewas trimmed against the source timeline, cutting the output far shorter than the preview; the cap now limits the post-speed output length, matching iOS.
- FIX(android): The global output trim now respects per-clip and global
-
2.1.027 Jun 2026Release notes
Open source →- FIX(android, iOS, macOS):
VideoQualityConfig.custom(resolution: …)now renders to exactly that resolution. The video is scaled to fit (preserving aspect ratio), centered, and padded with black instead of producing an aspect-scaled size (e.g. a 720x720 source with a 1080x1920 resolution previously exported 1080x1080, now 1080x1920 letterboxed). Android letterboxes with aPresentationeffect; Darwin composites the frame onto a black canvas. Quality presets keep their aspect-preserving scale. AqualityConfig'sbitrateis now also applied when used without an explicitbitrate. - FEAT(android, iOS, macOS): Animated GIF image layers.
ImageLayernow detects animated GIFs automatically and plays them back frame by frame; the newloopflag (defaulttrue) repeats the animation for the layer's time range or holds the last frame whenfalse. All existing layer properties (position, size, rotation, timing, animations) apply unchanged. Android decodes frames viaMovieand swaps them per overlay frame; Darwin decodes viaCGImageSourceand selects the frame per composition time. Web/Windows/Linux ignore the field. - FEAT(android, iOS, macOS): Add an output frame-rate cap via a new
maxFrameRatefield onVideoRenderData. It is an upper limit, not a target: a faster source is reduced to it (e.g. 60→30 fps) while a slower source is left untouched, lowering encoding cost and output file size. Android drops surplus frames with Media3'sFrameDropEffect; Darwin caps the compositionframeDuration. Web/Windows/Linux ignore the field. - FEAT(android, iOS, macOS): Add per-layer rotation to image overlays via a new
rotationfield onImageLayer(radians, clockwise around the layer center — matches Flutter'sTransform.rotate, so apro_image_editorlayer rotation can be forwarded directly).offset/sizekeep describing the layout box before rotation. Web/Windows/Linux ignore the field.
- FIX(android, iOS, macOS):
-
2.0.027 Jun 2026Release notes
Open source →- BREAKING: Remove the previously deprecated APIs. Migrate as follows:
VideoRenderData.video→videoSegments: [VideoSegment(video: …)]VideoRenderData.imageBytes→imageLayersVideoRenderData.playbackSpeed→VideoSegment.playbackSpeedVideoRenderData.colorMatrixList→colorFilters(ColorFilter)VideoRenderData.customAudioPath/customAudioStartTime/customAudioVolume/loopCustomAudio→audioTracks(VideoAudioTrack)VideoRenderData.originalAudioVolume→VideoSegment.volumeVideoMetadata.originalResolution→rawResolution
- BREAKING: Remove the previously deprecated APIs. Migrate as follows:
-
2.0.0-beta.109 May 2026 pre-releaseNothing published for this version
-
1.22.027 Jun 2026Release notes
Open source →- FEAT(android, iOS, macOS): Add multi-layer video compositions via a new
compositionfield onVideoRenderData(VideoComposition). A composition stacks severalVideoLayers on a fixed-size canvas, each layer being a time-ordered track ofVideoSegments composited bottom-to-top with its ownopacityand placement (SegmentTransform:offset,size,fit=fill/contain/cover). Clips gaintimelineStart(delayed entry on a layer) andtransform(per-clip placement), enabling picture-in-picture, side-by-side and grid layouts over a configurablebackgroundColor. Android composites layered Media3 sequences with a per-clip GL transform (cover overflow is scissored to its rect); Darwin uses a customAVVideoCompositingcompositor. Per-cliptransition,playbackSpeedandreverseVideoare not applied inside a composition. Web/Windows/Linux ignore the field.
- FEAT(android, iOS, macOS): Add multi-layer video compositions via a new
-
1.21.525 Jun 2026Release notes
Open source →- FIX(android): Fix video export failing with a codec exception on Qualcomm
c2.qti.*encoders. The encoder is now retried through a fallback chain (operating-rate cap → unset → Main/Baseline profile → software) before surfacing a typedRenderEncoderException; working devices keep their original export speed. - FIX(android, iOS, macOS): Fix a render/cancel race where cancelling right after starting an export failed with
TASK_NOT_FOUND. An early cancel is now handled in the Dart layer before the native task starts, so the render resolves as canceled.
- FIX(android): Fix video export failing with a codec exception on Qualcomm
-
1.21.424 Jun 2026Release notes
Open source →- FIX(android, iOS, macOS): Fix layer
slideanimations only moving the layer by its own size, leaving it partly visible at the animation's start/end. Slides are now edge-aware and carry the layer fully off-screen in the slide direction. Requires the matchingpro_image_editorrelease so the in-editor preview matches the export.
- FIX(android, iOS, macOS): Fix layer
-
1.21.323 Jun 2026Release notes
Open source →- FIX(android): Fix
OutOfMemoryErrorwhen pre-rendering longer overlap clip transitions (dissolve/slide/push/wipe). Both sides previously decoded every I420 frame into memory at once (~370 MB for a 2 s 1080p30 transition); frames are now spilled to a temp file and streamed back one at a time during encoding, so heap use stays constant regardless of duration/fps/resolution — at full quality.
- FIX(android): Fix
-
1.21.223 Jun 2026Release notes
Open source →- FIX(android, iOS, macOS): Fix per-segment
playbackSpeedbeing ignored on clips that take part in an overlap clip transition (dissolve/slide/push/wipe). The transition pre-render now resolves the blend in output (post-speed) time and replays each side at its own speed, so footage inside the transition plays at the requested speed instead of falling back to 1×. Independent per-side speeds are supported; dip transitions (fadeToBlack/fadeToWhite) already honored speed.
- FIX(android, iOS, macOS): Fix per-segment
-
1.21.123 Jun 2026Release notes
Open source →- FIX(android): Fix overlap clip transitions (dissolve/slide/push/wipe) appearing rotated 90°/180° when a clip carries container rotation metadata (e.g. portrait phone videos). The transition pre-render decodes coded (un-rotated) frames, so it now re-applies the source rotation via
MediaMuxer.setOrientationHintand maps geometric directions into coded space.
- FIX(android): Fix overlap clip transitions (dissolve/slide/push/wipe) appearing rotated 90°/180° when a clip carries container rotation metadata (e.g. portrait phone videos). The transition pre-render decodes coded (un-rotated) frames, so it now re-applies the source rotation via
-
1.21.1-dev.123 Jun 2026 pre-releaseNothing published for this version
-
1.21.022 Jun 2026Release notes
Open source →- FEAT(android, iOS, macOS): Add clip transitions between adjacent
VideoSegments via a newtransitionfield (ClipTransitionwithtype,duration,curve,direction). Supportsdissolve,slide,pushandwipe(overlap and shorten the output) plusfadeToBlackandfadeToWhite(dip through a color, duration unchanged). Web/Windows/Linux ignore the field.
- FEAT(android, iOS, macOS): Add clip transitions between adjacent
-
1.20.019 Jun 2026Release notes
Open source →- FEAT(android, iOS, macOS): Add stop-motion support to turn a sequence of still images into a video via
ProVideoEditor.instance.renderStopMotion/renderStopMotionToFile. EachStopMotionFrameis held for1 / frameRateseconds (or a per-framedurationoverride) and encoded into a single silent video. The output size defaults to the first frame and frames are mapped onto it viaStopMotionFit(contain/cover/stretch). Darwin encodes withAVAssetWriter+ a pixel-buffer adaptor; Android uses Media3 Transformer image input with aPresentationeffect. Progress and cancellation reuse the existing render task infrastructure. Audio is not mixed in — pass the result throughrenderVideowithaudioTracksto add music. Web/Windows/Linux are not supported.
- FEAT(android, iOS, macOS): Add stop-motion support to turn a sequence of still images into a video via
-
1.19.116 Jun 2026Release notes
Open source →- FIX(iOS, macOS): Fix custom audio tracks being silently dropped when the source asset's duration fails to resolve.
AudioPreRendererpreviously fell back to a zero duration onasset.load(.duration)failure, which collapsed an open-ended trim (audioEndTime == nil) into a zero-length range and discarded the track with a misleadinginvalid trim range … end=0.0slog. The renderer now loads the audio track first and falls back to itstimeRangeduration (the real audio length), only aborting when neither source resolves. Android already decodes to the real end-of-stream for an open-ended trim, so no change was needed there.
- FIX(iOS, macOS): Fix custom audio tracks being silently dropped when the source asset's duration fails to resolve.
-
1.19.012 Jun 2026Release notes
Open source →- FEAT(android, iOS, macOS): Forward native plugin logs back to Dart via
ProVideoEditor.instance.logStream. Every entry written through the shared native logger (including the full renderer diagnostics) is now emitted as aNativeLogEntry(level,tag,message,timestamp, optionalstackTrace), so host apps can pipe these into their own Dart logger and export them. Forwarding is gated by the samenativeLogLevelas the native console output. Web/Windows/Linux keep an empty stream.
- FEAT(android, iOS, macOS): Forward native plugin logs back to Dart via
-
1.19.0-dev.311 Jun 2026 pre-releaseNothing published for this version
-
1.19.0-dev.211 Jun 2026 pre-releaseNothing published for this version
-
1.19.0-dev.111 Jun 2026 pre-releaseNothing published for this version
-
1.18.011 Jun 2026Release notes
Open source →- FEAT(android, iOS, macOS): Add
speedtoAudioExtractConfigsfor pitch-preserving playback-speed changes during audio extraction (e.g.2.0for double speed,0.5for half). WAV applies the time-stretch directly on the decoded PCM (AndroidSonicAudioProcessor; AVFoundationAVAssetReaderAudioMixOutputwith the spectral time-pitch algorithm), while compressed formats are re-encoded — Android via a Media3Transformer, Darwin viaAVAssetExportPresetAppleM4Awith a scaled time range. Note: on Apple platforms a non-1.0speed re-encodes to AAC/M4A, socafoutput falls back to M4A content.
- FEAT(android, iOS, macOS): Add
-
1.17.610 Jun 2026Release notes
Open source →- FIX(iOS, macOS): Fix unstable/glitchy audio on reversed clips inside multi-clip timelines.
AudioReversernow preserves the source audio format (sample rate and channel count) instead of forcing 44.1 kHz stereo, so a reversed clip's audio matches its untouched neighbours and AVFoundation no longer has to reconcile mixed formats within a single composition audio track during looped playback. The reversed segment is also written as an AVFoundation-authored CAF/PCM file (replacing the hand-authored WAV) and inserted at its decoded duration without padding, avoiding encoder priming artifacts and audio-timing drift in the exported video.
- FIX(iOS, macOS): Fix unstable/glitchy audio on reversed clips inside multi-clip timelines.
-
1.17.6-dev.110 Jun 2026 pre-releaseNothing published for this version
-
1.17.508 Jun 2026Release notes
Open source →- FIX(android): Fix custom audio tracks extending sped-up renders to the original source duration. Custom audio is now constrained to the rendered video timeline after global and per-clip playback speed, preventing the final video frame from freezing after the sped-up video content ends.
-
1.17.407 Jun 2026Release notes
Open source →- FIX(web, wasm): Fix pub.dev platform compatibility score. Replace direct
dart:ioandpackage:path_providerimports in the package's public import chain with conditional platform shims, eliminating the "Package does not support platform Web" and "Not compatible with runtime wasm" warnings.
- FIX(web, wasm): Fix pub.dev platform compatibility score. Replace direct
-
1.17.4-dev.107 Jun 2026 pre-releaseNothing published for this version
-
1.17.307 Jun 2026Release notes
Open source →- FEAT(darwin): Add Swift Package Manager (SPM) support for iOS and macOS. The darwin implementation is now distributed as a local SPM package, replacing the previous CocoaPods-only setup.
-
1.17.229 May 2026Release notes
Open source →- FIX(android): Prevent
RENDER_ERRORcodec exceptions on hardware encoders (e.g. Qualcomm AVCc2.qti.avc.encoder) by enabling encoder fallback in the main render path, clamping the requested bitrate into the codec's supported range, and preferring VBR over CBR at high bitrates. - FIX(android): Harden the reverse-video pre-render against crashes. The all-intra encoder is now configured with a clamped bitrate and progressive fallback to avoid
MediaCodec.CodecException, and the in-memory remux is guarded againstOutOfMemoryErrorby checking the temp file size against available heap before loading frames. On failure the clip gracefully degrades to forward playback.
- FIX(android): Prevent
-
1.17.2-dev.1329 May 2026 pre-releaseNothing published for this version
-
1.17.2-dev.1129 May 2026 pre-releaseNothing published for this version
-
1.17.2-dev.1029 May 2026 pre-releaseNothing published for this version
-
1.17.2-dev.928 May 2026 pre-releaseNothing published for this version
-
1.17.2-dev.828 May 2026 pre-releaseNothing published for this version
-
1.17.2-dev.728 May 2026 pre-releaseNothing published for this version
-
1.17.2-dev.628 May 2026 pre-releaseNothing published for this version
-
1.17.2-dev.528 May 2026 pre-releaseNothing published for this version
-
1.17.2-dev.326 May 2026 pre-releaseNothing published for this version