node-av 2.5.2 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -57,3 +57,37 @@ export interface LogOptions {
57
57
  */
58
58
  maxLevel?: AVLogLevel;
59
59
  }
60
+ /**
61
+ * Image output format
62
+ */
63
+ export type ImageOutputFormat = 'nv12' | 'yuv420p' | 'rgb' | 'rgba' | 'gray';
64
+ /**
65
+ * Image cropping options
66
+ */
67
+ export interface ImageCrop {
68
+ top: number;
69
+ left: number;
70
+ width: number;
71
+ height: number;
72
+ }
73
+ /**
74
+ * Image resizing options
75
+ */
76
+ export interface ImageResize {
77
+ width: number;
78
+ height: number;
79
+ }
80
+ /**
81
+ * Image format conversion options
82
+ */
83
+ export interface ImageFormat {
84
+ to: ImageOutputFormat;
85
+ }
86
+ /**
87
+ Image processing options
88
+ */
89
+ export interface ImageOptions {
90
+ format?: ImageFormat;
91
+ crop?: ImageCrop;
92
+ resize?: ImageResize;
93
+ }
@@ -1,6 +1,37 @@
1
1
  import type { AVCodecID, AVMediaType, AVPixelFormat, AVSampleFormat } from '../constants/constants.js';
2
2
  import type { FormatContext } from './format-context.js';
3
3
  import type { ChannelLayout, IRational } from './types.js';
