unstale

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 init

@unstale/cli on npm

mediabunny 1386 changes

Breaking changes 13

  • Repeated metadata keys for Vorbis-style metadata in Ogg and FLAC are now surfaced as string arrays in raw.

    1.56.1release notes

  • The WAVE demuxer now throws immediately for unsupported formats.

    1.50.9release notes

  • When defined, keyFrame now always takes precedence over keyFrameInterval.

    1.46.0release notes

  • CustomSource is the new name for StreamSource.

    1.45.4release notes

  • Now always returns tracks in the order in which they appear in the input file.

    1.42.0release notes

  • Adds an async getter for codec data, alongside async getters for most InputTrack data to support lazy loading.

    1.42.0release notes

  • Now outputs audio packets in ADTS format.

    1.29.0release notes

  • Defaults to the input file's first timestamp instead of 0, unless that timestamp is smaller than 0.

    1.29.0release notes

  • Values returned by OutputFormat no longer use Infinity for upper bounds; they contain the actual bound instead.

    1.29.0release notes

  • Calling Conversion.cancel() causes existing execute() calls to throw instead of never resolving.

    1.27.5release notes

  • VideoSample.allocationSize always throws if the internal format is null.

    1.27.4release notes

  • VideoSample.copyTo always throws if the internal format is null.

    1.27.4release notes

  • allocationSize() and copyTo() now throw with an explicit error message when called with format === null.

    1.27.0release notes

Deprecations 23

  • ConversionVideoOptions.allowRotationMetadata is deprecated; use ConversionVideoOptions.allowTransformationMetadata instead.

    1.57.0release notes

  • OutputFormat.supportsVideoRotationMetadata is deprecated; use OutputFormat.supportsVideoTransformationMetadata instead.

    1.57.0release notes

  • Bitrate fields across the API are deprecated; use the new quality field instead.

    1.52.0release notes

  • StreamSource remains available as a deprecated alias for CustomSource.

    1.45.4release notes

  • Deprecated; use InputAudioTrack.getNumberOfChannels() instead.

    1.42.0release notes

  • Deprecated; use InputAudioTrack.getSampleRate() instead.

    1.42.0release notes

  • Deprecated; use the async InputTrack.getCodec() getter instead.

    1.42.0release notes

  • Deprecated; use InputTrack.getDisposition() instead.

    1.42.0release notes

  • Deprecated; use InputTrack.getInternalCodecId() instead.

    1.42.0release notes

  • Deprecated; use InputTrack.getLanguageCode() instead.

    1.42.0release notes

  • Deprecated; use InputTrack.getName() instead.

    1.42.0release notes

  • Deprecated; use InputTrack.getTimeResolution() instead.

    1.42.0release notes

  • Deprecated; use InputVideoTrack.getCodedHeight() instead.

    1.42.0release notes

  • Deprecated; use InputVideoTrack.getCodedWidth() instead.

    1.42.0release notes

  • Deprecated; use InputVideoTrack.getDisplayHeight() instead.

    1.42.0release notes

  • Deprecated; use InputVideoTrack.getDisplayWidth() instead.

    1.42.0release notes

  • Deprecated; use InputVideoTrack.getPixelAspectRatio() instead.

    1.42.0release notes

  • Deprecated; use InputVideoTrack.getRotation() instead.

    1.42.0release notes

  • Deprecated; use InputVideoTrack.getSquarePixelHeight() instead.

    1.42.0release notes

  • Deprecated; use InputVideoTrack.getSquarePixelWidth() instead.

    1.42.0release notes

  • Deprecated; use .on('read', ...) instead.

    1.42.0release notes

  • Deprecated; use .on('write', ...) instead.

    1.42.0release notes

  • Added a warning for double library loading.

    1.30.0release notes

