Skip to content

Releases: seydx/node-av

v6.2.0-beta.7

v6.2.0-beta.7 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Jul 13:18

⚠️ This is a pre-release version for testing. Install with: npm install node-av@beta

📋 All Changes since v6.1.1

  • chore: bump version to 6.2.0-beta.7 (1581af4) - @seydx
  • Fix RTPStream with pixel format handling for video scaling and codec selection (0259d42) - @seydx
  • Fix fMP4Stream with pixel format handling for video scaling (ff578c9) - @seydx
  • Update deps (1bbf951) - @seydx
  • update ffmpeg (73c64b3) - @seydx
  • chore: bump version to 6.2.0-beta.6 (5fa607b) - @seydx
  • Update deps (4e6694b) - @seydx
  • Update tests (9b5d07f) - @seydx
  • Add bitrate control for video encoding in FMP4Stream (23cee7f) - @seydx
  • Add permissions for build job in workflow (67ad931) - @seydx
  • Update Changelog (4f5b277) - @seydx
  • Update macOS runner to use macos-26 and enhance Xcode selection logic (d0f29f4) - @seydx
  • Update Xcode version handling and add cache cleanup job for stale FFmpeg caches (3644b0e) - @seydx
  • chore: bump version to 6.2.0-beta.5 (c23e621) - @seydx
  • Update Readme (2bff8b8) - @seydx
  • Update tests (c52b0f7) - @seydx
  • Enhance concurrency handling in FormatContext by adding shared mutex for safe access during FFmpeg operations (aecef74) - @seydx
  • Update bindings (324e7c6) - @seydx
  • Enhance error handling to prevent JS calls when not allowed (7d9a845) - @seydx
  • Improve error handling in device listing workers to prevent JS calls when not allowed (4e77c20) - @seydx
  • Optimize stream handling in Decoder class to prevent memory issues (7ca06cc) - @seydx
  • chore: bump version to 6.2.0-beta.4 (1306ab2) - @seydx
  • Update deps (aed5a03) - @seydx
  • Update Changelog (ada70d1) - @seydx
  • Format (692c865) - @seydx
  • Add SHA256 checksum generation for release archives and update NPM publish command with provenance (01025d7) - @seydx
  • Add FFMPEG_MSVC_PREBUILT_TAG and enhance workflow for reproducible builds (30788c0) - @seydx
  • Update tests (1ba5dfd) - @seydx
  • Add async operation guards in Fifo and FilterGraph to prevent use-after-free errors during resource management (dc332ce) - @seydx
  • Add async operation guards in SoftwareResampleContext to prevent use-after-free errors during context replacement and cleanup (29b2fb6) - @seydx
  • Add async operation guards in SoftwareScaleContext to prevent use-after-free errors during context replacement (8b7a45d) - @seydx
  • Enhance Scaler to manage async operations and prevent use-after-free errors during cleanup (e52e77e) - @seydx
  • Refactor HardwareFramesContext to improve memory management and async operation handling (3c71a78) - @seydx
  • Refactor HardwareDeviceContext to manage device references more safely and simplify ownership handling (2e460fd) - @seydx
  • Add async operation guards to prevent use-after-free in Frame operations (55040cd) - @seydx
  • Add async operation guard and improve context management in IOContext (fc7afef) - @seydx
  • Enhance InputFormatProbeBufferWorker with improved error handling and async operation management (432dfa7) - @seydx
  • Add synchronous seek method and enhance error handling in FormatContext (ff3167d) - @seydx
  • Add async operation guards and validation for frame objects in FilterContext (f85bfd9) - @seydx
  • Add async operation guards and validation for audio frames in CodecContext (fc96340) - @seydx
  • Add async operation guard to Free method in BitStreamFilterContext (b05eff8) - @seydx
  • Enhance AudioFifo class with buffer validation and async operation handling (bfe2a75) - @seydx
  • Add PromiseWorker and AsyncOpCounter classes for asynchronous operation management (7a7b72b) - @seydx
  • Refactor Packet class to improve memory management and preserve metadata during data assignment (0405bf4) - @seydx
  • Fix memory allocation for attached picture (30fdc53) - @seydx
  • Update typings (a8c1f80) - @seydx
  • Refactor HardwareFramesContext to remove caching of device context wrapper (9557525) - @seydx
  • Refactor Frame class to remove caching of hardware frames context (548a14b) - @seydx
  • Refactor FormatContext to improve metadata handling and add synchronous seekFile method (f5b1ec9) - @seydx
  • Cleanup (25ac36f) - @seydx
  • Refactor Scaler to improve concurrency handling and memory management (b26e472) - @seydx
  • Enhance Demuxer to handle multiple consumers and propagate read errors correctly (4706798) - @seydx
  • Implement Mutex for serializing async operations in EncoderPool (135abe8) - @seydx
  • Extend UnwrapNativeObject for safer object creation (970dda4) - @seydx
  • Add GetInt64 method to AVOptionWrapper (529bb57) - @seydx
  • Add thread-local constructor references to various binding classes (90d89b8) - @seydx
  • Remove caching for hardware device context in FilterContext (90d6132) - @seydx
  • Remove caching for hardware device and frames contexts in CodecContext (4eff83d) - @seydx
  • Refactor Stream class to simplify metadata and attachedPic accessors, removing unnecessary caching (bd7efc6) - @seydx
  • Enable COPY_OPAQUE flag in Decoder to ensure packet.opaque is copied to frame.opaque (8163167) - @seydx
  • Enhance AsyncQueue to properly dispose items on closure to prevent resource leaks (29299e6) - @seydx
  • Enhance FMP4Stream to improve box size handling, add maxQueuedFragments option, and ensure init segment consumers do not hang (d63837f) - @seydx
  • Enhance pipeline processing to improve output handling and error propagation for multiple streams (51cbed8) - @seydx
  • Refactor WhisperTranscriber to improve segment extraction and handle end-of-input flushing (090fd51) - @seydx
  • Improve WebRTCStream to handle peer connection closure and renegotiation more gracefully (66c9bfa) - @seydx
  • Refactor RTPStream to improve abort handling (6f010fe) - @seydx
  • Enhance Muxer to handle write errors gracefully and improve resource management during cleanup (9aca43a) - @seydx
  • Improve IOStream error handling and resource management during read/write operations (26510ca) - @seydx
  • Fix timestamp rescaling to handle AV_NOPTS_VALUE correctly in FilterAPI (503af34) - @seydx
  • Enhance Encoder to support better audio frame resampling and correct PTS handling (07476c4) - @seydx
  • Refactor BitStreamFilterAPI to improve packet handling with retry logic for EAGAIN (7e54096) - @seydx
  • Add pullPartial and pullPartialSync methods to AudioFrameBuffer for end-of-stream handling (a7667c8) - @seydx
  • Update package and platform template to require Node.js version 22.18.0 or higher (169fb0a) - @seydx
  • Add gyp consistency check script to ensure binding files are in sync (a7b26f0) - @seydx
  • Refactor installation check logic to remove build from source functionality and improve error handling for missing prebuilt binaries (efbae2c) - @seydx
  • Fix version pinning for platform binary packages (de928aa) - @seydx
  • Enhance FFmpeg installation process with checksum verification and retry logic (c5a71f4) - @seydx
  • Update deps (5661b6a) - @seydx
  • chore: bump version to 6.2.0-beta.3 (add4ea1) - @seydx
  • Improve ffmpeg download process with direct URL fallback (1ce95b3) - @seydx
  • update (17e9d1a) - @seydx
  • Release ffmpeg hash in workflow (0b0c130) - @seydx
  • chore: bump version to 6.2.0-beta.2 (09817d0) - @seydx
  • Update Changelog (8c4d452) - @seydx
  • Update Readme (9c382e6) - @seydx
  • Update timeBase setter to use IRational type (da73f1c) - @seydx
  • Update typedoc (383551e) - @seydx
  • chore: bump version to 6.2.0-beta.1 (5a041da) - @seydx
  • New MediaFrameSource input for RTPStream/WebRTCStream/FMP4Stream — PiP over WebRTC & MSE, hw filter-complex graphs, FilterComplex EOF/teardown fixes (7dc7bdb) - @seydx
  • Pin ffmpeg hash (9bb8152) - @seydx
  • Update submodule (5990c18) - @seydx
  • Update submodules (6908837) - @seydx
  • Update submodules (70df374) - @seydx
  • Bump js-yaml from 4.1.1 to 4.3.0 in /examples/electron/forge (#281) (eabc983) - @dependabot[bot]

📦 Packages

The following platform packages have been updated to v6.2.0-beta.7:

  • @seydx/node-av-darwin-arm64@6.2.0-beta.7
  • @seydx/node-av-darwin-x64@6.2.0-beta.7
  • @seydx/node-av-linux-arm64@6.2.0-beta.7
  • @seydx/node-av-linux-x64@6.2.0-beta.7
  • @seydx/node-av-win32-arm64-mingw@6.2.0-beta.7
  • @seydx/node-av-win32-x64-mingw@6.2.0-beta.7
  • @seydx/node-av-win32-arm64-msvc@6.2.0-beta.7
  • @seydx/node-av-win32-x64-msvc@6.2.0-beta.7

v6.2.0-beta.6

v6.2.0-beta.6 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Jul 00:51

⚠️ This is a pre-release version for testing. Install with: npm install node-av@beta

📋 All Changes since v6.1.1

  • chore: bump version to 6.2.0-beta.6 (5fa607b) - @seydx
  • Update deps (4e6694b) - @seydx
  • Update tests (9b5d07f) - @seydx
  • Add bitrate control for video encoding in FMP4Stream (23cee7f) - @seydx
  • Add permissions for build job in workflow (67ad931) - @seydx
  • Update Changelog (4f5b277) - @seydx
  • Update macOS runner to use macos-26 and enhance Xcode selection logic (d0f29f4) - @seydx
  • Update Xcode version handling and add cache cleanup job for stale FFmpeg caches (3644b0e) - @seydx
  • chore: bump version to 6.2.0-beta.5 (c23e621) - @seydx
  • Update Readme (2bff8b8) - @seydx
  • Update tests (c52b0f7) - @seydx
  • Enhance concurrency handling in FormatContext by adding shared mutex for safe access during FFmpeg operations (aecef74) - @seydx
  • Update bindings (324e7c6) - @seydx
  • Enhance error handling to prevent JS calls when not allowed (7d9a845) - @seydx
  • Improve error handling in device listing workers to prevent JS calls when not allowed (4e77c20) - @seydx
  • Optimize stream handling in Decoder class to prevent memory issues (7ca06cc) - @seydx
  • chore: bump version to 6.2.0-beta.4 (1306ab2) - @seydx
  • Update deps (aed5a03) - @seydx
  • Update Changelog (ada70d1) - @seydx
  • Format (692c865) - @seydx
  • Add SHA256 checksum generation for release archives and update NPM publish command with provenance (01025d7) - @seydx
  • Add FFMPEG_MSVC_PREBUILT_TAG and enhance workflow for reproducible builds (30788c0) - @seydx
  • Update tests (1ba5dfd) - @seydx
  • Add async operation guards in Fifo and FilterGraph to prevent use-after-free errors during resource management (dc332ce) - @seydx
  • Add async operation guards in SoftwareResampleContext to prevent use-after-free errors during context replacement and cleanup (29b2fb6) - @seydx
  • Add async operation guards in SoftwareScaleContext to prevent use-after-free errors during context replacement (8b7a45d) - @seydx
  • Enhance Scaler to manage async operations and prevent use-after-free errors during cleanup (e52e77e) - @seydx
  • Refactor HardwareFramesContext to improve memory management and async operation handling (3c71a78) - @seydx
  • Refactor HardwareDeviceContext to manage device references more safely and simplify ownership handling (2e460fd) - @seydx
  • Add async operation guards to prevent use-after-free in Frame operations (55040cd) - @seydx
  • Add async operation guard and improve context management in IOContext (fc7afef) - @seydx
  • Enhance InputFormatProbeBufferWorker with improved error handling and async operation management (432dfa7) - @seydx
  • Add synchronous seek method and enhance error handling in FormatContext (ff3167d) - @seydx
  • Add async operation guards and validation for frame objects in FilterContext (f85bfd9) - @seydx
  • Add async operation guards and validation for audio frames in CodecContext (fc96340) - @seydx
  • Add async operation guard to Free method in BitStreamFilterContext (b05eff8) - @seydx
  • Enhance AudioFifo class with buffer validation and async operation handling (bfe2a75) - @seydx
  • Add PromiseWorker and AsyncOpCounter classes for asynchronous operation management (7a7b72b) - @seydx
  • Refactor Packet class to improve memory management and preserve metadata during data assignment (0405bf4) - @seydx
  • Fix memory allocation for attached picture (30fdc53) - @seydx
  • Update typings (a8c1f80) - @seydx
  • Refactor HardwareFramesContext to remove caching of device context wrapper (9557525) - @seydx
  • Refactor Frame class to remove caching of hardware frames context (548a14b) - @seydx
  • Refactor FormatContext to improve metadata handling and add synchronous seekFile method (f5b1ec9) - @seydx
  • Cleanup (25ac36f) - @seydx
  • Refactor Scaler to improve concurrency handling and memory management (b26e472) - @seydx
  • Enhance Demuxer to handle multiple consumers and propagate read errors correctly (4706798) - @seydx
  • Implement Mutex for serializing async operations in EncoderPool (135abe8) - @seydx
  • Extend UnwrapNativeObject for safer object creation (970dda4) - @seydx
  • Add GetInt64 method to AVOptionWrapper (529bb57) - @seydx
  • Add thread-local constructor references to various binding classes (90d89b8) - @seydx
  • Remove caching for hardware device context in FilterContext (90d6132) - @seydx
  • Remove caching for hardware device and frames contexts in CodecContext (4eff83d) - @seydx
  • Refactor Stream class to simplify metadata and attachedPic accessors, removing unnecessary caching (bd7efc6) - @seydx
  • Enable COPY_OPAQUE flag in Decoder to ensure packet.opaque is copied to frame.opaque (8163167) - @seydx
  • Enhance AsyncQueue to properly dispose items on closure to prevent resource leaks (29299e6) - @seydx
  • Enhance FMP4Stream to improve box size handling, add maxQueuedFragments option, and ensure init segment consumers do not hang (d63837f) - @seydx
  • Enhance pipeline processing to improve output handling and error propagation for multiple streams (51cbed8) - @seydx
  • Refactor WhisperTranscriber to improve segment extraction and handle end-of-input flushing (090fd51) - @seydx
  • Improve WebRTCStream to handle peer connection closure and renegotiation more gracefully (66c9bfa) - @seydx
  • Refactor RTPStream to improve abort handling (6f010fe) - @seydx
  • Enhance Muxer to handle write errors gracefully and improve resource management during cleanup (9aca43a) - @seydx
  • Improve IOStream error handling and resource management during read/write operations (26510ca) - @seydx
  • Fix timestamp rescaling to handle AV_NOPTS_VALUE correctly in FilterAPI (503af34) - @seydx
  • Enhance Encoder to support better audio frame resampling and correct PTS handling (07476c4) - @seydx
  • Refactor BitStreamFilterAPI to improve packet handling with retry logic for EAGAIN (7e54096) - @seydx
  • Add pullPartial and pullPartialSync methods to AudioFrameBuffer for end-of-stream handling (a7667c8) - @seydx
  • Update package and platform template to require Node.js version 22.18.0 or higher (169fb0a) - @seydx
  • Add gyp consistency check script to ensure binding files are in sync (a7b26f0) - @seydx
  • Refactor installation check logic to remove build from source functionality and improve error handling for missing prebuilt binaries (efbae2c) - @seydx
  • Fix version pinning for platform binary packages (de928aa) - @seydx
  • Enhance FFmpeg installation process with checksum verification and retry logic (c5a71f4) - @seydx
  • Update deps (5661b6a) - @seydx
  • chore: bump version to 6.2.0-beta.3 (add4ea1) - @seydx
  • Improve ffmpeg download process with direct URL fallback (1ce95b3) - @seydx
  • update (17e9d1a) - @seydx
  • Release ffmpeg hash in workflow (0b0c130) - @seydx
  • chore: bump version to 6.2.0-beta.2 (09817d0) - @seydx
  • Update Changelog (8c4d452) - @seydx
  • Update Readme (9c382e6) - @seydx
  • Update timeBase setter to use IRational type (da73f1c) - @seydx
  • Update typedoc (383551e) - @seydx
  • chore: bump version to 6.2.0-beta.1 (5a041da) - @seydx
  • New MediaFrameSource input for RTPStream/WebRTCStream/FMP4Stream — PiP over WebRTC & MSE, hw filter-complex graphs, FilterComplex EOF/teardown fixes (7dc7bdb) - @seydx
  • Pin ffmpeg hash (9bb8152) - @seydx
  • Update submodule (5990c18) - @seydx
  • Update submodules (6908837) - @seydx
  • Update submodules (70df374) - @seydx
  • Bump js-yaml from 4.1.1 to 4.3.0 in /examples/electron/forge (#281) (eabc983) - @dependabot[bot]

📦 Packages

The following platform packages have been updated to v6.2.0-beta.6:

  • @seydx/node-av-darwin-arm64@6.2.0-beta.6
  • @seydx/node-av-darwin-x64@6.2.0-beta.6
  • @seydx/node-av-linux-arm64@6.2.0-beta.6
  • @seydx/node-av-linux-x64@6.2.0-beta.6
  • @seydx/node-av-win32-arm64-mingw@6.2.0-beta.6
  • @seydx/node-av-win32-x64-mingw@6.2.0-beta.6
  • @seydx/node-av-win32-arm64-msvc@6.2.0-beta.6
  • @seydx/node-av-win32-x64-msvc@6.2.0-beta.6

v6.2.0-beta.5

v6.2.0-beta.5 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Jul 13:47

⚠️ This is a pre-release version for testing. Install with: npm install node-av@beta

📋 All Changes since v6.1.1

  • Add permissions for build job in workflow (67ad931) - @seydx
  • Update Changelog (4f5b277) - @seydx
  • Update macOS runner to use macos-26 and enhance Xcode selection logic (d0f29f4) - @seydx
  • Update Xcode version handling and add cache cleanup job for stale FFmpeg caches (3644b0e) - @seydx
  • chore: bump version to 6.2.0-beta.5 (c23e621) - @seydx
  • Update Readme (2bff8b8) - @seydx
  • Update tests (c52b0f7) - @seydx
  • Enhance concurrency handling in FormatContext by adding shared mutex for safe access during FFmpeg operations (aecef74) - @seydx
  • Update bindings (324e7c6) - @seydx
  • Enhance error handling to prevent JS calls when not allowed (7d9a845) - @seydx
  • Improve error handling in device listing workers to prevent JS calls when not allowed (4e77c20) - @seydx
  • Optimize stream handling in Decoder class to prevent memory issues (7ca06cc) - @seydx
  • chore: bump version to 6.2.0-beta.4 (1306ab2) - @seydx
  • Update deps (aed5a03) - @seydx
  • Update Changelog (ada70d1) - @seydx
  • Format (692c865) - @seydx
  • Add SHA256 checksum generation for release archives and update NPM publish command with provenance (01025d7) - @seydx
  • Add FFMPEG_MSVC_PREBUILT_TAG and enhance workflow for reproducible builds (30788c0) - @seydx
  • Update tests (1ba5dfd) - @seydx
  • Add async operation guards in Fifo and FilterGraph to prevent use-after-free errors during resource management (dc332ce) - @seydx
  • Add async operation guards in SoftwareResampleContext to prevent use-after-free errors during context replacement and cleanup (29b2fb6) - @seydx
  • Add async operation guards in SoftwareScaleContext to prevent use-after-free errors during context replacement (8b7a45d) - @seydx
  • Enhance Scaler to manage async operations and prevent use-after-free errors during cleanup (e52e77e) - @seydx
  • Refactor HardwareFramesContext to improve memory management and async operation handling (3c71a78) - @seydx
  • Refactor HardwareDeviceContext to manage device references more safely and simplify ownership handling (2e460fd) - @seydx
  • Add async operation guards to prevent use-after-free in Frame operations (55040cd) - @seydx
  • Add async operation guard and improve context management in IOContext (fc7afef) - @seydx
  • Enhance InputFormatProbeBufferWorker with improved error handling and async operation management (432dfa7) - @seydx
  • Add synchronous seek method and enhance error handling in FormatContext (ff3167d) - @seydx
  • Add async operation guards and validation for frame objects in FilterContext (f85bfd9) - @seydx
  • Add async operation guards and validation for audio frames in CodecContext (fc96340) - @seydx
  • Add async operation guard to Free method in BitStreamFilterContext (b05eff8) - @seydx
  • Enhance AudioFifo class with buffer validation and async operation handling (bfe2a75) - @seydx
  • Add PromiseWorker and AsyncOpCounter classes for asynchronous operation management (7a7b72b) - @seydx
  • Refactor Packet class to improve memory management and preserve metadata during data assignment (0405bf4) - @seydx
  • Fix memory allocation for attached picture (30fdc53) - @seydx
  • Update typings (a8c1f80) - @seydx
  • Refactor HardwareFramesContext to remove caching of device context wrapper (9557525) - @seydx
  • Refactor Frame class to remove caching of hardware frames context (548a14b) - @seydx
  • Refactor FormatContext to improve metadata handling and add synchronous seekFile method (f5b1ec9) - @seydx
  • Cleanup (25ac36f) - @seydx
  • Refactor Scaler to improve concurrency handling and memory management (b26e472) - @seydx
  • Enhance Demuxer to handle multiple consumers and propagate read errors correctly (4706798) - @seydx
  • Implement Mutex for serializing async operations in EncoderPool (135abe8) - @seydx
  • Extend UnwrapNativeObject for safer object creation (970dda4) - @seydx
  • Add GetInt64 method to AVOptionWrapper (529bb57) - @seydx
  • Add thread-local constructor references to various binding classes (90d89b8) - @seydx
  • Remove caching for hardware device context in FilterContext (90d6132) - @seydx
  • Remove caching for hardware device and frames contexts in CodecContext (4eff83d) - @seydx
  • Refactor Stream class to simplify metadata and attachedPic accessors, removing unnecessary caching (bd7efc6) - @seydx
  • Enable COPY_OPAQUE flag in Decoder to ensure packet.opaque is copied to frame.opaque (8163167) - @seydx
  • Enhance AsyncQueue to properly dispose items on closure to prevent resource leaks (29299e6) - @seydx
  • Enhance FMP4Stream to improve box size handling, add maxQueuedFragments option, and ensure init segment consumers do not hang (d63837f) - @seydx
  • Enhance pipeline processing to improve output handling and error propagation for multiple streams (51cbed8) - @seydx
  • Refactor WhisperTranscriber to improve segment extraction and handle end-of-input flushing (090fd51) - @seydx
  • Improve WebRTCStream to handle peer connection closure and renegotiation more gracefully (66c9bfa) - @seydx
  • Refactor RTPStream to improve abort handling (6f010fe) - @seydx
  • Enhance Muxer to handle write errors gracefully and improve resource management during cleanup (9aca43a) - @seydx
  • Improve IOStream error handling and resource management during read/write operations (26510ca) - @seydx
  • Fix timestamp rescaling to handle AV_NOPTS_VALUE correctly in FilterAPI (503af34) - @seydx
  • Enhance Encoder to support better audio frame resampling and correct PTS handling (07476c4) - @seydx
  • Refactor BitStreamFilterAPI to improve packet handling with retry logic for EAGAIN (7e54096) - @seydx
  • Add pullPartial and pullPartialSync methods to AudioFrameBuffer for end-of-stream handling (a7667c8) - @seydx
  • Update package and platform template to require Node.js version 22.18.0 or higher (169fb0a) - @seydx
  • Add gyp consistency check script to ensure binding files are in sync (a7b26f0) - @seydx
  • Refactor installation check logic to remove build from source functionality and improve error handling for missing prebuilt binaries (efbae2c) - @seydx
  • Fix version pinning for platform binary packages (de928aa) - @seydx
  • Enhance FFmpeg installation process with checksum verification and retry logic (c5a71f4) - @seydx
  • Update deps (5661b6a) - @seydx
  • chore: bump version to 6.2.0-beta.3 (add4ea1) - @seydx
  • Improve ffmpeg download process with direct URL fallback (1ce95b3) - @seydx
  • update (17e9d1a) - @seydx
  • Release ffmpeg hash in workflow (0b0c130) - @seydx
  • chore: bump version to 6.2.0-beta.2 (09817d0) - @seydx
  • Update Changelog (8c4d452) - @seydx
  • Update Readme (9c382e6) - @seydx
  • Update timeBase setter to use IRational type (da73f1c) - @seydx
  • Update typedoc (383551e) - @seydx
  • chore: bump version to 6.2.0-beta.1 (5a041da) - @seydx
  • New MediaFrameSource input for RTPStream/WebRTCStream/FMP4Stream — PiP over WebRTC & MSE, hw filter-complex graphs, FilterComplex EOF/teardown fixes (7dc7bdb) - @seydx
  • Pin ffmpeg hash (9bb8152) - @seydx
  • Update submodule (5990c18) - @seydx
  • Update submodules (6908837) - @seydx
  • Update submodules (70df374) - @seydx
  • Bump js-yaml from 4.1.1 to 4.3.0 in /examples/electron/forge (#281) (eabc983) - @dependabot[bot]

📦 Packages

The following platform packages have been updated to v6.2.0-beta.5:

  • @seydx/node-av-darwin-arm64@6.2.0-beta.5
  • @seydx/node-av-darwin-x64@6.2.0-beta.5
  • @seydx/node-av-linux-arm64@6.2.0-beta.5
  • @seydx/node-av-linux-x64@6.2.0-beta.5
  • @seydx/node-av-win32-arm64-mingw@6.2.0-beta.5
  • @seydx/node-av-win32-x64-mingw@6.2.0-beta.5
  • @seydx/node-av-win32-arm64-msvc@6.2.0-beta.5
  • @seydx/node-av-win32-x64-msvc@6.2.0-beta.5

v6.2.0-beta.4

v6.2.0-beta.4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Jul 12:06

⚠️ This is a pre-release version for testing. Install with: npm install node-av@beta

📋 All Changes since v6.1.1

  • chore: bump version to 6.2.0-beta.4 (1306ab2) - @seydx
  • Update deps (aed5a03) - @seydx
  • Update Changelog (ada70d1) - @seydx
  • Format (692c865) - @seydx
  • Add SHA256 checksum generation for release archives and update NPM publish command with provenance (01025d7) - @seydx
  • Add FFMPEG_MSVC_PREBUILT_TAG and enhance workflow for reproducible builds (30788c0) - @seydx
  • Update tests (1ba5dfd) - @seydx
  • Add async operation guards in Fifo and FilterGraph to prevent use-after-free errors during resource management (dc332ce) - @seydx
  • Add async operation guards in SoftwareResampleContext to prevent use-after-free errors during context replacement and cleanup (29b2fb6) - @seydx
  • Add async operation guards in SoftwareScaleContext to prevent use-after-free errors during context replacement (8b7a45d) - @seydx
  • Enhance Scaler to manage async operations and prevent use-after-free errors during cleanup (e52e77e) - @seydx
  • Refactor HardwareFramesContext to improve memory management and async operation handling (3c71a78) - @seydx
  • Refactor HardwareDeviceContext to manage device references more safely and simplify ownership handling (2e460fd) - @seydx
  • Add async operation guards to prevent use-after-free in Frame operations (55040cd) - @seydx
  • Add async operation guard and improve context management in IOContext (fc7afef) - @seydx
  • Enhance InputFormatProbeBufferWorker with improved error handling and async operation management (432dfa7) - @seydx
  • Add synchronous seek method and enhance error handling in FormatContext (ff3167d) - @seydx
  • Add async operation guards and validation for frame objects in FilterContext (f85bfd9) - @seydx
  • Add async operation guards and validation for audio frames in CodecContext (fc96340) - @seydx
  • Add async operation guard to Free method in BitStreamFilterContext (b05eff8) - @seydx
  • Enhance AudioFifo class with buffer validation and async operation handling (bfe2a75) - @seydx
  • Add PromiseWorker and AsyncOpCounter classes for asynchronous operation management (7a7b72b) - @seydx
  • Refactor Packet class to improve memory management and preserve metadata during data assignment (0405bf4) - @seydx
  • Fix memory allocation for attached picture (30fdc53) - @seydx
  • Update typings (a8c1f80) - @seydx
  • Refactor HardwareFramesContext to remove caching of device context wrapper (9557525) - @seydx
  • Refactor Frame class to remove caching of hardware frames context (548a14b) - @seydx
  • Refactor FormatContext to improve metadata handling and add synchronous seekFile method (f5b1ec9) - @seydx
  • Cleanup (25ac36f) - @seydx
  • Refactor Scaler to improve concurrency handling and memory management (b26e472) - @seydx
  • Enhance Demuxer to handle multiple consumers and propagate read errors correctly (4706798) - @seydx
  • Implement Mutex for serializing async operations in EncoderPool (135abe8) - @seydx
  • Extend UnwrapNativeObject for safer object creation (970dda4) - @seydx
  • Add GetInt64 method to AVOptionWrapper (529bb57) - @seydx
  • Add thread-local constructor references to various binding classes (90d89b8) - @seydx
  • Remove caching for hardware device context in FilterContext (90d6132) - @seydx
  • Remove caching for hardware device and frames contexts in CodecContext (4eff83d) - @seydx
  • Refactor Stream class to simplify metadata and attachedPic accessors, removing unnecessary caching (bd7efc6) - @seydx
  • Enable COPY_OPAQUE flag in Decoder to ensure packet.opaque is copied to frame.opaque (8163167) - @seydx
  • Enhance AsyncQueue to properly dispose items on closure to prevent resource leaks (29299e6) - @seydx
  • Enhance FMP4Stream to improve box size handling, add maxQueuedFragments option, and ensure init segment consumers do not hang (d63837f) - @seydx
  • Enhance pipeline processing to improve output handling and error propagation for multiple streams (51cbed8) - @seydx
  • Refactor WhisperTranscriber to improve segment extraction and handle end-of-input flushing (090fd51) - @seydx
  • Improve WebRTCStream to handle peer connection closure and renegotiation more gracefully (66c9bfa) - @seydx
  • Refactor RTPStream to improve abort handling (6f010fe) - @seydx
  • Enhance Muxer to handle write errors gracefully and improve resource management during cleanup (9aca43a) - @seydx
  • Improve IOStream error handling and resource management during read/write operations (26510ca) - @seydx
  • Fix timestamp rescaling to handle AV_NOPTS_VALUE correctly in FilterAPI (503af34) - @seydx
  • Enhance Encoder to support better audio frame resampling and correct PTS handling (07476c4) - @seydx
  • Refactor BitStreamFilterAPI to improve packet handling with retry logic for EAGAIN (7e54096) - @seydx
  • Add pullPartial and pullPartialSync methods to AudioFrameBuffer for end-of-stream handling (a7667c8) - @seydx
  • Update package and platform template to require Node.js version 22.18.0 or higher (169fb0a) - @seydx
  • Add gyp consistency check script to ensure binding files are in sync (a7b26f0) - @seydx
  • Refactor installation check logic to remove build from source functionality and improve error handling for missing prebuilt binaries (efbae2c) - @seydx
  • Fix version pinning for platform binary packages (de928aa) - @seydx
  • Enhance FFmpeg installation process with checksum verification and retry logic (c5a71f4) - @seydx
  • Update deps (5661b6a) - @seydx
  • chore: bump version to 6.2.0-beta.3 (add4ea1) - @seydx
  • Improve ffmpeg download process with direct URL fallback (1ce95b3) - @seydx
  • update (17e9d1a) - @seydx
  • Release ffmpeg hash in workflow (0b0c130) - @seydx
  • chore: bump version to 6.2.0-beta.2 (09817d0) - @seydx
  • Update Changelog (8c4d452) - @seydx
  • Update Readme (9c382e6) - @seydx
  • Update timeBase setter to use IRational type (da73f1c) - @seydx
  • Update typedoc (383551e) - @seydx
  • chore: bump version to 6.2.0-beta.1 (5a041da) - @seydx
  • New MediaFrameSource input for RTPStream/WebRTCStream/FMP4Stream — PiP over WebRTC & MSE, hw filter-complex graphs, FilterComplex EOF/teardown fixes (7dc7bdb) - @seydx
  • Pin ffmpeg hash (9bb8152) - @seydx
  • Update submodule (5990c18) - @seydx
  • Update submodules (6908837) - @seydx
  • Update submodules (70df374) - @seydx
  • Bump js-yaml from 4.1.1 to 4.3.0 in /examples/electron/forge (#281) (eabc983) - @dependabot[bot]

📦 Packages

The following platform packages have been updated to v6.2.0-beta.4:

  • @seydx/node-av-darwin-arm64@6.2.0-beta.4
  • @seydx/node-av-darwin-x64@6.2.0-beta.4
  • @seydx/node-av-linux-arm64@6.2.0-beta.4
  • @seydx/node-av-linux-x64@6.2.0-beta.4
  • @seydx/node-av-win32-arm64-mingw@6.2.0-beta.4
  • @seydx/node-av-win32-x64-mingw@6.2.0-beta.4
  • @seydx/node-av-win32-arm64-msvc@6.2.0-beta.4
  • @seydx/node-av-win32-x64-msvc@6.2.0-beta.4

v6.2.0-beta.3

v6.2.0-beta.3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Jul 23:10

⚠️ This is a pre-release version for testing. Install with: npm install node-av@beta

📋 All Changes since v6.1.1

📦 Packages

The following platform packages have been updated to v6.2.0-beta.3:

  • @seydx/node-av-darwin-arm64@6.2.0-beta.3
  • @seydx/node-av-darwin-x64@6.2.0-beta.3
  • @seydx/node-av-linux-arm64@6.2.0-beta.3
  • @seydx/node-av-linux-x64@6.2.0-beta.3
  • @seydx/node-av-win32-arm64-mingw@6.2.0-beta.3
  • @seydx/node-av-win32-x64-mingw@6.2.0-beta.3
  • @seydx/node-av-win32-arm64-msvc@6.2.0-beta.3
  • @seydx/node-av-win32-x64-msvc@6.2.0-beta.3

v6.1.1

Choose a tag to compare

@github-actions github-actions released this 06 Jul 01:17

Added

  • Demuxer.interrupt() aborts an in-progress blocking read (e.g. av_read_frame on a quiet RTSP/network source) without freeing the demuxer, so an active pipeline can drain and shut down before close(). PipelineControl.stop() now calls it on the source demuxer(s) automatically.

Fixed

  • RTPStream / FMP4Stream / pipeline().stop() could hang on teardown of a live source. stop() awaited the pipeline's completion before closing the input, but a blocking read on a quiet RTSP/network source only unblocks when the input is interrupted — so completion waited for the read while the read waited to be unblocked (deadlock). PipelineControl.stop() now interrupts the source demuxer's read (via the new Demuxer.interrupt()), so the pipeline drains and completion resolves before close. A related teardown deadlock in the per-stream backpressure loop (a full queue whose consumer had already stopped starved the other streams) is fixed too.
  • Aborting a Demuxer's signal now cancels an in-progress blocking read. The abort handler previously only flagged the read loop to stop, leaving the demux thread parked in av_read_frame() until data happened to arrive; it now interrupts the read so cancellation takes effect immediately.

📋 All Changes since v6.1.0

📦 Packages

The following platform packages have been updated to v6.1.1:

  • @seydx/node-av-darwin-arm64@6.1.1
  • @seydx/node-av-darwin-x64@6.1.1
  • @seydx/node-av-linux-arm64@6.1.1
  • @seydx/node-av-linux-x64@6.1.1
  • @seydx/node-av-win32-arm64-mingw@6.1.1
  • @seydx/node-av-win32-x64-mingw@6.1.1
  • @seydx/node-av-win32-arm64-msvc@6.1.1
  • @seydx/node-av-win32-x64-msvc@6.1.1

v6.1.0

Choose a tag to compare

@github-actions github-actions released this 27 Jun 04:34

Added

  • Typed context / graph field bags and a configure hook on Encoder, Decoder, FilterAPI, FilterComplexAPI, Muxer and Demuxer. context (encoder/decoder/muxer) and graph (filters) are typed bags of the writable fields on the underlying native object (e.g. context: { bitRate: '5M', gopSize: 60, colorPrimaries: AVCOL_PRI_BT2020 }); rate-control fields still accept '5M'-style strings. configure(ctx | graph | fmt) is a callback for what the bag cannot express — flags via setFlags, methods, or setter-only forms such as a 'hvc1' FourCC string for -tag:v hvc1. Both run right before the object is opened/finalized (avcodec_open2, avfilter_graph_config, avformat_write_header), the bag first; for the muxer after the source metadata/disposition are copied, so values set there take precedence. The Demuxer exposes only configure(fmt), called after avformat_open_input / avformat_find_stream_info.

    const encoder = await Encoder.create(FF_ENCODER_LIBX265, {
      decoder,
      context: { bitRate: '5M', gopSize: 60 },        // typed, declarative field bag
      configure: (ctx) => { ctx.codecTag = 'hvc1'; }, // imperative escape (-tag:v hvc1)
    });
  • HardwareContext.auto() accepts a prefer option to prioritise specific hardware type(s) over the platform default order, e.g. auto({ prefer: AV_HWDEVICE_TYPE_VAAPI }) to pick VAAPI ahead of QSV on Intel. Preferred types are tested first (and kept only if available), then the usual platform fallback applies.

  • Bitstream filter extradata is now reflected in the output parameters. Filters that adapt container framing (aac_adtstoasc, extract_extradata, dump_extra, *_mp4toannexb) emit the resulting global headers as packet side data rather than on par_out. BitStreamFilterAPI.outputCodecParameters now folds that side data in, so a stream copy that relies on it (including Muxer's bsf option) writes a header with the correct codec configuration.

Changed

  • Synced FFmpeg with the latest master (~380 upstream commits) — numerous bug fixes, stability and performance improvements. Highlights relevant to node-av users:
    • Security hardening — ~29 overflow / bounds fixes across decoders, demuxers and filters
    • swscale PAL8 — palette video handled by the new ops scaler engine
    • AMF — zero-copy host memory mapping, HDR/colour metadata propagation, high_quality encoder preset
    • NVENC — AV1 hierarchical B-frame reference mode
    • D3D11VA — native P016 (10/16-bit YUV 4:2:0) hardware decoding on Windows
    • ONNX Runtime DNN backend — GPU inference for ML-driven filters (super-resolution, denoise, …)
    • Dolby Vision — RPU detection across all NALs (better DoVi interop)
    • Fragmented-MP4 / DASH / HLS correctness fixes
    • Faster decode/encode on x86 (H.264 AVX2 intra-prediction, me_cmp SSSE3), AArch64 NEON and RISC-V RVV
  • Regenerated constants, encoders, and decoders from updated FFmpeg headers

Deprecated

  • Raw codec/graph field options moved to the context / graph bag. Encoder's bitrate / minRate / maxRate / bufSize (→ context: { bitRate, rcMinRate, rcMaxRate, rcBufferSize }, still accepting '5M'-style strings), gopSize, maxBFrames, threadCount, threadType; Decoder's threadCount / threadType; and FilterAPI / FilterComplexAPI's threads (→ graph: { nbThreads }), scaleSwsOpts, audioResampleOpts. They still work — set them via the bag instead.

Fixed

  • Rotation / HDR side data was lost when transcoding. The muxer copied a stream's coded_side_data (display matrix / rotation, HDR mastering display & content light level) only on stream copy, not when re-encoding — so a portrait phone video would play sideways and HDR metadata would vanish after a transcode. The encoder output path now copies it too, matching the stream-copy behaviour.
  • Demuxer dropped packets under backpressure in multi-stream pipelines (#263). When a single demuxer fed two consumers draining at different rates (e.g. a slow video chain alongside a fast audio chain), the demux thread discarded packets for whichever stream's queue was momentarily full instead of waiting for it to drain. This lost video reference frames and corrupted decoding (missing reference picture, mmco: unref short failure, co located POCs unavailable). The read loop now applies per-stream backpressure and is paced by the slowest consumer, so no packet is dropped.
  • worker_threads safety. Native class constructor references are now thread_local, so node-av objects can be created and used across multiple worker threads without crashing.
  • Cross-compiled Windows installs selected the wrong toolchain (#260). A cross install (npm install --os=win32 --cpu=x64) incorrectly picked the MinGW FFmpeg build; it now defaults to the standard MSVC build (pass --libc=mingw to override). See the new Cross-Platform Packaging section in the README.
  • Scaler failed on QSV hardware frames (Scaler: filter produced no frame). The Intel QSV scaler (vpp_qsv) buffers internally and does not emit a frame synchronously after a single input, so the scaler's process-one-receive-one path got nothing back. It now flushes the graph to drain the pending frame and rebuilds it for the next call. Zero-latency hardware scalers (scale_vaapi, scale_vt) are unaffected.

📋 All Changes since v6.0.0

📦 Packages

The following platform packages have been updated to v6.1.0:

  • @seydx/node-av-darwin-arm64@6.1.0
  • @seydx/node-av-darwin-x64@6.1.0
  • @seydx/node-av-linux-arm64@6.1.0
  • @seydx/node-av-linux-x64@6.1.0
  • @seydx/node-av-win32-arm64-mingw@6.1.0
  • @seydx/node-av-win32-x64-mingw@6.1.0
  • @seydx/node-av-win32-arm64-msvc@6.1.0
  • @seydx/node-av-win32-x64-msvc@6.1.0

v6.0.0

Choose a tag to compare

@github-actions github-actions released this 04 Jun 00:50

Breaking Changes

WebRTC / RTP moved to the node-av/webrtc subpath

WebRTCStream, RTPStream, and the re-exported werift primitives (RTCPeerConnection, MediaStreamTrack, RtpPacket, RTCSessionDescription, RTCIceCandidate, RTCRtpCodecParameters, PeerConfig) are no longer exported from the main package. They now live under the dedicated node-av/webrtc entry point. This removes the werift dependency chain from the core import graph.

werift is now an optional dependency — only required when using node-av/webrtc.

Migration:

// Before
import { WebRTCStream, RTPStream, RTCPeerConnection } from 'node-av';

// After
import { WebRTCStream, RTPStream, RTCPeerConnection } from 'node-av/webrtc';

FilterPreset thin wrappers replaced by the generic filter()

The hand-written single-filter convenience methods on FilterPreset (e.g. fps, rotate, fade, volume, drawtext, trim, concat, highpass, aresample, …) were removed in favor of the type-safe generic filter(name, options), which covers every FFmpeg filter with autocomplete and validation. The hardware-aware / auto-mapping methods (scale, crop, overlay, tonemap, deinterlace, format, aformat, whisper, …) and custom() remain.

Migration:

// Before
FilterPreset.chain().fps(30).drawtext('hi', { x: 10 }).build();

// After
FilterPreset.chain()
  .filter('fps', { fps: 30 })
  .filter('drawtext', { text: 'hi', x: 10 })
  .build();

Decoder hwaccelOutputFormat replaced by rescale

The hwaccelOutputFormat decoder option was removed in favor of the new rescale option (see Added), which both downloads hardware frames to system memory and guarantees the final pixel format/size in one step. Unlike hwaccelOutputFormat (whose value had to be a format the hardware could transfer to directly — typically nv12), rescale: { pixelFormat } accepts any pixel format and converts on the CPU after the download, so it actually delivers the format you ask for across both hardware- and software-decoded streams.

Migration:

// Before
const decoder = await Decoder.create(stream, { hardware: hw, hwaccelOutputFormat: AV_PIX_FMT_YUV420P });

// After
const decoder = await Decoder.create(stream, { hardware: hw, rescale: { pixelFormat: AV_PIX_FMT_YUV420P } });

Added

Encoder audio auto-resampling (autoResample)

New autoResample option (default false) on Encoder.create()/createSync(). When enabled, the encoder transparently converts incoming audio to the nearest codec-supported sample rate, sample format, and channel layout — e.g. a 96 kHz microphone feeding libmp3lame (which only supports up to 48 kHz), or packed s16 feeding AAC (which needs planar fltp). When disabled, an unsupported input now raises a descriptive error naming the mismatch.

Encoder video auto pixel-format conversion (autoFormat)

New autoFormat option (default false) on Encoder.create()/createSync() — the video counterpart of autoResample. When enabled, the encoder transparently converts incoming video to a codec-supported pixel format via swscale — e.g. rgb24 or yuv444p feeding libx264. The target is chosen with avcodec_find_best_pix_fmt_of_list, so it keeps as much of the source as possible (an RGB input picks yuv444p over yuv420p) instead of always falling back to the codec's first format. Resolution is never changed (the encoder already adopts the frame's dimensions) and hardware frames are left untouched (their format is negotiated through the hardware frames context). When disabled, an unsupported input now raises a descriptive error naming the mismatch. Also adds the avcodecFindBestPixFmtOfList() utility.

Decoder audio output resampling (resample)

New resample option on Decoder.create()/createSync() — the audio mirror of the encoder's autoResample and of rescale for video. When set, decoded audio frames are transparently converted to the requested { sampleRate, sampleFormat, channelLayout } (any omitted field keeps the decoded value, and conversion is skipped when the source already matches). Unspecified PCM channel layouts are normalized to their canonical native layout automatically. Useful when a capture device delivers a rate you cannot control (e.g. avfoundation ignoring a microphone sample-rate request) and every downstream stage should still receive the rate you asked for. Also adds the avChannelLayoutDefault() utility.

Decoder video output rescaling (rescale)

New rescale option on Decoder.create()/createSync() — the video mirror of resample. When set, decoded video frames are transparently converted to the requested { width, height, pixelFormat } (any omitted field keeps the decoded value, and conversion is skipped when the source already matches). Hardware frames are automatically transferred to a supported software format first and then converted, so a single option normalizes both hardware- and software-decoded streams; software frames are converted directly. Hardware frames are left on the GPU (zero-copy) when rescale is not set. This replaces the former hwaccelOutputFormat (see Breaking Changes) — rescale: { pixelFormat } both downloads hardware frames and guarantees the format. Useful to normalize a heterogeneous set of sources (e.g. RTSP cameras each delivering a different pixel format) so every downstream stage receives a uniform format/size.

Scaler — hardware-aware image scale / crop / convert / encode

High-level Scaler (from node-av/api) that scales, crops, and converts decoded frames to raw pixel buffers or JPEG/PNG. Pools its contexts, GPU graphs, and encoders for the detection/thumbnail/snapshot workload; hardware frames are processed on the GPU.

EncoderPool — pooled image encoders

EncoderPool (from node-av/api) reuses image encoders across recurring resolutions. Adds Encoder.encodeOne() / encodeOneSync() for one-shot single-frame encodes.

Frame.exportIOSurface() — zero-copy IOSurface export (macOS)

Exports the IOSurfaceRef backing a decoded VideoToolbox frame as an 8-byte pointer Buffer — the inverse of Frame.fromIOSurface(). Enables zero-copy interop with Metal / CoreVideo (e.g. feeding hardware-decoded frames into a GPU compositor) without a GPU → CPU readback.

const handle = frame.exportIOSurface();
if (handle) {
  // Pass to a Metal-based compositor; keep `frame` alive while using the handle.
}

Returns null for non-VideoToolbox frames and on non-macOS platforms. The IOSurface stays owned by the frame's CVPixelBuffer, so the frame must be kept alive while the handle is in use.

Type-safe codec options

Encoder.create() / createSync() and Decoder.create() / createSync() now infer the codec-specific private options from the codec constant. When you pass a branded constant (e.g. FF_ENCODER_LIBX264), the options field is strongly typed to that codec's known options — with editor autocomplete, and compile-time errors for unknown keys or invalid enum values:

// Autocomplete + validation for libx264's private options
await Encoder.create(FF_ENCODER_LIBX264, {
  options: { preset: 'fast', crf: 23 },
});

await Encoder.create(FF_ENCODER_H264_VIDEOTOOLBOX, {
  options: { coder: 'nope' }, // ✗ Type error: not assignable to 'cavlc' | 'vlc' | 'cabac' | 'ac'
});

The option types are generated from FFmpeg's AVOption metadata, covering every codec known to FFmpeg. Each codec's bag also includes the generic AVCodecContext options (e.g. strict, flags, bf), with the codec's private options taking precedence on name clashes (profile, level). Codecs passed by AVCodecID, by Codec instance, or as a plain string still accept a loose option bag, so existing dynamic usage is unchanged. Combinable flag options (e.g. mpv_flags) suggest the known tokens while still accepting any combined string ('+a+b').

Type-safe container & bitstream-filter options

The same generated-from-source typing now extends to containers and bitstream filters:

Muxer.open() / openSync() and Demuxer.open() / openSync() — when format is given as a literal (e.g. 'mp4', 'mov'), the options bag is typed to that (de)muxer's private options plus the generic AVFormatContext options, with autocomplete for keys and enum/flag values:

await Muxer.open('out.mp4', {
  format: 'mp4',
  options: { movflags: '+faststart+frag_keyframe' }, // autocomplete of mov flags
});

The format field itself autocompletes every available muxer/demuxer name (the generated MuxerFormat / DemuxerFormat unions, covering libavformat and libavdevice), while still accepting any string. Because container option bags also legitimately carry protocol and codec-child options (e.g. rtsp_transport on a demuxer), unknown keys remain accepted — typing is additive autocomplete, never a hard gate.

BitStreamFilterAPI.create() — the filter name autocompletes every available bitstream filter (the generated BsfName union), and the options bag is strongly typed to the named filter's options (strict, like codecs), so h264_metadata's aud?: 'pass' | 'insert' | 'remove' is validated at compile time. Unknown names still pass through via the (string & {}) fallback.

Formats/filters referenced dynamically (no literal name) still accept a loose option bag.

Bitstream filters in transcode pipelines

BitStreamFilterAPI.create() now accepts a Stream (copy), an Encoder (transcode), or another filter (chain) as its input source, and initializes lazily on the first packet. This makes coded-bitstream filters like h264_metadata work after a re-encode the same way the FFmpeg CLI does — the filter derives its parameters from the encoder's output once it is open, and the muxer writes the filter's output parameters to the cont...

Read more

v5.2.4

Choose a tag to compare

@github-actions github-actions released this 13 May 21:25

📋 All Changes since v5.2.3

📦 Packages

The following platform packages have been updated to v5.2.4:

  • @seydx/node-av-darwin-arm64@5.2.4
  • @seydx/node-av-darwin-x64@5.2.4
  • @seydx/node-av-linux-arm64@5.2.4
  • @seydx/node-av-linux-x64@5.2.4
  • @seydx/node-av-win32-arm64-mingw@5.2.4
  • @seydx/node-av-win32-x64-mingw@5.2.4
  • @seydx/node-av-win32-arm64-msvc@5.2.4
  • @seydx/node-av-win32-x64-msvc@5.2.4

v5.2.3

Choose a tag to compare

@github-actions github-actions released this 14 Apr 06:21

Changed

  • Updated FFmpeg with new encoders, JPEG-XS support, swscale Vulkan support, and more
  • Regenerated constants, encoders, and decoders from updated FFmpeg headers

Fixed

  • Various bug fixes and stability improvements
  • Updated dependencies

📋 All Changes since v5.2.2

📦 Packages

The following platform packages have been updated to v5.2.3:

  • @seydx/node-av-darwin-arm64@5.2.3
  • @seydx/node-av-darwin-x64@5.2.3
  • @seydx/node-av-linux-arm64@5.2.3
  • @seydx/node-av-linux-x64@5.2.3
  • @seydx/node-av-win32-arm64-mingw@5.2.3
  • @seydx/node-av-win32-x64-mingw@5.2.3
  • @seydx/node-av-win32-arm64-msvc@5.2.3
  • @seydx/node-av-win32-x64-msvc@5.2.3