4
+ /**
5
+ * Get FFmpeg library information.
6
+ *
7
+ * Returns detailed information about the FFmpeg libraries including
8
+ * version numbers and build configuration.
9
+ *
10
+ * @returns FFmpeg information object with version, configuration, and library versions
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { getFFmpegInfo } from 'node-av/lib';
15
+ *
16
+ * const info = getFFmpegInfo();
17
+ * console.log('FFmpeg version:', info.version);
18
+ * console.log('Configuration:', info.configuration);
19
+ * console.log('libavcodec:', info.libraries.avcodec);
20
+ * ```
21
+ */
22
+ export declare function getFFmpegInfo(): {
23
+ version: string;
24
+ configuration: string;
25
+ libraries: {
26
+ avutil: string;
27
+ avcodec: string;
28
+ avformat: string;
29
+ avfilter: string;
30
+ avdevice: string;
31
+ swscale: string;
32
+ swresample: string;
33
+ };
34
+ };
4
35
  /**
5
36
  * Get bytes per audio sample.
6
37
  *
@@ -615,6 +646,48 @@ export declare function avSamplesGetBufferSize(nbChannels: number, nbSamples: nu
615
646
  size: number;
616
647
  linesize: number;
617
648
  };
649
+ /**
650
+ * Image crop function.
651
+ *
652
+ * Crops an image region from source buffer to destination buffer.
653
+ *
654
+ * @param dstBuffer - Destination buffer (must be pre-allocated)
655
+ *
656
+ * @param srcBuffer - Source buffer containing the image
657
+ *
658
+ * @param pixFmt - Pixel format
659
+ *
660
+ * @param srcWidth - Source image width
661
+ *
662
+ * @param srcHeight - Source image height
663
+ *
664
+ * @param cropX - X coordinate of crop region (left)
665
+ *
666
+ * @param cropY - Y coordinate of crop region (top)
667
+ *
668
+ * @param cropWidth - Width of crop region
669
+ *
670
+ * @param cropHeight - Height of crop region
671
+ *
672
+ * @returns Number of bytes copied
673
+ *
674
+ * @example
675
+ * ```typescript
676
+ * import { AV_PIX_FMT_NV12 } from 'node-av/constants';
677
+ *
678
+ * const dstSize = avImageGetBufferSize(AV_PIX_FMT_NV12, 100, 100, 1);
679
+ * const dstBuffer = Buffer.alloc(dstSize);
680
+ *
681
+ * const bytesCopied = avImageCrop(
682
+ * dstBuffer, srcBuffer,
683
+ * AV_PIX_FMT_NV12,
684
+ * 320, 180, // source dimensions
685
+ * 10, 10, // crop position
686
+ * 100, 100 // crop size
687
+ * );
688
+ * ```
689
+ */
690
+ export declare function avImageCrop(dstBuffer: Buffer, srcBuffer: Buffer, pixFmt: AVPixelFormat, srcWidth: number, srcHeight: number, cropX: number, cropY: number, cropWidth: number, cropHeight: number): number;
618
691
  /**
619
692
  * Describe channel layout.
620
693
  *
@@ -1,5 +1,26 @@
1
1
  import { bindings } from './binding.js';
2
2
  import { FFmpegError } from './error.js';
3
+ /**
4
+ * Get FFmpeg library information.
5
+ *
6
+ * Returns detailed information about the FFmpeg libraries including
7
+ * version numbers and build configuration.
8
+ *
9
+ * @returns FFmpeg information object with version, configuration, and library versions
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { getFFmpegInfo } from 'node-av/lib';
14
+ *
15
+ * const info = getFFmpegInfo();
16
+ * console.log('FFmpeg version:', info.version);
17
+ * console.log('Configuration:', info.configuration);
18
+ * console.log('libavcodec:', info.libraries.avcodec);
19
+ * ```
20
+ */
21
+ export function getFFmpegInfo() {
22
+ return bindings.getFFmpegInfo();
23
+ }
3
24
  /**
4
25
  * Get bytes per audio sample.
5
26
  *
@@ -672,6 +693,50 @@ export function avSamplesGetBufferSize(nbChannels, nbSamples, sampleFmt, align)
672
693
  }
673
694
  return result;
674
695
  }
696
+ /**
697
+ * Image crop function.
698
+ *
699
+ * Crops an image region from source buffer to destination buffer.
700
+ *
701
+ * @param dstBuffer - Destination buffer (must be pre-allocated)
702
+ *
703
+ * @param srcBuffer - Source buffer containing the image
704
+ *
705
+ * @param pixFmt - Pixel format
706
+ *
707
+ * @param srcWidth - Source image width
708
+ *
709
+ * @param srcHeight - Source image height
710
+ *
711
+ * @param cropX - X coordinate of crop region (left)
712
+ *
713
+ * @param cropY - Y coordinate of crop region (top)
714
+ *
715
+ * @param cropWidth - Width of crop region
716
+ *
717
+ * @param cropHeight - Height of crop region
718
+ *
719
+ * @returns Number of bytes copied
720
+ *
721
+ * @example
722
+ * ```typescript
723
+ * import { AV_PIX_FMT_NV12 } from 'node-av/constants';
724
+ *
725
+ * const dstSize = avImageGetBufferSize(AV_PIX_FMT_NV12, 100, 100, 1);
726
+ * const dstBuffer = Buffer.alloc(dstSize);
727
+ *
728
+ * const bytesCopied = avImageCrop(
729
+ * dstBuffer, srcBuffer,
730
+ * AV_PIX_FMT_NV12,
731
+ * 320, 180, // source dimensions
732
+ * 10, 10, // crop position
733
+ * 100, 100 // crop size
734
+ * );
735
+ * ```
736
+ */
737
+ export function avImageCrop(dstBuffer, srcBuffer, pixFmt, srcWidth, srcHeight, cropX, cropY, cropWidth, cropHeight) {
738
+ return bindings.avImageCrop(dstBuffer, srcBuffer, pixFmt, srcWidth, srcHeight, cropX, cropY, cropWidth, cropHeight);
739
+ }
675
740
  /**
676
741
  * Describe channel layout.
677
742
  *
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../src/lib/utilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../src/lib/utilities.ts"],"names":[],"mappings":"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"}
package/install/check.js CHANGED
@@ -4,6 +4,7 @@ import { existsSync } from 'node:fs';
4
4
  import { createRequire } from 'node:module';
5
5
  import { join } from 'node:path';
6
6
 
7
+ import { type } from 'node:os';
7
8
  import { log, spawnRebuild, useGlobalFFmpeg } from './ffmpeg.js';
8
9
 
9
10
  const require = createRequire(import.meta.url);
@@ -12,16 +13,37 @@ const tryLoadPrebuilt = () => {
12
13
  // Try to load from platform-specific package (optionalDependencies)
13
14
  const platform = process.platform;
14
15
  const arch = process.arch;
15
- const packageName = `@seydx/node-av-${platform}-${arch}`;
16
16
 
17
- try {
18
- const packagePath = require.resolve(`${packageName}/node-av.node`);
19
- if (existsSync(packagePath)) {
20
- log(`Using prebuilt binary from ${packageName}`);
21
- return true;
17
+ if (platform === 'win32') {
18
+ const useMingW = type() !== 'Windows_NT';
19
+ if (useMingW) {
20
+ try {
21
+ const packageName = `@seydx/node-av-${platform}-${arch}-mingw`;
22
+ return require(`${packageName}/node-av.node`);
23
+ } catch {
24
+ // Package not installed or file not found
25
+ }
26
+ }
27
+
28
+ // Fallback to MSVC
29
+ try {
30
+ const packageName = `@seydx/node-av-${platform}-${arch}-msvc`;
31
+ return require(`${packageName}/node-av.node`);
32
+ } catch {
33
+ // Package not installed or file not found
34
+ }
35
+ } else {
36
+ const packageName = `@seydx/node-av-${platform}-${arch}`;
37
+
38
+ try {
39
+ const packagePath = require.resolve(`${packageName}/node-av.node`);
40
+ if (existsSync(packagePath)) {
41
+ log(`Using prebuilt binary from ${packageName}`);
42
+ return true;
43
+ }
44
+ } catch {
45
+ // Package not installed or file not found
22
46
  }
23
- } catch {
24
- // Package not installed or file not found
25
47
  }
26
48
 
27
49
  // Try local binary folder (for development)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-av",
3
- "version": "2.5.2",
3
+ "version": "2.6.0",
4
4
  "description": "FFmpeg bindings for Node.js",
5
5
  "author": "seydx (https://github.com/seydx/av)",
6
6
  "type": "module",
@@ -61,43 +61,44 @@
61
61
  "update": "updates --update ./"
62
62
  },
63
63
  "optionalDependencies": {
64
- "@seydx/node-av-darwin-arm64": "^2.5.2",
65
- "@seydx/node-av-darwin-x64": "^2.5.2",
66
- "@seydx/node-av-linux-arm64": "^2.5.2",
67
- "@seydx/node-av-linux-x64": "^2.5.2",
68
- "@seydx/node-av-win32-arm64-mingw": "^2.5.2",
69
- "@seydx/node-av-win32-arm64-msvc": "^2.5.2",
70
- "@seydx/node-av-win32-x64-mingw": "^2.5.2",
71
- "@seydx/node-av-win32-x64-msvc": "^2.5.2"
64
+ "@seydx/node-av-darwin-arm64": "^2.6.0",
65
+ "@seydx/node-av-darwin-x64": "^2.6.0",
66
+ "@seydx/node-av-linux-arm64": "^2.6.0",
67
+ "@seydx/node-av-linux-x64": "^2.6.0",
68
+ "@seydx/node-av-win32-arm64-mingw": "^2.6.0",
69
+ "@seydx/node-av-win32-arm64-msvc": "^2.6.0",
70
+ "@seydx/node-av-win32-x64-mingw": "^2.6.0",
71
+ "@seydx/node-av-win32-x64-msvc": "^2.6.0"
72
72
  },
73
73
  "devDependencies": {
74
74
  "@camera.ui/ffmpeg": "^0.0.14",
75
75
  "@stylistic/eslint-plugin": "^5.4.0",
76
76
  "@types/debug": "^4.1.12",
77
- "@types/node": "^24.5.2",
77
+ "@types/node": "^24.6.0",
78
78
  "@types/node-abi": "^3.0.3",
79
79
  "@types/pngjs": "^6.0.5",
80
80
  "@types/semver": "^7.7.1",
81
81
  "@types/unzipper": "^0.10.11",
82
- "@typescript-eslint/parser": "^8.44.1",
82
+ "@typescript-eslint/parser": "^8.45.0",
83
83
  "concurrently": "^9.2.1",
84
84
  "cpy-cli": "^6.0.0",
85
- "cross-env": "^10.0.0",
85
+ "cross-env": "^10.1.0",
86
86
  "eslint": "^9.36.0",
87
- "eslint-plugin-jsdoc": "^60.4.0",
87
+ "eslint-plugin-jsdoc": "^60.5.0",
88
88
  "globals": "^16.4.0",
89
89
  "node-addon-api": "^8.5.0",
90
90
  "node-gyp": "^11.4.2",
91
91
  "pngjs": "^7.0.0",
92
92
  "prettier": "^3.6.2",
93
93
  "rimraf": "^6.0.1",
94
+ "sharp": "^0.34.4",
94
95
  "tsx": "^4.20.6",
95
96
  "typedoc": "^0.28.13",
96
97
  "typedoc-plugin-markdown": "^4.9.0",
97
98
  "typedoc-vitepress-theme": "^1.1.2",
98
99
  "typescript": "^5.9.2",
99
- "typescript-eslint": "^8.44.1",
100
- "updates": "^16.7.2",
100
+ "typescript-eslint": "^8.45.0",
101
+ "updates": "^16.7.4",
101
102
  "vitepress": "^2.0.0-alpha.12"
102
103
  },
103
104
  "bugs": {