New APIs and options 117

  • HLS variable substitution and #EXT-X-DEFINE tags are now supported.

    1.61.0release notes

  • Added a transparency hint for the muxer.

    1.60.0release notes

  • Added the beatsPerMinute metadata tag.

    1.59.0release notes

  • Added boundaryTolerance to control the maximum permitted additional or removed media needed to make a copy path possible.

    1.58.0release notes

  • BaseTrackMetadata adds bitrate and averageBitrate fields for providing bitrate guesstimates as metadata.

    1.57.0release notes

  • The canEncodeVideo helper functions accept a frameRate option.

    1.57.0release notes

  • 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.

    1.57.0release notes

  • ISOBMFF btrt bitrate metadata is extracted and exposed through InputTrack.getBitrate() and InputTrack.getAverageBitrate().

    1.57.0release notes

  • 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.

    1.57.0release notes

  • Controls copy-specific behavior, including the tolerated timestamp shift allowed to make copy conversions work.

    1.56.0release notes

  • Added to most source options to enable better handling of otherwise unhandled errors thrown out of band.

    1.56.0release notes

  • Adds a property indicating support for negative timestamps; negative timestamps can now be muxed for ISOBMFF, Matroska, and MPEG-TS.

    1.56.0release notes

  • Adds DTS as an audio codec under the codec identifier dts.

    1.55.0release notes

  • Adds support for reading and writing DTS in ISOBMFF files.

    1.55.0release notes

  • Adds support for reading and writing DTS in Matroska files.

    1.55.0release notes

  • Adds an extension package providing a fast DTS audio decoder and encoder polyfill.

    1.55.0release notes

  • Adds support for reading and writing DTS in MPEG-TS files.

    1.55.0release notes

  • Retrieves detailed video frame rate information.

    1.54.0release notes

  • New track metadata enables writing zero-packet tracks.

    1.53.0release notes

  • New track metadata enables writing zero-packet tracks.

    1.53.0release notes

  • Quality can represent arbitrary quality levels, specify bitrate and bitrate mode, and set a concrete per-codec quantizer level.

    1.52.0release notes

  • 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.

    1.51.0release notes

  • Conversions can be paused using the pauseSignal option on execute.

    1.51.0release notes

  • Conversions can be stepped forward deliberately using the until option on execute.

    1.51.0release notes

  • WAVE now supports reading and writing the 64-bit float sample format.

    1.50.9release notes

  • New extension package adds an extremely fast ProRes decoder based on TurboRes that supports all ProRes flavors.

    1.50.0release notes

  • Now has full ProRes decode and encode support, including transparency.

    1.50.0release notes

  • New callback for custom encoders and decoders can surface errors that occur outside normal method calls.

    1.50.0release notes

  • Added read/write support for Apple ProRes across ISOBMFF and Matroska.

    1.50.0release notes

  • A new singleton controls Mediabunny's log level, allowing CLI applications to silence console output.

    1.49.0release notes

  • Decoder preferences like hardware acceleration can now be configured for each video sink.

    1.48.0release notes

  • Added an option to disable offsetting timestamps by date time metadata found in HLS playlists; it defaults to true.

    1.48.0release notes

  • Adds a method for getting a slice of an existing audio sample.

    1.47.0release notes

  • Adds options for specifying a custom hardware context.

    1.46.0release notes

  • Adds per-frame encoding settings through VideoSample.encodeOptions.

    1.46.0release notes

  • Adds a method for providing per-frame encoding settings.

    1.46.0release notes

  • Added support for reading and writing QuickTime nclc color space information.

    1.45.5release notes

  • Provides custom data backing for AudioSample to avoid copying data around.

    1.45.0release notes

  • 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.

    1.45.0release notes

  • Register Mediabunny for server-side use to access audio and video decoders and encoders, as well as video transformation capabilities.

    1.45.0release notes

  • Registers a custom transformer to power VideoSample.transform().

    1.45.0release notes

  • A CPU-based alpha splitter and merger fallback is available for transparent video encoding and decoding.

    1.45.0release notes

  • Performs simple transformations on a video frame, including resize, rotate, and crop.

    1.45.0release notes

  • Provides custom data backing for VideoSample to avoid copying data around.

    1.45.0release notes

  • 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.

    1.44.0release notes

  • Add sampleFormat to modify the audio sample format before passing it to the encoder.

    1.43.0release notes

  • Add sampleFormat to modify the audio sample format before passing it to the encoder.

    1.43.0release notes

  • Adds an audio pre-processing transform for changing audio data, such as resampling or remixing, before it is passed to the encoder.

    1.42.0release notes

  • Adds support for writing tracks whose timestamps are relative to Jan 1 1970; input tracks can be checked with InputTrack.isRelativeToUnixEpoch().

    1.42.0release notes

  • Adds global helpers for checking decodability and listing decodable codecs, including audio- and video-specific variants.

    1.42.0release notes

  • Adds a way to write Segmented MP4 as a segment file and a separate init file.

    1.42.0release notes

  • Conversion can now create multiple output tracks from a single input track, enabling multiple renditions.

    1.42.0release notes

  • Now receives a second processedTime argument.

    1.42.0release notes

  • Adds a setting accepting 'all' or 'primary' to control which tracks are considered for conversion.

    1.42.0release notes

  • Adds an event-listening base class with an .on method, used by Input, Output, Source, and Target.

    1.42.0release notes

  • Adds support for reading HLS playlists, including live and VOD playlists, multiple tracks, encryption, and supported segment formats.

    1.42.0release notes

  • Adds HLS playlist writing for configurable track configurations and output structure, with VOD and live support.

    1.42.0release notes

  • Emits a source event every time a new source is acquired.

    1.42.0release notes

  • Adds a check that resolves to true if Mediabunny can read the file.

    1.42.0release notes

  • Now accepts optional tracks and packet retrieval options to limit duration calculation and configure live-stream behavior with skipLiveWait.

    1.42.0release notes

  • Retrieves duration from file metadata without finding the last packet; returns null if duration metadata is unavailable.

    1.42.0release notes

  • Now accepts an optional InputTrack[]; when provided, the first timestamp is computed only for those tracks.

    1.42.0release notes

  • Adds format-specific input configuration, which can be used to provide decryption keys for DRM-protected content.

    1.42.0release notes

  • Adds a separate init file for track initialization data, usable with segmented MP4 and MPEG-TS.

    1.42.0release notes

  • Adds a way to determine whether tracks can be presented together, with helpers for finding pairable tracks.

    1.42.0release notes

  • Now accepts PacketRetrievalOptions to configure live-stream behavior using skipLiveWait.

    1.42.0release notes

  • Adds live-track detection and a refresh interval that can be used to poll the live edge for updates.

    1.42.0release notes

  • Adds track filtering and sorting queries accepted by track-selection methods on Input, with asc, desc, and prefer helpers.

    1.42.0release notes

  • Adds a way to define the zero point for media sample timestamps; the option is also available for audio track sources.

    1.42.0release notes

  • Emits a target event every time a new target is acquired.

    1.42.0release notes

  • Adds a separate init file target for formats that require one, such as CMAF.

    1.42.0release notes

  • Adds a callback invoked right before output finalization completes.

    1.42.0release notes

  • Adds output track classes returned by the Output.add*Track methods.

    1.42.0release notes

  • Adds output track groups for defining track pairings in HLS outputs; tracks can be assigned through BaseTrackMetadata.group.

    1.42.0release notes

  • Audio and video media sinks now accept packet retrieval options in their methods, enabling skipLiveWait.

    1.42.0release notes

  • Can disable waiting for a live stream to catch up when media data beyond the live edge is requested.

    1.42.0release notes

  • Adds multi-file inputs that can return a source for a requested file path; custom implementations can use CustomPathedSource.

    1.42.0release notes

  • Adds customizable multi-file outputs that return a new target for a given file path.

    1.42.0release notes

  • Adds slice() to sources and targets, returning ranged objects mapped to a subset of the original source or target.

    1.42.0release notes

  • Adds source reference counting; a source is disposed only after its last reference is freed.

    1.42.0release notes

  • Emits a finalized event after the target has been finalized.

    1.42.0release notes

  • Adds a primary disposition to mark the main track, corresponding to HLS's DEFAULT attribute.

    1.42.0release notes

  • Adds a video pre-processing transform for changing frames, such as resizing or rotating them, before they are passed to the encoder.

    1.42.0release notes

  • Adds appendOnly to allow append-only (streamable) writing of FLAC files.

    1.40.0release notes

  • Adds a method to get the first key packet of a track, which is not necessarily the first overall packet.

    1.39.0release notes

  • Adds options for configuring the sampling frame rate of MediaStreamVideoTrackSource.

    1.38.0release notes

  • Adds a package providing FLAC encoder support in browser and server-side environments.

    1.37.0release notes

  • Adds a package that polyfills AAC encoder support for browsers that lack it, such as Firefox, and for server-side environments.

    1.36.0release notes

  • Adds pixelAspectRatio, squarePixelWidth, and squarePixelHeight fields to InputVideoTrack.

    1.35.0release notes

  • Adds the Rational utility type.

    1.35.0release notes

  • Adds the Rectangle utility type.

    1.35.0release notes

  • Adds pixelAspectRatio, squarePixelWidth, squarePixelHeight, and visibleRect fields to VideoSample.

    1.35.0release notes

  • Adds an extension package providing encoding and decoding support for AC-3 and E-AC-3 audio codecs.

    1.34.0release notes

  • ISOBMFF, Matroska, and MPEG-TS now support reading and writing AC-3 and E-AC-3.

    1.33.0release notes

  • A registry was added for formally specifying codecs that go beyond WebCodecs.

    1.33.0release notes

  • The Conversion API now supports negative trim ranges.

    1.33.0release notes

  • OutputFormat now exposes supportsTimestampedMediaData metadata.

    1.33.0release notes

  • Added the parallelism option, which can be set to 1 to prevent deadlock issues in certain conditions.

    1.32.0release notes

  • Added support for reading and writing ID3 metadata for ADTS files.

    1.31.0release notes

  • Added a property representing the 1-based index of a track among other tracks of the same type (video or audio).

    1.30.0release notes

  • Returns the smallest starting timestamp across all tracks.

    1.29.0release notes

  • Adds the MPEG-TS export.

    1.29.0release notes

  • Adds MPEG-TS input support for AVC, HEVC, AAC, and MP3.

    1.29.0release notes

  • Adds MPEG-TS output support for AVC, HEVC, AAC, and MP3.

    1.29.0release notes

  • Adds the options export for MPEG-TS output format.

    1.29.0release notes

  • Added an option to set an upper bound for page duration, enabling lower-latency streaming.

    1.28.0release notes

  • Adds a hardwareAcceleration option for video conversion.

    1.27.0release notes

  • Accepts options for specifying output custom pixel formats, plane layouts, and more.

    1.27.0release notes

  • Accepts options for specifying output custom pixel formats, plane layouts, and more.

    1.27.0release notes

  • Adds the VideoSampleColorSpace export, now used by VideoSample.colorSpace.

    1.27.0release notes

  • Adds an optional layout option.

    1.27.0release notes

  • Adds a video conversion option, true by default, that allows rotation metadata to be stripped from the output file.

    1.26.0release notes

  • Adds pause() and resume() methods.

    1.26.0release notes

  • Adds pause() and resume() methods.

    1.26.0release notes

  • Track disposition metadata can now be read and written, including whether tracks are default or intended for hearing-impaired users.

    1.25.0release notes

  • Added read/write support for AVC3 in ISOBMFF.

    1.24.6release notes

  • Added a Conversion API function for custom user-defined video and audio transformations, such as correcting color or adding an overlay.

    1.24.0release notes

