npm / mediabunny
mediabunny
What changed in mediabunny 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
13 breaking23 deprecations117 new APIs and options6 performance32 behavior and defaults195 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initmediabunny 1386 changes
Breaking changes 13
Repeated metadata keys for Vorbis-style metadata in Ogg and FLAC are now surfaced as string arrays in raw.
The WAVE demuxer now throws immediately for unsupported formats.
When defined, keyFrame now always takes precedence over keyFrameInterval.
CustomSource is the new name for StreamSource.
Now always returns tracks in the order in which they appear in the input file.
Adds an async getter for codec data, alongside async getters for most
InputTrackdata to support lazy loading.Now outputs audio packets in ADTS format.
Defaults to the input file's first timestamp instead of 0, unless that timestamp is smaller than 0.
Values returned by OutputFormat no longer use Infinity for upper bounds; they contain the actual bound instead.
Calling Conversion.cancel() causes existing execute() calls to throw instead of never resolving.
VideoSample.allocationSize always throws if the internal format is null.
VideoSample.copyTo always throws if the internal format is null.
allocationSize()andcopyTo()now throw with an explicit error message when called withformat === null.
Deprecations 23
ConversionVideoOptions.allowRotationMetadata is deprecated; use ConversionVideoOptions.allowTransformationMetadata instead.
OutputFormat.supportsVideoRotationMetadata is deprecated; use OutputFormat.supportsVideoTransformationMetadata instead.
Bitrate fields across the API are deprecated; use the new quality field instead.
StreamSource remains available as a deprecated alias for CustomSource.
Deprecated; use
InputAudioTrack.getNumberOfChannels()instead.Deprecated; use
InputAudioTrack.getSampleRate()instead.Deprecated; use the async
InputTrack.getCodec()getter instead.Deprecated; use
InputTrack.getDisposition()instead.Deprecated; use
InputTrack.getInternalCodecId()instead.Deprecated; use
InputTrack.getLanguageCode()instead.Deprecated; use
InputTrack.getName()instead.Deprecated; use
InputTrack.getTimeResolution()instead.Deprecated; use
InputVideoTrack.getCodedHeight()instead.Deprecated; use
InputVideoTrack.getCodedWidth()instead.Deprecated; use
InputVideoTrack.getDisplayHeight()instead.Deprecated; use
InputVideoTrack.getDisplayWidth()instead.Deprecated; use
InputVideoTrack.getPixelAspectRatio()instead.Deprecated; use
InputVideoTrack.getRotation()instead.Deprecated; use
InputVideoTrack.getSquarePixelHeight()instead.Deprecated; use
InputVideoTrack.getSquarePixelWidth()instead.Deprecated; use
.on('read', ...)instead.Deprecated; use
.on('write', ...)instead.Added a warning for double library loading.
New APIs and options 117
HLS variable substitution and #EXT-X-DEFINE tags are now supported.
Added a transparency hint for the muxer.
Added the beatsPerMinute metadata tag.
Added boundaryTolerance to control the maximum permitted additional or removed media needed to make a copy path possible.
BaseTrackMetadata adds bitrate and averageBitrate fields for providing bitrate guesstimates as metadata.
The canEncodeVideo helper functions accept a frameRate option.
Flip metadata and operations are supported across the API surface, including ISOBMFF and Matroska; custom transformers receive flip as a transformation input, and Conversion can pass it through in the packet copy path.
ISOBMFF btrt bitrate metadata is extracted and exposed through InputTrack.getBitrate() and InputTrack.getAverageBitrate().
InputVideoTrack exposes the raw 3x3 affine transformation matrix applied to raw video frames; the matrix can also be written into new files through VideoTrackMetadata.transformationMatrix.
Controls copy-specific behavior, including the tolerated timestamp shift allowed to make copy conversions work.
Added to most source options to enable better handling of otherwise unhandled errors thrown out of band.
Adds a property indicating support for negative timestamps; negative timestamps can now be muxed for ISOBMFF, Matroska, and MPEG-TS.
Adds DTS as an audio codec under the codec identifier dts.
Adds support for reading and writing DTS in ISOBMFF files.
Adds support for reading and writing DTS in Matroska files.
Adds an extension package providing a fast DTS audio decoder and encoder polyfill.
Adds support for reading and writing DTS in MPEG-TS files.
Retrieves detailed video frame rate information.
New track metadata enables writing zero-packet tracks.
New track metadata enables writing zero-packet tracks.
Quality can represent arbitrary quality levels, specify bitrate and bitrate mode, and set a concrete per-codec quantizer level.
Setting composable: true makes a Conversion no longer own its Output, allowing additional tracks to be added manually or multiple conversions to target the same output.
Conversions can be paused using the pauseSignal option on execute.
Conversions can be stepped forward deliberately using the until option on execute.
WAVE now supports reading and writing the 64-bit float sample format.
New extension package adds an extremely fast ProRes decoder based on TurboRes that supports all ProRes flavors.
Now has full ProRes decode and encode support, including transparency.
New callback for custom encoders and decoders can surface errors that occur outside normal method calls.
Added read/write support for Apple ProRes across ISOBMFF and Matroska.
A new singleton controls Mediabunny's log level, allowing CLI applications to silence console output.
Decoder preferences like hardware acceleration can now be configured for each video sink.
Added an option to disable offsetting timestamps by date time metadata found in HLS playlists; it defaults to true.
Adds a method for getting a slice of an existing audio sample.
Adds options for specifying a custom hardware context.
Adds per-frame encoding settings through VideoSample.encodeOptions.
Adds a method for providing per-frame encoding settings.
Added support for reading and writing QuickTime nclc color space information.
Provides custom data backing for AudioSample to avoid copying data around.
A new extension package enables the full Mediabunny feature set, including audio and video decoders and encoders and video transformations, in Node, Bun, and Deno.
Register Mediabunny for server-side use to access audio and video decoders and encoders, as well as video transformation capabilities.
Registers a custom transformer to power VideoSample.transform().
A CPU-based alpha splitter and merger fallback is available for transparent video encoding and decoding.
Performs simple transformations on a video frame, including resize, rotate, and crop.
Provides custom data backing for VideoSample to avoid copying data around.
Adds an option that can be set to false to fall back to a more primitive, slower, but potentially more stable way of reading from Blobs.
Add
sampleFormatto modify the audio sample format before passing it to the encoder.Add
sampleFormatto modify the audio sample format before passing it to the encoder.Adds an audio pre-processing transform for changing audio data, such as resampling or remixing, before it is passed to the encoder.
Adds support for writing tracks whose timestamps are relative to Jan 1 1970; input tracks can be checked with
InputTrack.isRelativeToUnixEpoch().Adds global helpers for checking decodability and listing decodable codecs, including audio- and video-specific variants.
Adds a way to write Segmented MP4 as a segment file and a separate init file.
Conversion can now create multiple output tracks from a single input track, enabling multiple renditions.
Now receives a second
processedTimeargument.Adds a setting accepting
'all'or'primary'to control which tracks are considered for conversion.Adds an event-listening base class with an
.onmethod, used byInput,Output,Source, andTarget.Adds support for reading HLS playlists, including live and VOD playlists, multiple tracks, encryption, and supported segment formats.
Adds HLS playlist writing for configurable track configurations and output structure, with VOD and live support.
Emits a
sourceevent every time a new source is acquired.Adds a check that resolves to
trueif Mediabunny can read the file.Now accepts optional tracks and packet retrieval options to limit duration calculation and configure live-stream behavior with
skipLiveWait.Retrieves duration from file metadata without finding the last packet; returns
nullif duration metadata is unavailable.Now accepts an optional
InputTrack[]; when provided, the first timestamp is computed only for those tracks.Adds format-specific input configuration, which can be used to provide decryption keys for DRM-protected content.
Adds a separate init file for track initialization data, usable with segmented MP4 and MPEG-TS.
Adds a way to determine whether tracks can be presented together, with helpers for finding pairable tracks.
Now accepts
PacketRetrievalOptionsto configure live-stream behavior usingskipLiveWait.Adds live-track detection and a refresh interval that can be used to poll the live edge for updates.
Adds track filtering and sorting queries accepted by track-selection methods on
Input, withasc,desc, andpreferhelpers.Adds a way to define the zero point for media sample timestamps; the option is also available for audio track sources.
Emits a
targetevent every time a new target is acquired.Adds a separate init file target for formats that require one, such as CMAF.
Adds a callback invoked right before output finalization completes.
Adds output track classes returned by the
Output.add*Trackmethods.Adds output track groups for defining track pairings in HLS outputs; tracks can be assigned through
BaseTrackMetadata.group.Audio and video media sinks now accept packet retrieval options in their methods, enabling
skipLiveWait.Can disable waiting for a live stream to catch up when media data beyond the live edge is requested.
Adds multi-file inputs that can return a source for a requested file path; custom implementations can use
CustomPathedSource.Adds customizable multi-file outputs that return a new target for a given file path.
Adds
slice()to sources and targets, returning ranged objects mapped to a subset of the original source or target.Adds source reference counting; a source is disposed only after its last reference is freed.
Emits a
finalizedevent after the target has been finalized.Adds a primary disposition to mark the main track, corresponding to HLS's
DEFAULTattribute.Adds a video pre-processing transform for changing frames, such as resizing or rotating them, before they are passed to the encoder.
Adds appendOnly to allow append-only (streamable) writing of FLAC files.
Adds a method to get the first key packet of a track, which is not necessarily the first overall packet.
Adds options for configuring the sampling frame rate of MediaStreamVideoTrackSource.
Adds a package providing FLAC encoder support in browser and server-side environments.
Adds a package that polyfills AAC encoder support for browsers that lack it, such as Firefox, and for server-side environments.
Adds pixelAspectRatio, squarePixelWidth, and squarePixelHeight fields to InputVideoTrack.
Adds the Rational utility type.
Adds the Rectangle utility type.
Adds pixelAspectRatio, squarePixelWidth, squarePixelHeight, and visibleRect fields to VideoSample.
Adds an extension package providing encoding and decoding support for AC-3 and E-AC-3 audio codecs.
ISOBMFF, Matroska, and MPEG-TS now support reading and writing AC-3 and E-AC-3.
A registry was added for formally specifying codecs that go beyond WebCodecs.
The Conversion API now supports negative trim ranges.
OutputFormat now exposes supportsTimestampedMediaData metadata.
Added the parallelism option, which can be set to 1 to prevent deadlock issues in certain conditions.
Added support for reading and writing ID3 metadata for ADTS files.
Added a property representing the 1-based index of a track among other tracks of the same type (video or audio).
Returns the smallest starting timestamp across all tracks.
Adds the MPEG-TS export.
Adds MPEG-TS input support for AVC, HEVC, AAC, and MP3.
Adds MPEG-TS output support for AVC, HEVC, AAC, and MP3.
Adds the options export for MPEG-TS output format.
Added an option to set an upper bound for page duration, enabling lower-latency streaming.
Adds a
hardwareAccelerationoption for video conversion.Accepts options for specifying output custom pixel formats, plane layouts, and more.
Accepts options for specifying output custom pixel formats, plane layouts, and more.
Adds the
VideoSampleColorSpaceexport, now used byVideoSample.colorSpace.Adds an optional
layoutoption.Adds a video conversion option, true by default, that allows rotation metadata to be stripped from the output file.
Adds pause() and resume() methods.
Adds pause() and resume() methods.
Track disposition metadata can now be read and written, including whether tracks are default or intended for hearing-impaired users.
Added read/write support for AVC3 in ISOBMFF.
Added a Conversion API function for custom user-defined video and audio transformations, such as correcting color or adding an overlay.
Performance 6
Fixes a performance regression in the server package.
Improved performance of color-alpha merging code by using a worker pool.
Fixed metadata reading that sometimes took unnecessarily long.
Improves cloning performance for ArrayBuffer-backed samples.
Optimized the seeking algorithm to work better across networks.
Tree shaking was improved for some bundlers.
Behavior and default changes 32
Ogg files with non-zero start timestamps are now supported.
Ogg end packet trimming is now supported.
Video encoders claimed due to inactivity are now automatically refreshed.
Made the HLS demuxer less strict with playlists that reference non-existing media groups.
ISOBMFF muxing now automatically writes the btrt bitrate box.
Copy conversions now support arbitrary trim ranges, allowing media to be trimmed without transcoding.
Color space information is extracted directly from the video bitstream when the container has no metadata.
ISOBMFF and Matroska muxers now include partial color space information in the container.
Added support for ISOBMFF files carrying Annex B AVC/HEVC.
Writing HLS with single file mode and fMP4 segments now produces a standalone-valid segments file that can be played independently.
Mipmapping for resizing has been improved.
Improved the quality of canvas-based video resizing.
Encoders support quantizer-based constant-quality encoding; quantizer mode is selected automatically when using subjective qualities.
Mediabunny can now read ID3v2 metadata from FLAC files.
The default cache size increases from 16 MiB to 32 MiB.
The FLAC encoder can output different bit depths (16 or 24) depending on the incoming audio samples.
The default trim start is now the start timestamp of non-user-discarded tracks rather than all tracks.
No longer need to begin with a key frame if codec parameters occur in later packets; files with no key frames require
initInput.Now supports responses without a known length, including those without
Content-LengthorContent-Rangeheaders.No longer always requests byte 0 to determine file size; it can determine size from any starting offset.
The default key-frame interval is now 2 seconds instead of 5 seconds.
TXXX ID3v2 frames now parse as Record<string, string>.
Includes displayAspectWidth and displayAspectHeight only when they are necessary.
Samples the underlying video track at a regular frame rate, reducing the chance of output files with wildly variable FPS that glitch in some players.
Reading and writing video frames with non-square pixels is supported for ISOBMFF, Matroska, and MPEG-TS, including when drawing video samples and using the Conversion API.
AC-3 and E-AC-3 are now recognized audio codecs.
Can now modify almost all packet properties, rather than only timestamp and duration.
UrlSource now aborts ongoing requests immediately on dispose.
Now returns
Promise<PlaneLayout[]>instead ofPromise<void>, matching the WebCodecs API.AVC SEI recovery points count as keyframes, except on older Chromium versions.
Error logging is now added when open samples are garbage collected.
Disabled ISOBMFF tracks are now included in the returned tracks, with disposition.default set to false.
Fixes and other changes 195
Adds a workaround for Firefox emitting an incorrect AVCC record when encoding AVC on Windows and Linux.
Adds a workaround for Firefox incorrectly shifting video timestamps forward when encoding.
Improves the workaround for WebKit AudioEncoder emitting an incorrect AAC description.
Progress reporting is improved when some tracks have less data than others.
Packet iteration no longer stops prematurely when some segments have zero packets.
Fixed a race condition that sometimes prevented InputDisposedError from being thrown when disposing HLS inputs.
Fixed color spaces when encoding video and when converting to RGB.
Fixed excessive packet pressure being applied to new video decoders.
The constructor no longer throws when given a VideoFrame with out-of-spec color space fields.
The VP9 quantizer range is now 0–255.
Fixed incorrect packet timestamps surfaced by the MPEG-TS demuxer for certain malformed streams.
Composition offsets in trun boxes are always parsed as signed, fixing playback for some files written by faulty muxers.
Fixed AppendOnlyStreamTarget not emitting the write event.
Fixed the emitted codec string differing from the actual codec parameters in the bitstream.
Fixed color range issues in alpha frame merging.
Pixel aspect ratio information is extracted from SPS when the ISOBMFF file lacks a pasp box.
Extension worker threads are fixed for Bun 1.4+ and Deno.
The MP3 muxer now finalizes successfully when xingHeader is false.
Fixed the codec string used for Opus in HLS.
The HLS muxer no longer emits
BANDWIDTH=0.Fixed how Matroska segment duration is interpreted.
Fixed conversion API errors for files that violate the GOP timestamp rule for audio tracks.
Extension worker errors now surface instead of causing promises to never resolve.
Added support for recursive SeekHeads when reading Matroska.
Fixed audio resampling sometimes flushing output buffers too early.
Fixed the HLS BANDWIDTH attribute not being inherited to tracks for URI-less media renditions.
Fixed inverted A-law audio polarity.
Fixed off-by-one errors when using AudioSample.copyTo().
Fixed invalid scaling for µ-law and A-law audio.
Fixed off-by-one errors when doing PCM audio encode->decode roundtrips.
Content-Length and Range headers are ignored on encoded 206 responses.
Fixed Conversion API errors when the input file violated the GOP keyframe rule.
Incorrect parsing of AES-128 IV in HLS is fixed.
Untranslated rotation matrices are no longer written into ISOBMFF header boxes.
The ISOBMFF demuxer now respects the movie-global transformation matrix.
If Output.finalize() fails, Output now automatically transitions to the canceled state.
CustomSource now cancels streams when disposing inputs.
Fixed upmixing from stereo to quad or 5:1 that resulted in NaN samples.
The AVC software decoder no longer drops B-frames.
The FLAC muxer no longer prefers raw.date over date for metadata.
Fixed incorrect use of Content-Length when the server returns compressed content.
Conversions no longer crash on an empty audio trim range.
Fixed the Matroska duration computation logic.
The MPEG-TS demuxer now infers negative timestamps and handles one modulus wrap of timestamps.
Sample iterators now terminate internally when throwing.
Relaxed an erroneous assert in esds box parsing.
AudioSample.copyTo() is reliable for non-f32-planar targets across all browser versions.
Fixed a browser-internal memory leak in BlobSource.
Infinity is no longer rejected for numeric fields whose documentation permits it.
Fixes a missing audio decoding timestamp offset in rare cases.
Fixes packet parsing logic for AV1 and VP9.
Fixes Chromium choking on AVC SEI recovery points.
Fixes incomplete color space information being passed to Chromium's VideoDecoder, which caused incorrect colors.
Fixes generation of the vpcC box.
Fixed incomplete parsing and generation of
AacAudioSpecificConfig.Fixed recognition of fMP4 HLS segments that start with an
emsgbox.Fixed Mediabunny's behavior with custom
Promiseimplementations.Fixed the missing fallback for encrypted ISOBMFF files.
The missing WebCodecs error message is more useful in insecure browser contexts.
Fixes an error caused by closing a decoder twice.
Added a workaround for a WebKit bug where TypedArray offsets are not respected when writing to FileSystemWritableFileStream.
Video and audio decoder config validation has been improved.
Encodability checks no longer throw on Safari in some cases.
fMP4 files with sparse fragments now have correct traf indices written when not all tracks occur in every fragment.
HLS writing now produces a correct init segment when segments are sparse and not all tracks occur in every segment.
Input.getFirstTimestamp() now works for files with zero-packet tracks.
A rare assertion error in the MPEG-TS demuxer has been fixed.
UrlSource now honors maxCacheSize when the server responds with 200 and slows response consumption in that case.
Changed alternate group assignment in the ISOBMFF muxer to work around a WebKit bug.
Fixed an occasional assertion failure when Output.start() is not awaited.
Fixed the ISOBMFF Compressor name not being written as a Pascal-style string.
Improved error handling reduces “Sample wasn't closed” warnings.
Promises no longer hang indefinitely sometimes when calling Input.dispose().
Video tracks are now labeled as containing an alpha track, including tracks using ProRes 4444.
Decoders are now closed in error situations where they previously could remain open.
BlockDuration is now written when writing WebVTT into Matroska.
Video and audio samples are always closed, including during error cases.
Fixed nested workers randomly shutting off in Firefox.
Duration is now computed correctly for multi-frame Opus packets.
Writing WebVTT in MP4 no longer creates an assertion error.
Fixed incorrect decoding of ProRes 12-bit frames.
Fixed occasional crackle from the audio resampler.
Fixed packet fixing that was slightly too aggressive with AUDs.
Fixed occasional stalls in file reading.
Fixed warnings in the Vite dev server caused by this package.
Fixed ProRes packets not being read and written correctly from and to Matroska files.
Fixed bundler warnings when using the package.
Fixed the Conversion API sometimes changing audio sample format mid-conversion.
Fixed color-alpha merging code for padded frames.
Removed an unintended console log from the range request warning path, preventing that extra output.
Fixed packet segmentation for AVC/HEVC in MPEG-TS when no AUDs are present.
Improved error handling after an Input is disposed.
Fixed request resolution logic that did not properly handle redirects.
Fixed occasional assertion failures when reading files with high contention.
Disposing invalid input no longer causes an unhandled rejection.
Conversion API process is now called after other transformations instead of before them.
Zero-sample ISOBMFF fragments no longer throw an error.
Improves VideoSample error messages when the environment has insufficient canvas support.
At least one track per type is now enabled when muxing ISOBMFF.
Fixed memory leaks in @mediabunny/server.
UrlSource now properly respects the Range header passed into requestInit.
Fixed some ID3 tags emitting Date instances with an incorrect timezone.
Fixed FinalizationRegistry causing Input memory leaks when used with CustomSource.
Recovery of MP3 frame boundaries is improved for broken files.
Added a workaround for a Chromium bug that caused the first encoded video packet not to be marked as key.
Fixed a bug in ID3v2 size parsing.
Segments starting with a sidx box are now recognized.
Track process synchronization is fixed; reads are now more sequential.
Incorrect timestamps of decoded audio in Chromium are fixed.
The demuxer no longer errors when seeking to negative timestamps.
Range iterators no longer cut off samples with negative timestamps by default.
No longer throws when the sample format is null and a custom format override is provided in the options.
No longer throws when the sample format is null and a custom format override is provided in the options.
Fixed incorrect timestamps that could lead to negative timestamp errors.
Fixed negative timestamps occurring with live media driven by media sources, which led to muxer errors.
Fixed behavior on ISOBMFF files with incorrect pasp boxes.
Fixes some HEVC packets that caused VideoDecoder errors in Chromium.
Fixes FLAC bitrate validation, which incorrectly treated bitrate as a required field.
Fixes unreliable PCM logic for regular MP4s.
Fixes the structure of regular MP4s containing tracks with non-zero start timestamps.
Fixes access to the file system in server-side environments.
Fixes problems handling timestamps beyond the int32 limit.
Fixes duration calculation and support for multiple ISOBMFF
trunboxes.Fixes incorrect frame locations in the MP3 Xing TOC.
The codec string is now correctly identified as MP3.
Fixes an off-by-one reorder buffer error.
Its reader is now properly canceled when the source is disposed.
Now reliably controls the amount of parallel requests.
Fixed missing default values in the Matroska demuxer.
Fixes incorrect rotation extraction in some cases.
Fixes incorrect reading of MPEG-TS PAT in some cases.
Fixes incorrectly written video rotation metadata, including when rotation is baked into the video.
Fixed incorrect GOP timestamp verification logic for the first GOP.
Fixed faulty MPEG-2 Transport Stream detection.
Fixed cases where the CTS offset was not included in fMP4 muxing.
Adds a fallback using a hidden <video> element, enabling Firefox support.
Fixed creation of .mov files that were incompatible with QuickTime when an audio track was present.
Fixes missing runtime validation for a couple of VideoSample constructor parameters.
Fixed an out-of-order issue with the ADTS muxer hooked up to StreamTarget.
Fixed bundling dependency errors involving this package.
Fixed errors being swallowed by StreamTarget.
Fixed Webpack errors when bundling @mediabunny/mp3-encoder and @mediabunny/ac3.
Fixed Node, Deno, and Bun processes not terminating because an alive worker was present.
The muxer now writes DTS as well as PTS for video tracks, fixing QuickTime playback issues.
Fixed crashes when WaveDemuxer encounters a corrupted ID3v2 chunk.
Fixed more deployment issues.
Fixed package publishing issues, making the package available for developers to use.
Fixed an assertion failure when reading out-of-bounds WAVE packets.
Fixed the WAVE demuxer trying to read before the start of the file.
Fixed recognition of MP3 files with an initial XING frame.
The demuxer is more resilient, using heuristics to find PMT without PAT and handling sections that don't contain a PES packet.
Fixed incorrect segmentation in MPEG-TS initialization that prevented codecs from being properly recognized.
Fixed the MPEG-TS demuxer reading the entire file during metadata extraction.
ISOBMFF, Matroska, and ADTS muxers now accept AAC in ADTS format as input.
Can now produce valid files containing zero packets.
Fixed the demuxer surfacing 0-byte packets in incorrectly-written files.
Fixed track selection so disabling a Matroska track no longer removes too many tracks.
Calling close on a media source after Output.finalize no longer throws an internal error.
Fixed occasional sample GC errors when canceling a conversion.
No longer throws when DefaultDuration and TimestampScale appear in the wrong order.
Fixed throwing when junk was at the end of the file.
Fixed crashes when tracks are disabled.
Fixed the incorrect packet iteration upper bound for sample range iterators.
Adds a workaround to avoid AudioData.copyTo crashing the tab in WebKit.
Added a workaround for faulty Chromium key frame detection that causes VideoDecoder errors.
Decoder error stack traces are improved.
Fixed incorrectly ordered video frames when running Mediabunny in a worker on Safari.
Fixed overaggressive gap filling that caused audible artifacts.
Fixed keyframe sample index lookup logic in rare B-frame scenarios.
Fixed the MP3 encoder emitting incorrect timestamps sometimes.
Corrected the conversion trim option types: start and end are both optional.
Fixed missing AudioSample close() calls in the audio resampling path.
Fixed incomplete AV1 sequence header OBU parsing that resulted in incorrect codec strings.
Types related to ArrayBuffer views were narrowed due to TypeScript 5.9.
UrlSource now deals gracefully with servers that cap unbounded range requests.
UrlSource stops retrying failed requests when the Input is disposed.
Firefox video encodability checks are stronger to avoid false positives.
Fixed warnings about /* #__PURE__ */ annotations when bundling with Rollup.
Fixed interlaced AVC crashing the decoder on Chromium.
Playback now works for invalid Matroska files with no audio key frames.
Incorrect reordering of Matroska blocks was removed, fixing WebM distortions.
Fixed incorrect timestamp rounding logic.
VideoSamples are now closed when converting with a frame rate change and resizing.
Audio encoders now fill gaps between audio data with silence to prevent audio drift and ensure correct AV sync.
Fixed a FLAC frame parsing bug.
Fixed incorrect video track rotation metadata when converting files with the process option.
Fixed invalid AAC-encoded audio on Safari.
Fixed crashes when using BlobSource on iOS devices.
Fixed invalid packetization in the FLAC demuxer that led to decoder errors.
Fixed media tracks not being stopped inside the helper worker.
Fixed race condition bugs in the read orchestration worker.
Fixed invalid metadata boxes crashing the ISOBMFF parser.
Fixed parsing files whose clusters were too long according to their header.
Fixed automatic audio resampling not occurring when the process audio option is set.
Fixed an incorrect color space name.