Changelog
[1.11.0] - 2025-04-21
Added
- Added integration with native filters (only Blur is available for now, more to come soon)
- Added procedural properties and texture inputs to effects (undos/redos are not handled at the moment)
- Added procedural properties and texture inputs to transitions (undos/redos are not handled at the moment)
- Added built in effects
- Added support for changing Lottie's shape/text stroke color
- Added support for changing Lottie's shape/text stroke width
- Added check for incorrect duration added in the project json for videos causing weird behaviour, like looping...
- Added new events: LIBRARY_FILTER_ADDED, LIBRARY_FILTER_REMOVED, LIBRARY_EFFECT_ADDED, LIBRARY_EFFECT_REMOVED, LIBRARY_TRANSITION_ADDED, LIBRARY_TRANSITION_REMOVED, EFFECT_PROPERTY_CHANGED, TRANSITION_PROPERTY_CHANGED
- Added ability to provide your own PIXI.Filter effect, in case you need special passes (can't be serialized!)
- Added optional serialization flag for Effects, Transitions and Filters in the library (in case the host always provides them, to avoid shipping them with the project JSON)
- Added undo/redo for Filter intensity
- Added helpers for builtin effects
- Added project upgrader module that will remap old project JSONs to the new structure
- Added Timeline reset
- Added Timeline getFrameDuration
- Added Timeline loadSerializedData for partial loading of the timeline content
- Added support for transparent WebM rendering
- Added to ClipStyle: setWidth, setHeight, setSize, getSize(), getRawSize() (keep in mind that all setters only affect scale and will trigger a scale event, the weight and height is dictated by the media)
- Added library methods to deal with unused assets
- Added onSetupLibrary callback to deal with missing assets (filters, effects, transitions) that were not serialized during project deserialization
Changed
- BREAKING-CHANGE: Rewrote the effect to be part of library now + improvements (compatibility with old serialized projects are handled internally by an upgrader)
- BREAKING-CHANGE: Rewrote the filter to be part of library now + improvements (compatibility with old serialized projects are handled internally by an upgrader)
- BREAKING-CHANGE: Rewrote the transition to be part of library now + improvements (compatibility with old serialized projects are handled internally by an upgrader)
- Removed processUpdate call from Clip class as it was duplicating the update functionality
- Removed transition shader fixes that transformed uniforms into const, now they're properly used as properties when configured at library addition
Fixed
- Fixed lottie leaking properties from text to other components (like stroke color/width)
- Added missing FFmpeg exports
- Improved text padding
- The video now doesn't loop in preview as we don't support yet video looping, so in was misleading before, as on rendering it was not looping
- Fixed multiple big videos being added to the timeline crashing on MacOS
- Fixed uTime uniform on effects not getting updated + made it relative to the clip startTime
- Fixed transition flickering when seeking
- Fixed a bug (at least on Windows/Opera) where adding multiple files at once caused an asyncify error when transcoding
- Added a new way to detect unsupported videos
- Fixed progress reporting
- Fixed a decoder error for some media files that required initial packets for metadata in preview
- Fixed background rendering on return throwing an error
- Fixed deserialization not using the initial Engine init options
[1.10.3] - 2025-04-08
Added
- Added support for setting and getting the intensity of filters
- Added support for text padding
Fixed
- Fixed alpha issues for filters
- Fixed Lottie internal state being propagated from text
[1.10.2] - 2025-03-26
Added
- Added automatic duration for animation in case it is not set
- Added missing Lottie getGroups()
Changed
- Reverted default wrap mode for lottie to clamp
Fixed
- Fixed lottie clip scale/size being overwritten on init
- Fixed lottie clip not identifying layers correctly after obfuscation
- Fixed animation extending when only
in
is set
[1.10.1] - 2025-03-24
Added
- BREAKING-CHANGE: Improved Lottie clip properties
- Added fill color property for LottieClip SetProperty.
- Added background rendering
- Added reset functionality for Engine
- Added setter/getter for wrap mode (not available for all clips)
- Added loop wrap mode for Lottie clips
- Added automigration for existing lottie properties to the new v3 property format
- Worker based audio mixing is now default and doesn't use additional memory for each clip
Fixed
- Fixed lottie font loader to work in Safari
- Fixed lottie color replacement not using the full path for nested compositions
- Fixed TextClip returning only the first character for getFontFamily()
[1.9.8] - 2025-03-14
Added
- Added new shapes to
ShapeClip
(star, rounded rect) - Added new parameters to the
ShapeClip
(strokeAlignment, rectRadius, nrPoints, innerRadius, outerRadius)
Fixed
- Fixed shape clip
- Fixed audio delay on Safari
[1.9.5] - 2025-02-22
Added
Added parallel audio mixing, improves rendering time
By default it's disabled to maintain compatibility
Use engine.getSettings().setRenderAudioUseWorker(true) to turn it on
It might double the tab memory usage during the rendering. Use at own discretio. Please test it with your worst case scenario.
Not recommended for projects with big videos (>1GB+), good for relatively small projects with complex layering or multiple chunks
The memory requirements for this might disappear in the future updates so stay tuned...
Fixed
- Fixed audio error on seeking
- Optimized seeking on projects with multiple chunks of video/audio clips
[1.9.4] - 2025-02-20
Added
- Transcode interface to add your own transcoder (local or server based)
- Added SetProjectId method to Engine
- Added guard for multiple deserialize calls + warnings
- Added font rendering support for lottie
Changed
- Improved compatibility detection on VideoEncoder, now it also swaps the bitrateMode on top of hardware acceleration
- Added VideoEncoder failed configuration detection and now the export exists earlier
- Improved LottieClip loader
- Increased keyframe interval (gop) on encoder
- Improved subtitles rendering
Fixed
- Fixed IndexedDB storage provider
- Added new wasm frame interface for better output
- Fixed Subtitle manager highlight late response on setPosition/setScale
- Added subtitles reset on deserialization
[1.9.3] - 2025-02-19
Fixed
- Fixed fast deserialization without await, now it queues the request
[1.9.2] - 2025-02-10
Added
- Added VideoEncoder failed configuration detection and now the export exists earlier
- Added
setProjectId
method to Engine that handles project id changes
Changed
- Improved compatibility detection on VideoEncoder, now it also swaps the bitrateMode on top of hardware acceleration
- Improved LottieClip loader + preparation for next update Font rendering
Fixed
- Fixed text color animation
- Fixed
StorageIndexDB
storage provider
[1.9.1] - 2025-01-28
Fixed
- Fixed rendering offset issue
[1.9.0] - 2025-01-27
Added
- Improved rendering speed by processing multiple frames
- Added settings for max queue of frames when rendering and throttle factor to avoid memory increase
Fixed
- Changed
showRenderPreview
torenderShowPreview
for consistency also updated getters and setters
[1.8.4] - 2025-01-20
Added
- Added support for changing subtitle's position and scale.
- Added new events for subtitles (transform, style update, animation update, and more).
- Added an option in settings to adjust the composition's clips when the resolution changes (
setViewAutoLayoutOnResize
). - Added an option to automatically wrap subtitles when the resolution changes (
setSubtitlesAutoWrapOnResize
). - Added an option to automatically scale subtitles down/up when the resolution changes (
setSubtitlesScaleOnResize
). - Added a new property to the serialized schema for storing the creation date (
createdAt
).
Fixed
- Fixed subtitles mask for full mode.
- Fixed subtitle scaling on view resize.
[1.8.3] - 2025-01-10
Added
- Added support for retreiving the license key remotely
Fixed
- Fixed issue with VideoFrame missing format on some video formats
- Fixed the decoding for videos with start times different than 0
- Fixed error reporting in
VideoClip
class
Changed
[1.8.2] - 2025-01-02
Fixed
- Fixed the dying WebGL context on iOS Safari
[1.8.1] - 2024-12-30
Fixed
- Fixed the packet decoding for videos that have start times different than 0
- Fixed subtitles text stroke color
- Fixed audio mix, now ignores failed audios
- Fixed timeline render call during export not waiting for processing
- Fixed playback for video/audio when media is missing
- Fixed double decoder init issue when the timeline was at a different than 0 time (prerender seek was causing first update on that time, then on time 0 then when it was getting to the same time back to reinit)
- Fixed Promise.all issues, now it uses Promise.allSettle for independent promises
- Fixed transitions rendering and playback
[1.8.0] - 2024-12-30
Added
- Introduced the
adjustLayout
option for adding clips to layouts, allowing the disabling of thealignTime
functionality - Added support for overwriting the encoder RFC codec string
Changed
- Enhanced error messages to provide more detailed information when an error occurs
- Improved handling of missing video or image media by failing silently to prevent crashes
Fixed
- Resolved an issue with the stroke color of subtitles text
- Fixed transition issues for both the player and rendering processes
[1.7.2] - 2024-12-26
Fixed
- Fixed
HTMLTextClip
initial render
[1.7.1] - 2024-12-26
Fixed
- Fixed
HTMLTextClip
serialization schema
[1.7.0] - 2024-12-23
Added
- Improved log reporting
- Improved resource usage during rendering
- Added handling for missing audio and video streams
- Introduced animation property for text color
- Added support for masking (supported: videos, images, GIFs, HTML text, Lottie)
- Added rounding direction for
Timeline.alignTime
- Added text padding
- Added
setVisible
property for clips
Changed
- Updated the filter and effects deserialization mechanism
Fixed
- Resolved an issue where the texture was updated while the frame was closed
- Fixed time alignment for durations in the timeline
- Prevented
0
from being set as a duration - Fixed an issue where word wrapping was not applied
- Corrected a typo from
warp
towrap
[1.6.0] - 2024-12-05
Added
- Added support for undo/redo (disabled by default)
- Added support for stroke color and stroke thickness
- Store lottie property values in the serialized JSON
- Added the option to specify custom WASM path for FFmpeg
[1.5.3] - 2024-12-04
Added
- Exposed ShapeStyle class
Fixed
- Fixed issue with deserializing subtitles
[1.5.2] - 2024-11-26
Fixed
- Added await on library destroy
- Added a fix for instant init after destroy
[1.5.1] - 2024-11-04
Added
- BREAKING-CHANGE: Made engine export return null in case of nothing rendered
- Added bitrate and crf settings to encoder
- Made clips trims be clamped
Fixed
- Fixed lottie multiline text
- Fixed Subtitles styles not getting deserialized correctly
[1.5.0] - 2024-10-25
Added
- Clip dimensions (width and height) are now included in the serialized object
- New properties in the settings class to control canvas preview visibility during rendering
- Added support for VP8 and VP9 output formats
- Additional settings in the settings class for configuring rendering output options
- Added support for FFmpeg based rendering
- Enabled support for rendering videos with an alpha channel (through FFmpeg rendering)
- Added corner radius option for subtitles
- Added
lineJoin
style property for subtitles
Fixed
- Migrated from
blob
toArrayBuffer
to prevent browser issues with partially unsupported file types - Added a fallback from
window.crypto
toCryptoJS
for SHA-256 hashing in browsers without native support - Ensured clip dimensions (width and height) are included in the serialized object
- Resolved issues with audio tracks in WebM format
- Fixed highlight inconsistencies in subtitles
- Corrected subtitle positioning when resolution changes
- Fixed subtitle highlighting issues when text spans multiple lines
[1.4.4] - 2024-10-18
Added
- Fallback for window.crypto so that hashing can be used in all browsers
[1.4.3] - 2024-10-17
Added
- Updated m3u8 hook to select the best resolution and have a max resolution in the settings
Removed
- Removed the need for
SharedArrayBuffer
Fixed
- Style deserialization for video clips
- Load the correct filename when deserializing media data with permanent url
- Fixed corner mask not reacting to position
- Normalize audio during export
[1.4.1] - 2024-10-14
Added
- Mute/unmute functionality for both clips and layers
- Volume controls for clips and layers
- Visibility for layers
- Option to do complete destroy via
destroy(true)
Fixed
- Fixed the animation opacity for text clips
- Fixed corner radius order on set
- Fixed corner mask not reacting to position
[1.4.0] - 2024-10-10
Added
- Export frame at a specific time as base64 image
- Added export options, including range control, stream selection (audio/video/both)
- Added global settings for configuring the preferred acceleration method
- Multiple rendering optimizations
- Added custom data properties for clips and media data
- Added mediaId to StorageData
Fixed
- Fixed SubtitleManager warp highlight
- Fixed deserialized warp width for subtitles
- Fixed output format for iOS
[1.3.0] - 2024-09-24
Added
- Added support for custom storage solutions.
- Added Indexed DB as a storage provider.
- Added AWS S3 with Presigned URLs as a storage provider.
- Added support for customizing captions.
- Added support for animating the active word in captions.
Fixed
- Fixed the mechanism for identifying the correct media type.
- Fixed subtitle and clip synchronization.
[1.2.2] - 2024-09-07
Fixed
- Fixed animation for subtitles
[1.2.1] - 2024-09-04
Added
- Added smoothing for animation loop
Changed
- Improved rendering speed
Fixed
- Fixed the dissapearing text element
- Fixed rendering bug for mov files
- Text templates scale for Lottie
[1.2.0] - 2024-09-02
Added
- Custom Clips for coding and rendering custom elements on the canvas
- Lottie Clip support for loading and editing After Effects files in the SDK
- Keyframe-based animation system with easing functions
Changed
- Made engine methods accessible through getters instead of directly using properties
[1.1.0] - 2024-08-10
Added
- Support for custom clips
- Expose LottieClip to public
Fixed
- Serialization of audio files
- Double rendering in the timeline
[1.0.7] - 2024-08-10
Added
- Relative and absolute corner radius
Changed
moveClipToLayer
is no longer removing the sprite from the stage
Fixed
- Deserialize display with the correct settings
[1.0.6] - 2024-08-05
Added
- Support for individual corner radius
Fixed
- Removed the
patch-package
dependency for production build
[1.0.4] - 2024-08-02
Added
- Support for corner radius
- Experimental support for lottie files
- Experimental replace functionality for lottie assets
Fixed
- Fixed avi, mp4, mkv support
[1.0.3] - 2024-07-26
Added
- Added support additional parsing methods for m3u8 format
Changed
- Reinitialize canvas when deserializing the display state
- Initialization of the engine should happen in
Engine.getInstance().init()
instead ofEngine.getInstance({})
Fixed
- Fixed stretched content when deserializing with different resolution
- Fixed crashes when deserializing GIFs
Removed
- Removed the
name
property from Clip, ClipStyle, Effect and Filter classes
[1.0.2] - 2024-07-19
Added
- Support for m3u8 format.
Changed
- Improved speed of getting the audio stream when rendering.
- Switched from Media Gallery to Library.
Fixed
- Fixed audio quality issues for longer videos.
Removed
- Removed unnecessary dependencies.