Performance 6

  • Fixes a performance regression in the server package.

    1.61.6release notes

  • Improved performance of color-alpha merging code by using a worker pool.

    1.50.0release notes

  • Fixed metadata reading that sometimes took unnecessarily long.

    1.48.1release notes

  • Improves cloning performance for ArrayBuffer-backed samples.

    1.46.0release notes

  • Optimized the seeking algorithm to work better across networks.

    1.30.0release notes

  • Tree shaking was improved for some bundlers.

    1.24.7release notes

Behavior and default changes 32

  • Ogg files with non-zero start timestamps are now supported.

    1.61.0release notes

  • Ogg end packet trimming is now supported.

    1.61.0release notes

  • Video encoders claimed due to inactivity are now automatically refreshed.

    1.61.0release notes

  • Made the HLS demuxer less strict with playlists that reference non-existing media groups.

    1.59.0release notes

  • ISOBMFF muxing now automatically writes the btrt bitrate box.

    1.57.0release notes

  • Copy conversions now support arbitrary trim ranges, allowing media to be trimmed without transcoding.

    1.56.0release notes

  • Color space information is extracted directly from the video bitstream when the container has no metadata.

    1.55.4release notes

  • ISOBMFF and Matroska muxers now include partial color space information in the container.

    1.55.4release notes

  • Added support for ISOBMFF files carrying Annex B AVC/HEVC.

    1.55.2release notes

  • Writing HLS with single file mode and fMP4 segments now produces a standalone-valid segments file that can be played independently.

    1.53.0release notes

  • Mipmapping for resizing has been improved.

    1.53.0release notes

  • Improved the quality of canvas-based video resizing.

    1.52.2release notes

  • Encoders support quantizer-based constant-quality encoding; quantizer mode is selected automatically when using subjective qualities.

    1.52.0release notes

  • Mediabunny can now read ID3v2 metadata from FLAC files.

    1.49.0release notes

  • The default cache size increases from 16 MiB to 32 MiB.

    1.45.0release notes

  • The FLAC encoder can output different bit depths (16 or 24) depending on the incoming audio samples.

    1.43.0release notes

  • The default trim start is now the start timestamp of non-user-discarded tracks rather than all tracks.

    1.42.0release notes

  • No longer need to begin with a key frame if codec parameters occur in later packets; files with no key frames require initInput.

    1.42.0release notes

  • Now supports responses without a known length, including those without Content-Length or Content-Range headers.

    1.42.0release notes

  • No longer always requests byte 0 to determine file size; it can determine size from any starting offset.

    1.42.0release notes

  • The default key-frame interval is now 2 seconds instead of 5 seconds.

    1.42.0release notes

  • TXXX ID3v2 frames now parse as Record<string, string>.

    1.41.0release notes

  • Includes displayAspectWidth and displayAspectHeight only when they are necessary.

    1.40.0release notes

  • 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.

    1.38.0release notes

  • 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.

    1.35.0release notes

  • AC-3 and E-AC-3 are now recognized audio codecs.

    1.33.0release notes

  • Can now modify almost all packet properties, rather than only timestamp and duration.

    1.29.0release notes

  • UrlSource now aborts ongoing requests immediately on dispose.

    1.27.2release notesrelease notes

  • Now returns Promise<PlaneLayout[]> instead of Promise<void>, matching the WebCodecs API.

    1.27.0release notes

  • AVC SEI recovery points count as keyframes, except on older Chromium versions.

    1.25.8release notes

  • Error logging is now added when open samples are garbage collected.

    1.25.4release notes

  • Disabled ISOBMFF tracks are now included in the returned tracks, with disposition.default set to false.

    1.25.0release notes

Fixes and other changes 195

  • Adds a workaround for Firefox emitting an incorrect AVCC record when encoding AVC on Windows and Linux.

    1.61.6release notes

  • Adds a workaround for Firefox incorrectly shifting video timestamps forward when encoding.

    1.61.6release notes

  • Improves the workaround for WebKit AudioEncoder emitting an incorrect AAC description.

    1.61.6release notes

  • Progress reporting is improved when some tracks have less data than others.

    1.61.5release notes

  • Packet iteration no longer stops prematurely when some segments have zero packets.

    1.61.5release notes

  • Fixed a race condition that sometimes prevented InputDisposedError from being thrown when disposing HLS inputs.

    1.61.5release notes

  • Fixed color spaces when encoding video and when converting to RGB.

    1.61.5release notes

  • Fixed excessive packet pressure being applied to new video decoders.

    1.61.5release notes

  • The constructor no longer throws when given a VideoFrame with out-of-spec color space fields.

    1.61.5release notes

  • The VP9 quantizer range is now 0–255.

    1.61.5release notes

  • Fixed incorrect packet timestamps surfaced by the MPEG-TS demuxer for certain malformed streams.

    1.61.4release notes

  • Composition offsets in trun boxes are always parsed as signed, fixing playback for some files written by faulty muxers.

    1.61.3release notes

  • Fixed AppendOnlyStreamTarget not emitting the write event.

    1.61.2release notes

  • Fixed the emitted codec string differing from the actual codec parameters in the bitstream.

    1.61.2release notes

  • Fixed color range issues in alpha frame merging.

    1.61.1release notes

  • Pixel aspect ratio information is extracted from SPS when the ISOBMFF file lacks a pasp box.

    1.61.1release notes

  • Extension worker threads are fixed for Bun 1.4+ and Deno.

    1.61.0release notes

  • The MP3 muxer now finalizes successfully when xingHeader is false.

    1.61.0release notes

  • Fixed the codec string used for Opus in HLS.

    1.60.0release notes

  • The HLS muxer no longer emits BANDWIDTH=0.

    1.60.0release notes

  • Fixed how Matroska segment duration is interpreted.

    1.60.0release notes

  • Fixed conversion API errors for files that violate the GOP timestamp rule for audio tracks.

    1.59.1release notes

  • Extension worker errors now surface instead of causing promises to never resolve.

    1.59.1release notes

  • Added support for recursive SeekHeads when reading Matroska.

    1.59.1release notes

  • Fixed audio resampling sometimes flushing output buffers too early.

    1.59.0release notes

  • Fixed the HLS BANDWIDTH attribute not being inherited to tracks for URI-less media renditions.

    1.59.0release notes

  • Fixed inverted A-law audio polarity.

    1.58.1release notes

  • Fixed off-by-one errors when using AudioSample.copyTo().

    1.58.1release notes

  • Fixed invalid scaling for µ-law and A-law audio.

    1.58.1release notes

  • Fixed off-by-one errors when doing PCM audio encode->decode roundtrips.

    1.58.1release notes

  • Content-Length and Range headers are ignored on encoded 206 responses.

    1.58.0release notes

  • Fixed Conversion API errors when the input file violated the GOP keyframe rule.

    1.58.0release notes

  • Incorrect parsing of AES-128 IV in HLS is fixed.

    1.57.0release notes

  • Untranslated rotation matrices are no longer written into ISOBMFF header boxes.

    1.57.0release notes

  • The ISOBMFF demuxer now respects the movie-global transformation matrix.

    1.57.0release notes

  • If Output.finalize() fails, Output now automatically transitions to the canceled state.

    1.57.0release notes

  • CustomSource now cancels streams when disposing inputs.

    1.56.3release notes

  • Fixed upmixing from stereo to quad or 5:1 that resulted in NaN samples.

    1.56.2release notes

  • The AVC software decoder no longer drops B-frames.

    1.56.1release notes

  • The FLAC muxer no longer prefers raw.date over date for metadata.

    1.56.1release notes

  • Fixed incorrect use of Content-Length when the server returns compressed content.

    1.56.0release notes

  • Conversions no longer crash on an empty audio trim range.

    1.56.0release notes

  • Fixed the Matroska duration computation logic.

    1.56.0release notes

  • The MPEG-TS demuxer now infers negative timestamps and handles one modulus wrap of timestamps.

    1.56.0release notes

  • Sample iterators now terminate internally when throwing.

    1.55.7release notes

  • Relaxed an erroneous assert in esds box parsing.

    1.55.6release notes

  • AudioSample.copyTo() is reliable for non-f32-planar targets across all browser versions.

    1.55.5release notes

  • Fixed a browser-internal memory leak in BlobSource.

    1.55.5release notes

  • Infinity is no longer rejected for numeric fields whose documentation permits it.

    1.55.5release notes

  • Fixes a missing audio decoding timestamp offset in rare cases.

    1.55.4release notes

  • Fixes packet parsing logic for AV1 and VP9.

    1.55.4release notes

  • Fixes Chromium choking on AVC SEI recovery points.

    1.55.4release notes

  • Fixes incomplete color space information being passed to Chromium's VideoDecoder, which caused incorrect colors.

    1.55.4release notes

  • Fixes generation of the vpcC box.

    1.55.4release notes

  • Fixed incomplete parsing and generation of AacAudioSpecificConfig.

    1.55.3release notes

  • Fixed recognition of fMP4 HLS segments that start with an emsg box.

    1.55.3release notes

  • Fixed Mediabunny's behavior with custom Promise implementations.

    1.55.3release notes

  • Fixed the missing fallback for encrypted ISOBMFF files.

    1.55.3release notes

  • The missing WebCodecs error message is more useful in insecure browser contexts.

    1.55.2release notes

  • Fixes an error caused by closing a decoder twice.

    1.55.0release notes

  • Added a workaround for a WebKit bug where TypedArray offsets are not respected when writing to FileSystemWritableFileStream.

    1.53.1release notes

  • Video and audio decoder config validation has been improved.

    1.53.0release notes

  • Encodability checks no longer throw on Safari in some cases.

    1.53.0release notes

  • fMP4 files with sparse fragments now have correct traf indices written when not all tracks occur in every fragment.

    1.53.0release notes

  • HLS writing now produces a correct init segment when segments are sparse and not all tracks occur in every segment.

    1.53.0release notes

  • Input.getFirstTimestamp() now works for files with zero-packet tracks.

    1.53.0release notes

  • A rare assertion error in the MPEG-TS demuxer has been fixed.

    1.53.0release notes

  • UrlSource now honors maxCacheSize when the server responds with 200 and slows response consumption in that case.

    1.53.0release notes

  • Changed alternate group assignment in the ISOBMFF muxer to work around a WebKit bug.

    1.52.3release notes

  • Fixed an occasional assertion failure when Output.start() is not awaited.

    1.52.3release notes

  • Fixed the ISOBMFF Compressor name not being written as a Pascal-style string.

    1.52.1release notes

  • Improved error handling reduces “Sample wasn't closed” warnings.

    1.52.0release notes

  • Promises no longer hang indefinitely sometimes when calling Input.dispose().

    1.52.0release notes

  • Video tracks are now labeled as containing an alpha track, including tracks using ProRes 4444.

    1.52.0release notes

  • Decoders are now closed in error situations where they previously could remain open.

    1.52.0release notes

  • BlockDuration is now written when writing WebVTT into Matroska.

    1.50.9release notes

  • Video and audio samples are always closed, including during error cases.

    1.50.9release notes

  • Fixed nested workers randomly shutting off in Firefox.

    1.50.9release notes

  • Duration is now computed correctly for multi-frame Opus packets.

    1.50.9release notes

  • Writing WebVTT in MP4 no longer creates an assertion error.

    1.50.9release notes

  • Fixed incorrect decoding of ProRes 12-bit frames.

    1.50.8release notes

  • Fixed occasional crackle from the audio resampler.

    1.50.7release notes

  • Fixed packet fixing that was slightly too aggressive with AUDs.

    1.50.6release notes

  • Fixed occasional stalls in file reading.

    1.50.5release notes

  • Fixed warnings in the Vite dev server caused by this package.

    1.50.3release notes

  • Fixed ProRes packets not being read and written correctly from and to Matroska files.

    1.50.2release notes

  • Fixed bundler warnings when using the package.

    1.50.1release notes

  • Fixed the Conversion API sometimes changing audio sample format mid-conversion.

    1.50.0release notes

  • Fixed color-alpha merging code for padded frames.

    1.50.0release notes

  • Removed an unintended console log from the range request warning path, preventing that extra output.

    1.49.0release notes

  • Fixed packet segmentation for AVC/HEVC in MPEG-TS when no AUDs are present.

    1.48.1release notes

  • Improved error handling after an Input is disposed.

    1.48.0release notes

  • Fixed request resolution logic that did not properly handle redirects.

    1.48.0release notes

  • Fixed occasional assertion failures when reading files with high contention.

    1.48.0release notes

  • Disposing invalid input no longer causes an unhandled rejection.

    1.47.0release notes

  • Conversion API process is now called after other transformations instead of before them.

    1.47.0release notes

  • Zero-sample ISOBMFF fragments no longer throw an error.

    1.47.0release notes

  • Improves VideoSample error messages when the environment has insufficient canvas support.

    1.46.0release notes

  • At least one track per type is now enabled when muxing ISOBMFF.

    1.45.5release notes

  • Fixed memory leaks in @mediabunny/server.

    1.45.5release notes

  • UrlSource now properly respects the Range header passed into requestInit.

    1.45.5release notes

  • Fixed some ID3 tags emitting Date instances with an incorrect timezone.

    1.45.4release notes

  • Fixed FinalizationRegistry causing Input memory leaks when used with CustomSource.

    1.45.4release notes

  • Recovery of MP3 frame boundaries is improved for broken files.

    1.45.4release notes

  • Added a workaround for a Chromium bug that caused the first encoded video packet not to be marked as key.

    1.45.3release notes

  • Fixed a bug in ID3v2 size parsing.

    1.45.2release notes

  • Segments starting with a sidx box are now recognized.

    1.45.0release notes

  • Track process synchronization is fixed; reads are now more sequential.

    1.45.0release notes

  • Incorrect timestamps of decoded audio in Chromium are fixed.

    1.45.0release notes

  • The demuxer no longer errors when seeking to negative timestamps.

    1.45.0release notes

  • Range iterators no longer cut off samples with negative timestamps by default.

    1.45.0release notes

  • No longer throws when the sample format is null and a custom format override is provided in the options.

    1.45.0release notes

  • No longer throws when the sample format is null and a custom format override is provided in the options.

    1.45.0release notes

  • Fixed incorrect timestamps that could lead to negative timestamp errors.

    1.44.2release notes

  • Fixed negative timestamps occurring with live media driven by media sources, which led to muxer errors.

    1.44.1release notes

  • Fixed behavior on ISOBMFF files with incorrect pasp boxes.

    1.43.1release notes

  • Fixes some HEVC packets that caused VideoDecoder errors in Chromium.

    1.43.0release notes

  • Fixes FLAC bitrate validation, which incorrectly treated bitrate as a required field.

    1.43.0release notes

  • Fixes unreliable PCM logic for regular MP4s.

    1.43.0release notes

  • Fixes the structure of regular MP4s containing tracks with non-zero start timestamps.

    1.43.0release notes

  • Fixes access to the file system in server-side environments.

    1.42.0release notes

  • Fixes problems handling timestamps beyond the int32 limit.

    1.42.0release notes

  • Fixes duration calculation and support for multiple ISOBMFF trun boxes.

    1.42.0release notes

  • Fixes incorrect frame locations in the MP3 Xing TOC.

    1.42.0release notes

  • The codec string is now correctly identified as MP3.

    1.42.0release notes

  • Fixes an off-by-one reorder buffer error.

    1.42.0release notes

  • Its reader is now properly canceled when the source is disposed.

    1.42.0release notes

  • Now reliably controls the amount of parallel requests.

    1.42.0release notes

  • Fixed missing default values in the Matroska demuxer.

    1.40.1release notes

  • Fixes incorrect rotation extraction in some cases.

    1.40.0release notes

  • Fixes incorrect reading of MPEG-TS PAT in some cases.

    1.40.0release notes

  • Fixes incorrectly written video rotation metadata, including when rotation is baked into the video.

    1.40.0release notes

  • Fixed incorrect GOP timestamp verification logic for the first GOP.

    1.39.2release notes

  • Fixed faulty MPEG-2 Transport Stream detection.

    1.39.2release notes

  • Fixed cases where the CTS offset was not included in fMP4 muxing.

    1.38.1release notes

  • Adds a fallback using a hidden <video> element, enabling Firefox support.

    1.38.1release notes

  • Fixed creation of .mov files that were incompatible with QuickTime when an audio track was present.

    1.35.1release notes

  • Fixes missing runtime validation for a couple of VideoSample constructor parameters.

    1.35.0release notes

  • Fixed an out-of-order issue with the ADTS muxer hooked up to StreamTarget.

    1.34.5release notes

  • Fixed bundling dependency errors involving this package.

    1.34.5release notes

  • Fixed errors being swallowed by StreamTarget.

    1.34.5release notes

  • Fixed Webpack errors when bundling @mediabunny/mp3-encoder and @mediabunny/ac3.

    1.34.4release notes

  • Fixed Node, Deno, and Bun processes not terminating because an alive worker was present.

    1.34.4release notes

  • The muxer now writes DTS as well as PTS for video tracks, fixing QuickTime playback issues.

    1.34.3release notes

  • Fixed crashes when WaveDemuxer encounters a corrupted ID3v2 chunk.

    1.34.3release notes

  • Fixed more deployment issues.

    1.34.2release notes

  • Fixed package publishing issues, making the package available for developers to use.

    1.34.1release notes

  • Fixed an assertion failure when reading out-of-bounds WAVE packets.

    1.32.2release notes

  • Fixed the WAVE demuxer trying to read before the start of the file.

    1.32.1release notes

  • Fixed recognition of MP3 files with an initial XING frame.

    1.31.1release notes

  • The demuxer is more resilient, using heuristics to find PMT without PAT and handling sections that don't contain a PES packet.

    1.31.0release notes

  • Fixed incorrect segmentation in MPEG-TS initialization that prevented codecs from being properly recognized.

    1.30.1release notes

  • Fixed the MPEG-TS demuxer reading the entire file during metadata extraction.

    1.29.1release notes

  • ISOBMFF, Matroska, and ADTS muxers now accept AAC in ADTS format as input.

    1.29.0release notes

  • Can now produce valid files containing zero packets.

    1.29.0release notes

  • Fixed the demuxer surfacing 0-byte packets in incorrectly-written files.

    1.28.0release notes

  • Fixed track selection so disabling a Matroska track no longer removes too many tracks.

    1.27.6release notes

  • Calling close on a media source after Output.finalize no longer throws an internal error.

    1.27.5release notes

  • Fixed occasional sample GC errors when canceling a conversion.

    1.27.5release notes

  • No longer throws when DefaultDuration and TimestampScale appear in the wrong order.

    1.27.5release notes

  • Fixed throwing when junk was at the end of the file.

    1.27.5release notes

  • Fixed crashes when tracks are disabled.

    1.27.5release notes

  • Fixed the incorrect packet iteration upper bound for sample range iterators.

    1.27.4release notes

  • Adds a workaround to avoid AudioData.copyTo crashing the tab in WebKit.

    1.27.3release notes

  • Added a workaround for faulty Chromium key frame detection that causes VideoDecoder errors.

    1.27.1release notesrelease notes

  • Decoder error stack traces are improved.

    1.27.0release notes

  • Fixed incorrectly ordered video frames when running Mediabunny in a worker on Safari.

    1.25.8release notes

  • Fixed overaggressive gap filling that caused audible artifacts.

    1.25.7release notes

  • Fixed keyframe sample index lookup logic in rare B-frame scenarios.

    1.25.7release notes

  • Fixed the MP3 encoder emitting incorrect timestamps sometimes.

    1.25.7release notes

  • Corrected the conversion trim option types: start and end are both optional.

    1.25.5release notes

  • Fixed missing AudioSample close() calls in the audio resampling path.

    1.25.4release notes

  • Fixed incomplete AV1 sequence header OBU parsing that resulted in incorrect codec strings.

    1.25.4release notes

  • Types related to ArrayBuffer views were narrowed due to TypeScript 5.9.

    1.25.3release notes

  • UrlSource now deals gracefully with servers that cap unbounded range requests.

    1.25.3release notes

  • UrlSource stops retrying failed requests when the Input is disposed.

    1.25.2release notes

  • Firefox video encodability checks are stronger to avoid false positives.

    1.25.2release notes

  • Fixed warnings about /* #__PURE__ */ annotations when bundling with Rollup.

    1.25.1release notes

  • Fixed interlaced AVC crashing the decoder on Chromium.

    1.24.7release notes

  • Playback now works for invalid Matroska files with no audio key frames.

    1.24.7release notes

  • Incorrect reordering of Matroska blocks was removed, fixing WebM distortions.

    1.24.7release notes

  • Fixed incorrect timestamp rounding logic.

    1.24.7release notes

  • VideoSamples are now closed when converting with a frame rate change and resizing.

    1.24.7release notes

  • Audio encoders now fill gaps between audio data with silence to prevent audio drift and ensure correct AV sync.

    1.24.6release notes

  • Fixed a FLAC frame parsing bug.

    1.24.6release notes

  • Fixed incorrect video track rotation metadata when converting files with the process option.

    1.24.6release notes

  • Fixed invalid AAC-encoded audio on Safari.

    1.24.5release notes

  • Fixed crashes when using BlobSource on iOS devices.

    1.24.5release notes

  • Fixed invalid packetization in the FLAC demuxer that led to decoder errors.

    1.24.4release notes

  • Fixed media tracks not being stopped inside the helper worker.

    1.24.3release notes

  • Fixed race condition bugs in the read orchestration worker.

    1.24.3release notes

  • Fixed invalid metadata boxes crashing the ISOBMFF parser.

    1.24.2release notes

  • Fixed parsing files whose clusters were too long according to their header.

    1.24.2release notes

  • Fixed automatic audio resampling not occurring when the process audio option is set.

    1.24.1release notes

  • Fixed an incorrect color space name.

    1.24.0release notes