@revizly/node-av 5.2.2-beta.1
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.
- package/BUILD_LINUX.md +61 -0
- package/LICENSE.md +22 -0
- package/README.md +662 -0
- package/build_mac_local.sh +69 -0
- package/dist/api/audio-frame-buffer.d.ts +205 -0
- package/dist/api/audio-frame-buffer.js +287 -0
- package/dist/api/audio-frame-buffer.js.map +1 -0
- package/dist/api/bitstream-filter.d.ts +820 -0
- package/dist/api/bitstream-filter.js +1242 -0
- package/dist/api/bitstream-filter.js.map +1 -0
- package/dist/api/constants.d.ts +44 -0
- package/dist/api/constants.js +45 -0
- package/dist/api/constants.js.map +1 -0
- package/dist/api/data/test_av1.ivf +0 -0
- package/dist/api/data/test_h264.h264 +0 -0
- package/dist/api/data/test_hevc.h265 +0 -0
- package/dist/api/data/test_mjpeg.mjpeg +0 -0
- package/dist/api/data/test_vp8.ivf +0 -0
- package/dist/api/data/test_vp9.ivf +0 -0
- package/dist/api/decoder.d.ts +1088 -0
- package/dist/api/decoder.js +1775 -0
- package/dist/api/decoder.js.map +1 -0
- package/dist/api/demuxer.d.ts +1219 -0
- package/dist/api/demuxer.js +2081 -0
- package/dist/api/demuxer.js.map +1 -0
- package/dist/api/device.d.ts +586 -0
- package/dist/api/device.js +961 -0
- package/dist/api/device.js.map +1 -0
- package/dist/api/encoder.d.ts +1132 -0
- package/dist/api/encoder.js +1988 -0
- package/dist/api/encoder.js.map +1 -0
- package/dist/api/filter-complex.d.ts +821 -0
- package/dist/api/filter-complex.js +1604 -0
- package/dist/api/filter-complex.js.map +1 -0
- package/dist/api/filter-presets.d.ts +1286 -0
- package/dist/api/filter-presets.js +2152 -0
- package/dist/api/filter-presets.js.map +1 -0
- package/dist/api/filter.d.ts +1234 -0
- package/dist/api/filter.js +1976 -0
- package/dist/api/filter.js.map +1 -0
- package/dist/api/fmp4-stream.d.ts +426 -0
- package/dist/api/fmp4-stream.js +739 -0
- package/dist/api/fmp4-stream.js.map +1 -0
- package/dist/api/hardware.d.ts +651 -0
- package/dist/api/hardware.js +1260 -0
- package/dist/api/hardware.js.map +1 -0
- package/dist/api/index.d.ts +17 -0
- package/dist/api/index.js +32 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/io-stream.d.ts +307 -0
- package/dist/api/io-stream.js +282 -0
- package/dist/api/io-stream.js.map +1 -0
- package/dist/api/muxer.d.ts +957 -0
- package/dist/api/muxer.js +2002 -0
- package/dist/api/muxer.js.map +1 -0
- package/dist/api/pipeline.d.ts +607 -0
- package/dist/api/pipeline.js +1145 -0
- package/dist/api/pipeline.js.map +1 -0
- package/dist/api/utilities/async-queue.d.ts +120 -0
- package/dist/api/utilities/async-queue.js +211 -0
- package/dist/api/utilities/async-queue.js.map +1 -0
- package/dist/api/utilities/audio-sample.d.ts +117 -0
- package/dist/api/utilities/audio-sample.js +112 -0
- package/dist/api/utilities/audio-sample.js.map +1 -0
- package/dist/api/utilities/channel-layout.d.ts +76 -0
- package/dist/api/utilities/channel-layout.js +80 -0
- package/dist/api/utilities/channel-layout.js.map +1 -0
- package/dist/api/utilities/electron-shared-texture.d.ts +328 -0
- package/dist/api/utilities/electron-shared-texture.js +503 -0
- package/dist/api/utilities/electron-shared-texture.js.map +1 -0
- package/dist/api/utilities/image.d.ts +207 -0
- package/dist/api/utilities/image.js +213 -0
- package/dist/api/utilities/image.js.map +1 -0
- package/dist/api/utilities/index.d.ts +12 -0
- package/dist/api/utilities/index.js +25 -0
- package/dist/api/utilities/index.js.map +1 -0
- package/dist/api/utilities/media-type.d.ts +49 -0
- package/dist/api/utilities/media-type.js +53 -0
- package/dist/api/utilities/media-type.js.map +1 -0
- package/dist/api/utilities/pixel-format.d.ts +89 -0
- package/dist/api/utilities/pixel-format.js +97 -0
- package/dist/api/utilities/pixel-format.js.map +1 -0
- package/dist/api/utilities/sample-format.d.ts +129 -0
- package/dist/api/utilities/sample-format.js +141 -0
- package/dist/api/utilities/sample-format.js.map +1 -0
- package/dist/api/utilities/scheduler.d.ts +138 -0
- package/dist/api/utilities/scheduler.js +98 -0
- package/dist/api/utilities/scheduler.js.map +1 -0
- package/dist/api/utilities/streaming.d.ts +186 -0
- package/dist/api/utilities/streaming.js +309 -0
- package/dist/api/utilities/streaming.js.map +1 -0
- package/dist/api/utilities/timestamp.d.ts +193 -0
- package/dist/api/utilities/timestamp.js +206 -0
- package/dist/api/utilities/timestamp.js.map +1 -0
- package/dist/api/utilities/whisper-model.d.ts +310 -0
- package/dist/api/utilities/whisper-model.js +528 -0
- package/dist/api/utilities/whisper-model.js.map +1 -0
- package/dist/api/utils.d.ts +19 -0
- package/dist/api/utils.js +39 -0
- package/dist/api/utils.js.map +1 -0
- package/dist/api/whisper.d.ts +324 -0
- package/dist/api/whisper.js +362 -0
- package/dist/api/whisper.js.map +1 -0
- package/dist/constants/channel-layouts.d.ts +53 -0
- package/dist/constants/channel-layouts.js +57 -0
- package/dist/constants/channel-layouts.js.map +1 -0
- package/dist/constants/constants.d.ts +2325 -0
- package/dist/constants/constants.js +1887 -0
- package/dist/constants/constants.js.map +1 -0
- package/dist/constants/decoders.d.ts +633 -0
- package/dist/constants/decoders.js +641 -0
- package/dist/constants/decoders.js.map +1 -0
- package/dist/constants/encoders.d.ts +295 -0
- package/dist/constants/encoders.js +308 -0
- package/dist/constants/encoders.js.map +1 -0
- package/dist/constants/hardware.d.ts +26 -0
- package/dist/constants/hardware.js +27 -0
- package/dist/constants/hardware.js.map +1 -0
- package/dist/constants/index.d.ts +5 -0
- package/dist/constants/index.js +6 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/ffmpeg/index.d.ts +99 -0
- package/dist/ffmpeg/index.js +115 -0
- package/dist/ffmpeg/index.js.map +1 -0
- package/dist/ffmpeg/utils.d.ts +31 -0
- package/dist/ffmpeg/utils.js +68 -0
- package/dist/ffmpeg/utils.js.map +1 -0
- package/dist/ffmpeg/version.d.ts +6 -0
- package/dist/ffmpeg/version.js +7 -0
- package/dist/ffmpeg/version.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/audio-fifo.d.ts +399 -0
- package/dist/lib/audio-fifo.js +431 -0
- package/dist/lib/audio-fifo.js.map +1 -0
- package/dist/lib/binding.d.ts +228 -0
- package/dist/lib/binding.js +60 -0
- package/dist/lib/binding.js.map +1 -0
- package/dist/lib/bitstream-filter-context.d.ts +379 -0
- package/dist/lib/bitstream-filter-context.js +441 -0
- package/dist/lib/bitstream-filter-context.js.map +1 -0
- package/dist/lib/bitstream-filter.d.ts +140 -0
- package/dist/lib/bitstream-filter.js +154 -0
- package/dist/lib/bitstream-filter.js.map +1 -0
- package/dist/lib/codec-context.d.ts +1071 -0
- package/dist/lib/codec-context.js +1354 -0
- package/dist/lib/codec-context.js.map +1 -0
- package/dist/lib/codec-parameters.d.ts +616 -0
- package/dist/lib/codec-parameters.js +761 -0
- package/dist/lib/codec-parameters.js.map +1 -0
- package/dist/lib/codec-parser.d.ts +201 -0
- package/dist/lib/codec-parser.js +213 -0
- package/dist/lib/codec-parser.js.map +1 -0
- package/dist/lib/codec.d.ts +586 -0
- package/dist/lib/codec.js +713 -0
- package/dist/lib/codec.js.map +1 -0
- package/dist/lib/device.d.ts +291 -0
- package/dist/lib/device.js +324 -0
- package/dist/lib/device.js.map +1 -0
- package/dist/lib/dictionary.d.ts +333 -0
- package/dist/lib/dictionary.js +372 -0
- package/dist/lib/dictionary.js.map +1 -0
- package/dist/lib/error.d.ts +242 -0
- package/dist/lib/error.js +303 -0
- package/dist/lib/error.js.map +1 -0
- package/dist/lib/fifo.d.ts +416 -0
- package/dist/lib/fifo.js +453 -0
- package/dist/lib/fifo.js.map +1 -0
- package/dist/lib/filter-context.d.ts +712 -0
- package/dist/lib/filter-context.js +789 -0
- package/dist/lib/filter-context.js.map +1 -0
- package/dist/lib/filter-graph-segment.d.ts +160 -0
- package/dist/lib/filter-graph-segment.js +171 -0
- package/dist/lib/filter-graph-segment.js.map +1 -0
- package/dist/lib/filter-graph.d.ts +641 -0
- package/dist/lib/filter-graph.js +704 -0
- package/dist/lib/filter-graph.js.map +1 -0
- package/dist/lib/filter-inout.d.ts +198 -0
- package/dist/lib/filter-inout.js +257 -0
- package/dist/lib/filter-inout.js.map +1 -0
- package/dist/lib/filter.d.ts +243 -0
- package/dist/lib/filter.js +272 -0
- package/dist/lib/filter.js.map +1 -0
- package/dist/lib/format-context.d.ts +1254 -0
- package/dist/lib/format-context.js +1379 -0
- package/dist/lib/format-context.js.map +1 -0
- package/dist/lib/frame-utils.d.ts +116 -0
- package/dist/lib/frame-utils.js +98 -0
- package/dist/lib/frame-utils.js.map +1 -0
- package/dist/lib/frame.d.ts +1222 -0
- package/dist/lib/frame.js +1435 -0
- package/dist/lib/frame.js.map +1 -0
- package/dist/lib/hardware-device-context.d.ts +362 -0
- package/dist/lib/hardware-device-context.js +383 -0
- package/dist/lib/hardware-device-context.js.map +1 -0
- package/dist/lib/hardware-frames-context.d.ts +419 -0
- package/dist/lib/hardware-frames-context.js +477 -0
- package/dist/lib/hardware-frames-context.js.map +1 -0
- package/dist/lib/index.d.ts +35 -0
- package/dist/lib/index.js +60 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/input-format.d.ts +249 -0
- package/dist/lib/input-format.js +306 -0
- package/dist/lib/input-format.js.map +1 -0
- package/dist/lib/io-context.d.ts +696 -0
- package/dist/lib/io-context.js +769 -0
- package/dist/lib/io-context.js.map +1 -0
- package/dist/lib/log.d.ts +174 -0
- package/dist/lib/log.js +184 -0
- package/dist/lib/log.js.map +1 -0
- package/dist/lib/native-types.d.ts +946 -0
- package/dist/lib/native-types.js +2 -0
- package/dist/lib/native-types.js.map +1 -0
- package/dist/lib/option.d.ts +927 -0
- package/dist/lib/option.js +1583 -0
- package/dist/lib/option.js.map +1 -0
- package/dist/lib/output-format.d.ts +180 -0
- package/dist/lib/output-format.js +213 -0
- package/dist/lib/output-format.js.map +1 -0
- package/dist/lib/packet.d.ts +501 -0
- package/dist/lib/packet.js +590 -0
- package/dist/lib/packet.js.map +1 -0
- package/dist/lib/rational.d.ts +251 -0
- package/dist/lib/rational.js +278 -0
- package/dist/lib/rational.js.map +1 -0
- package/dist/lib/software-resample-context.d.ts +552 -0
- package/dist/lib/software-resample-context.js +592 -0
- package/dist/lib/software-resample-context.js.map +1 -0
- package/dist/lib/software-scale-context.d.ts +344 -0
- package/dist/lib/software-scale-context.js +366 -0
- package/dist/lib/software-scale-context.js.map +1 -0
- package/dist/lib/stream.d.ts +379 -0
- package/dist/lib/stream.js +526 -0
- package/dist/lib/stream.js.map +1 -0
- package/dist/lib/sync-queue.d.ts +179 -0
- package/dist/lib/sync-queue.js +197 -0
- package/dist/lib/sync-queue.js.map +1 -0
- package/dist/lib/types.d.ts +34 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utilities.d.ts +1127 -0
- package/dist/lib/utilities.js +1225 -0
- package/dist/lib/utilities.js.map +1 -0
- package/dist/utils/electron.d.ts +49 -0
- package/dist/utils/electron.js +63 -0
- package/dist/utils/electron.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/install/check.js +121 -0
- package/install/ffmpeg.js +66 -0
- package/jellyfin-ffmpeg.patch +181 -0
- package/package.json +129 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../src/lib/utilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert an ASAR path to its unpacked equivalent.
|
|
3
|
+
*
|
|
4
|
+
* In Electron applications with ASAR packaging, certain files (native modules,
|
|
5
|
+
* binaries, data files) must be unpacked and are stored in `app.asar.unpacked`
|
|
6
|
+
* instead of inside `app.asar`. This function converts paths accordingly.
|
|
7
|
+
*
|
|
8
|
+
* If the path doesn't contain `app.asar`, it's returned unchanged.
|
|
9
|
+
*
|
|
10
|
+
* @param path - The path to convert
|
|
11
|
+
*
|
|
12
|
+
* @returns The path with `app.asar` replaced by `app.asar.unpacked`
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { getUnpackedPath } from '../utils/electron.js';
|
|
17
|
+
*
|
|
18
|
+
* // In Electron with ASAR:
|
|
19
|
+
* // Input: /path/to/app.asar/node_modules/node-av/binary/ffmpeg
|
|
20
|
+
* // Output: /path/to/app.asar.unpacked/node_modules/node-av/binary/ffmpeg
|
|
21
|
+
*
|
|
22
|
+
* const binaryPath = getUnpackedPath(__dirname);
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare function getUnpackedPath(path: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Get the directory name from an import.meta.url, with Electron ASAR handling.
|
|
28
|
+
*
|
|
29
|
+
* This is a convenience function that combines `fileURLToPath`, `dirname`,
|
|
30
|
+
* and ASAR path conversion. Use this instead of manually creating `__dirname`
|
|
31
|
+
* when the directory contains files that need to be unpacked from ASAR.
|
|
32
|
+
*
|
|
33
|
+
* @param importMetaUrl - The `import.meta.url` from the calling module
|
|
34
|
+
*
|
|
35
|
+
* @returns The directory path, adjusted for Electron ASAR if applicable
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* import { getDirname } from '../utils/electron.js';
|
|
40
|
+
*
|
|
41
|
+
* // Instead of:
|
|
42
|
+
* // const __filename = fileURLToPath(import.meta.url);
|
|
43
|
+
* // const __dirname = dirname(__filename).replace(/app\.asar([/\\])/, 'app.asar.unpacked$1');
|
|
44
|
+
*
|
|
45
|
+
* // Use:
|
|
46
|
+
* const __dirname = getDirname(import.meta.url);
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function getDirname(importMetaUrl: string): string;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { dirname } from 'node:path';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
/**
|
|
4
|
+
* Regular expression to match Electron ASAR paths.
|
|
5
|
+
* Matches `app.asar/` or `app.asar\` (Windows).
|
|
6
|
+
*/
|
|
7
|
+
const ASAR_PATH_REGEX = /app\.asar([/\\])/;
|
|
8
|
+
/**
|
|
9
|
+
* Convert an ASAR path to its unpacked equivalent.
|
|
10
|
+
*
|
|
11
|
+
* In Electron applications with ASAR packaging, certain files (native modules,
|
|
12
|
+
* binaries, data files) must be unpacked and are stored in `app.asar.unpacked`
|
|
13
|
+
* instead of inside `app.asar`. This function converts paths accordingly.
|
|
14
|
+
*
|
|
15
|
+
* If the path doesn't contain `app.asar`, it's returned unchanged.
|
|
16
|
+
*
|
|
17
|
+
* @param path - The path to convert
|
|
18
|
+
*
|
|
19
|
+
* @returns The path with `app.asar` replaced by `app.asar.unpacked`
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { getUnpackedPath } from '../utils/electron.js';
|
|
24
|
+
*
|
|
25
|
+
* // In Electron with ASAR:
|
|
26
|
+
* // Input: /path/to/app.asar/node_modules/node-av/binary/ffmpeg
|
|
27
|
+
* // Output: /path/to/app.asar.unpacked/node_modules/node-av/binary/ffmpeg
|
|
28
|
+
*
|
|
29
|
+
* const binaryPath = getUnpackedPath(__dirname);
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function getUnpackedPath(path) {
|
|
33
|
+
return path.replace(ASAR_PATH_REGEX, 'app.asar.unpacked$1');
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get the directory name from an import.meta.url, with Electron ASAR handling.
|
|
37
|
+
*
|
|
38
|
+
* This is a convenience function that combines `fileURLToPath`, `dirname`,
|
|
39
|
+
* and ASAR path conversion. Use this instead of manually creating `__dirname`
|
|
40
|
+
* when the directory contains files that need to be unpacked from ASAR.
|
|
41
|
+
*
|
|
42
|
+
* @param importMetaUrl - The `import.meta.url` from the calling module
|
|
43
|
+
*
|
|
44
|
+
* @returns The directory path, adjusted for Electron ASAR if applicable
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* import { getDirname } from '../utils/electron.js';
|
|
49
|
+
*
|
|
50
|
+
* // Instead of:
|
|
51
|
+
* // const __filename = fileURLToPath(import.meta.url);
|
|
52
|
+
* // const __dirname = dirname(__filename).replace(/app\.asar([/\\])/, 'app.asar.unpacked$1');
|
|
53
|
+
*
|
|
54
|
+
* // Use:
|
|
55
|
+
* const __dirname = getDirname(import.meta.url);
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export function getDirname(importMetaUrl) {
|
|
59
|
+
const __filename = fileURLToPath(importMetaUrl);
|
|
60
|
+
const __dirname = dirname(__filename);
|
|
61
|
+
return getUnpackedPath(__dirname);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=electron.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"electron.js","sourceRoot":"","sources":["../../src/utils/electron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;GAGG;AACH,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,UAAU,CAAC,aAAqB;IAC9C,MAAM,UAAU,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
package/install/check.js
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { createRequire } from 'node:module';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
|
|
7
|
+
import { log, spawnRebuild, useGlobalFFmpeg } from './ffmpeg.js';
|
|
8
|
+
|
|
9
|
+
const require = createRequire(import.meta.url);
|
|
10
|
+
|
|
11
|
+
const tryLoadPrebuilt = () => {
|
|
12
|
+
const platform = process.platform;
|
|
13
|
+
const arch = process.arch;
|
|
14
|
+
const packageName = `@revizly/node-av-${platform}-${arch}`;
|
|
15
|
+
|
|
16
|
+
try {
|
|
17
|
+
const packageJsonPath = require.resolve(`${packageName}/package.json`);
|
|
18
|
+
if (existsSync(packageJsonPath)) {
|
|
19
|
+
log(`Using prebuilt binary from ${packageName}`);
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
} catch {
|
|
23
|
+
// Package not installed
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Try local binary folder (for development)
|
|
27
|
+
const localBinary = join(process.cwd(), 'binary', 'node-av.node');
|
|
28
|
+
if (existsSync(localBinary)) {
|
|
29
|
+
log('Using local binary from binary/node-av.node');
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return false;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const buildFromSource = () => {
|
|
37
|
+
log('Building from source...');
|
|
38
|
+
|
|
39
|
+
// Check for required build dependencies
|
|
40
|
+
const missingDeps = [];
|
|
41
|
+
|
|
42
|
+
try {
|
|
43
|
+
require('node-addon-api');
|
|
44
|
+
} catch {
|
|
45
|
+
missingDeps.push('node-addon-api');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
try {
|
|
49
|
+
require('node-gyp');
|
|
50
|
+
} catch {
|
|
51
|
+
missingDeps.push('node-gyp');
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (missingDeps.length > 0) {
|
|
55
|
+
log('');
|
|
56
|
+
log(`Missing build dependencies: ${missingDeps.join(', ')}`);
|
|
57
|
+
log('Please install:');
|
|
58
|
+
log(` npm install --save-dev ${missingDeps.join(' ')}`);
|
|
59
|
+
log('');
|
|
60
|
+
log('Then run npm install again.');
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
log('Building native bindings...');
|
|
65
|
+
|
|
66
|
+
const status = spawnRebuild();
|
|
67
|
+
if (status !== 0) {
|
|
68
|
+
log('');
|
|
69
|
+
log('Build failed. Please ensure you have:');
|
|
70
|
+
log(' - FFmpeg 7.1+ libraries and headers installed');
|
|
71
|
+
log(' - Python 3.12+ installed');
|
|
72
|
+
log(' - A C++ compiler with C++17 support');
|
|
73
|
+
log('');
|
|
74
|
+
log('See https://github.com/seydx/node-av for detailed requirements');
|
|
75
|
+
process.exit(status);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
log('Build completed successfully!');
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
(async () => {
|
|
82
|
+
try {
|
|
83
|
+
const shouldBuildFromSource = process.env.npm_config_build_from_source === 'true';
|
|
84
|
+
|
|
85
|
+
// Priority 1: User explicitly wants to build from source
|
|
86
|
+
if (shouldBuildFromSource) {
|
|
87
|
+
if (!useGlobalFFmpeg()) {
|
|
88
|
+
log('--build-from-source specified but no FFmpeg libraries found');
|
|
89
|
+
log('Please install FFmpeg 7.1+ with development headers');
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
// Fall through to build logic below
|
|
93
|
+
} else {
|
|
94
|
+
// Priority 2: Try to use prebuilt binary if not forcing source build
|
|
95
|
+
if (tryLoadPrebuilt()) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Build from source (either requested or as fallback)
|
|
101
|
+
if (useGlobalFFmpeg()) {
|
|
102
|
+
// Determine why we're building
|
|
103
|
+
if (shouldBuildFromSource) {
|
|
104
|
+
log('Building from source as requested');
|
|
105
|
+
} else {
|
|
106
|
+
log('No prebuilt binary available for your platform');
|
|
107
|
+
log('System FFmpeg detected, building from source automatically');
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
buildFromSource();
|
|
111
|
+
} else {
|
|
112
|
+
// No FFmpeg found and no prebuilt available
|
|
113
|
+
log('⚠️ No prebuilt binary and no system FFmpeg found');
|
|
114
|
+
log('See https://github.com/seydx/node-av for installation instructions');
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
} catch (err) {
|
|
118
|
+
console.error(`node-av: Installation error: ${err.message}`);
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
})();
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// Adapted from https://github.com/lovell/sharp/blob/main/lib/libvips.js
|
|
2
|
+
|
|
3
|
+
import { spawnSync } from 'node:child_process';
|
|
4
|
+
|
|
5
|
+
const spawnSyncOptions = {
|
|
6
|
+
encoding: 'utf8',
|
|
7
|
+
shell: true,
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export const log = (item) => {
|
|
11
|
+
if (item instanceof Error) {
|
|
12
|
+
console.error(`node-av: Installation error: ${item.message}`);
|
|
13
|
+
} else {
|
|
14
|
+
console.log(`node-av: ${item}`);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const spawnRebuild = () =>
|
|
19
|
+
spawnSync('node-gyp rebuild', {
|
|
20
|
+
...spawnSyncOptions,
|
|
21
|
+
stdio: 'inherit',
|
|
22
|
+
}).status;
|
|
23
|
+
|
|
24
|
+
export const pkgConfigPath = () => {
|
|
25
|
+
if (process.platform === 'win32') {
|
|
26
|
+
return '';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const paths = [];
|
|
30
|
+
|
|
31
|
+
// Try homebrew path on macOS
|
|
32
|
+
if (process.platform === 'darwin') {
|
|
33
|
+
const brewPath = spawnSync('brew --prefix 2>/dev/null', spawnSyncOptions).stdout;
|
|
34
|
+
if (brewPath) {
|
|
35
|
+
paths.push(`${brewPath.trim()}/lib/pkgconfig`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Add standard paths
|
|
40
|
+
paths.push(process.env.PKG_CONFIG_PATH, '/usr/local/lib/pkgconfig', '/usr/lib/pkgconfig', '/usr/local/libdata/pkgconfig', '/usr/libdata/pkgconfig');
|
|
41
|
+
|
|
42
|
+
return paths.filter(Boolean).join(':');
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export const useGlobalFFmpeg = () => {
|
|
46
|
+
if (process.platform === 'win32') {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
let ffmpegVersion =
|
|
51
|
+
spawnSync('pkg-config --modversion libavcodec', {
|
|
52
|
+
...spawnSyncOptions,
|
|
53
|
+
env: {
|
|
54
|
+
...process.env,
|
|
55
|
+
PKG_CONFIG_PATH: pkgConfigPath(),
|
|
56
|
+
},
|
|
57
|
+
}).stdout || '';
|
|
58
|
+
|
|
59
|
+
ffmpegVersion = ffmpegVersion.trim();
|
|
60
|
+
|
|
61
|
+
if (!ffmpegVersion) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return true;
|
|
66
|
+
};
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
diff --git a/builder/build.sh b/builder/build.sh
|
|
2
|
+
index 28b5081622..855843f8a6 100755
|
|
3
|
+
--- a/builder/build.sh
|
|
4
|
+
+++ b/builder/build.sh
|
|
5
|
+
@@ -24,7 +24,15 @@ done
|
|
6
|
+
|
|
7
|
+
export FFBUILD_PREFIX="$(docker run --rm "$IMAGE" bash -c 'echo $FFBUILD_PREFIX')"
|
|
8
|
+
|
|
9
|
+
-for script in scripts.d/**/*.sh; do
|
|
10
|
+
+ENABLED_SCRIPTS=(
|
|
11
|
+
+ scripts.d/20-zlib.sh
|
|
12
|
+
+ scripts.d/20-libiconv.sh
|
|
13
|
+
+ scripts.d/50-dav1d.sh
|
|
14
|
+
+ scripts.d/50-libwebp.sh
|
|
15
|
+
+ scripts.d/99-rpath.sh
|
|
16
|
+
+)
|
|
17
|
+
+
|
|
18
|
+
+for script in "${ENABLED_SCRIPTS[@]}"; do
|
|
19
|
+
FF_CONFIGURE+=" $(get_output $script configure)"
|
|
20
|
+
FF_CFLAGS+=" $(get_output $script cflags)"
|
|
21
|
+
FF_CXXFLAGS+=" $(get_output $script cxxflags)"
|
|
22
|
+
diff --git a/builder/buildmac.sh b/builder/buildmac.sh
|
|
23
|
+
index ad81a6a2b3..ef15cf27db 100755
|
|
24
|
+
--- a/builder/buildmac.sh
|
|
25
|
+
+++ b/builder/buildmac.sh
|
|
26
|
+
@@ -58,7 +58,14 @@ for addin in ${ADDINS[*]}; do
|
|
27
|
+
source "addins/${addin}.sh"
|
|
28
|
+
done
|
|
29
|
+
|
|
30
|
+
-for script in scripts.d/*.sh; do
|
|
31
|
+
+ENABLED_SCRIPTS=(
|
|
32
|
+
+ scripts.d/20-zlib.sh
|
|
33
|
+
+ scripts.d/20-libiconv.sh
|
|
34
|
+
+ scripts.d/50-dav1d.sh
|
|
35
|
+
+ scripts.d/50-libwebp.sh
|
|
36
|
+
+)
|
|
37
|
+
+
|
|
38
|
+
+for script in "${ENABLED_SCRIPTS[@]}"; do
|
|
39
|
+
FF_CONFIGURE+=" $(get_output $script configure)"
|
|
40
|
+
FF_CFLAGS+=" $(get_output $script cflags)"
|
|
41
|
+
FF_CXXFLAGS+=" $(get_output $script cxxflags)"
|
|
42
|
+
@@ -86,7 +93,7 @@ if [ "$SKIP_BUILD" = false ]; then
|
|
43
|
+
done
|
|
44
|
+
|
|
45
|
+
cd "$BUILDER_ROOT"
|
|
46
|
+
- for lib in scripts.d/*.sh; do
|
|
47
|
+
+ for lib in "${ENABLED_SCRIPTS[@]}"; do
|
|
48
|
+
cd "$BUILDER_ROOT"/build
|
|
49
|
+
source "$BUILDER_ROOT"/"$lib"
|
|
50
|
+
ffbuild_enabled || continue
|
|
51
|
+
diff --git a/builder/variants/defaults-gpl.sh b/builder/variants/defaults-gpl.sh
|
|
52
|
+
index cb5760aa4a..369cd5a531 100755
|
|
53
|
+
--- a/builder/variants/defaults-gpl.sh
|
|
54
|
+
+++ b/builder/variants/defaults-gpl.sh
|
|
55
|
+
@@ -7,9 +7,4 @@ LICENSE_FILE="COPYING.GPLv3"
|
|
56
|
+
|
|
57
|
+
[[ $TARGET == linux* ]] && FF_CONFIGURE+=" --enable-lto=auto" || true
|
|
58
|
+
# [[ $TARGET == win* ]] && FF_CONFIGURE+=" --enable-lto=auto" || true
|
|
59
|
+
-[[ $TARGET == mac* ]] && FF_CONFIGURE+=" --enable-lto=thin" || true
|
|
60
|
+
-
|
|
61
|
+
-# Enable input devices for device capture (webcam, microphone, screen)
|
|
62
|
+
-[[ $TARGET == linux* ]] && FF_CONFIGURE+=" --enable-indev=v4l2" || true
|
|
63
|
+
-[[ $TARGET == win* ]] && FF_CONFIGURE+=" --enable-indev=dshow --enable-indev=gdigrab" || true
|
|
64
|
+
-[[ $TARGET == mac* ]] && FF_CONFIGURE+=" --enable-indev=avfoundation" || true
|
|
65
|
+
|
|
66
|
+
+[[ $TARGET == mac* ]] && FF_CONFIGURE+=" --enable-lto=thin" || true
|
|
67
|
+
|
|
68
|
+
diff --git a/builder/variants/defaults-mac.sh b/builder/variants/defaults-mac.sh
|
|
69
|
+
index 9d73ff32ad..78dfe5689f 100755
|
|
70
|
+
--- a/builder/variants/defaults-mac.sh
|
|
71
|
+
+++ b/builder/variants/defaults-mac.sh
|
|
72
|
+
@@ -4,7 +4,7 @@ MACOS_BUILDER_CPU_ARCH="$(uname -m)"
|
|
73
|
+
|
|
74
|
+
FF_CFLAGS+="-I"$FFBUILD_PREFIX"/include"
|
|
75
|
+
FF_LDFLAGS+="-L"$FFBUILD_PREFIX"/lib"
|
|
76
|
+
-FF_CONFIGURE+=" --disable-libjack --disable-indev=jack --disable-libxcb --disable-xlib --enable-neon --enable-runtime-cpudetect --enable-audiotoolbox --enable-videotoolbox"
|
|
77
|
+
+FF_CONFIGURE+=" --disable-libjack --disable-indev=jack --disable-libxcb --disable-xlib --enable-neon --enable-runtime-cpudetect"
|
|
78
|
+
FFBUILD_TARGET_FLAGS="--disable-shared --enable-static --pkg-config-flags=\"--static\" --enable-pthreads --cc=clang"
|
|
79
|
+
FF_HOST_CFLAGS="-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I"$FFBUILD_PREFIX"/include"
|
|
80
|
+
FF_HOST_LDFLAGS=""
|
|
81
|
+
diff --git a/msys2/build.sh b/msys2/build.sh
|
|
82
|
+
index ad7109d9a2..0eb813b9ab 100755
|
|
83
|
+
--- a/msys2/build.sh
|
|
84
|
+
+++ b/msys2/build.sh
|
|
85
|
+
@@ -45,48 +45,9 @@ PKG_CONFIG_PATH=/clang64/ffbuild/lib/pkgconfig ./configure --cc=clang --cxx=clan
|
|
86
|
+
--enable-lto=thin \
|
|
87
|
+
--enable-gpl \
|
|
88
|
+
--enable-version3 \
|
|
89
|
+
- --enable-schannel \
|
|
90
|
+
- --enable-iconv \
|
|
91
|
+
- --enable-libxml2 \
|
|
92
|
+
--enable-zlib \
|
|
93
|
+
- --enable-lzma \
|
|
94
|
+
- --enable-gmp \
|
|
95
|
+
- --enable-chromaprint \
|
|
96
|
+
- --enable-libfreetype \
|
|
97
|
+
- --enable-libfribidi \
|
|
98
|
+
- --enable-libfontconfig \
|
|
99
|
+
- --enable-libharfbuzz \
|
|
100
|
+
- --enable-libass \
|
|
101
|
+
- --enable-libbluray \
|
|
102
|
+
- --enable-libmp3lame \
|
|
103
|
+
- --enable-libopus \
|
|
104
|
+
- --enable-libtheora \
|
|
105
|
+
- --enable-libvorbis \
|
|
106
|
+
- --enable-libopenmpt \
|
|
107
|
+
- --enable-libjxl \
|
|
108
|
+
--enable-libwebp \
|
|
109
|
+
- --enable-libvpx \
|
|
110
|
+
- --enable-libzimg \
|
|
111
|
+
- --enable-libx264 \
|
|
112
|
+
- --enable-libx265 \
|
|
113
|
+
- --enable-libsvtav1 \
|
|
114
|
+
- --enable-libdav1d \
|
|
115
|
+
- --enable-libfdk-aac \
|
|
116
|
+
- --enable-whisper \
|
|
117
|
+
- --enable-opencl \
|
|
118
|
+
- --enable-vulkan \
|
|
119
|
+
- --enable-libshaderc \
|
|
120
|
+
- --enable-dxva2 \
|
|
121
|
+
- --enable-d3d11va \
|
|
122
|
+
- --enable-d3d12va \
|
|
123
|
+
- --enable-amf \
|
|
124
|
+
- --enable-libvpl \
|
|
125
|
+
- --enable-ffnvcodec \
|
|
126
|
+
- --enable-cuda \
|
|
127
|
+
- --enable-cuda-llvm \
|
|
128
|
+
- --enable-cuvid \
|
|
129
|
+
- --enable-nvdec \
|
|
130
|
+
- --enable-nvenc
|
|
131
|
+
+ --enable-libdav1d
|
|
132
|
+
|
|
133
|
+
make -j$(nproc) V=1
|
|
134
|
+
|
|
135
|
+
diff --git a/msys2/buildarm64.sh b/msys2/buildarm64.sh
|
|
136
|
+
index 30dc09b64f..2bb47c3739 100755
|
|
137
|
+
--- a/msys2/buildarm64.sh
|
|
138
|
+
+++ b/msys2/buildarm64.sh
|
|
139
|
+
@@ -46,41 +46,9 @@ PKG_CONFIG_PATH=/clangarm64/ffbuild/lib/pkgconfig ./configure --cc=clang --cxx=c
|
|
140
|
+
--enable-lto=thin \
|
|
141
|
+
--enable-gpl \
|
|
142
|
+
--enable-version3 \
|
|
143
|
+
- --enable-schannel \
|
|
144
|
+
- --enable-iconv \
|
|
145
|
+
- --enable-libxml2 \
|
|
146
|
+
--enable-zlib \
|
|
147
|
+
- --enable-lzma \
|
|
148
|
+
- --enable-gmp \
|
|
149
|
+
- --enable-chromaprint \
|
|
150
|
+
- --enable-libfreetype \
|
|
151
|
+
- --enable-libfribidi \
|
|
152
|
+
- --enable-libfontconfig \
|
|
153
|
+
- --enable-libharfbuzz \
|
|
154
|
+
- --enable-libass \
|
|
155
|
+
- --enable-libbluray \
|
|
156
|
+
- --enable-libmp3lame \
|
|
157
|
+
- --enable-libopus \
|
|
158
|
+
- --enable-libtheora \
|
|
159
|
+
- --enable-libvorbis \
|
|
160
|
+
- --enable-libopenmpt \
|
|
161
|
+
- --enable-libjxl \
|
|
162
|
+
--enable-libwebp \
|
|
163
|
+
- --enable-libvpx \
|
|
164
|
+
- --enable-libzimg \
|
|
165
|
+
- --enable-libx264 \
|
|
166
|
+
- --enable-libx265 \
|
|
167
|
+
- --enable-libsvtav1 \
|
|
168
|
+
- --enable-libdav1d \
|
|
169
|
+
- --enable-libfdk-aac \
|
|
170
|
+
- --enable-whisper \
|
|
171
|
+
- --enable-opencl \
|
|
172
|
+
- --enable-vulkan \
|
|
173
|
+
- --enable-libshaderc \
|
|
174
|
+
- --enable-dxva2 \
|
|
175
|
+
- --enable-d3d11va \
|
|
176
|
+
- --enable-d3d12va \
|
|
177
|
+
- --enable-mediafoundation
|
|
178
|
+
+ --enable-libdav1d
|
|
179
|
+
|
|
180
|
+
make -j$(nproc) V=1
|
|
181
|
+
|
package/package.json
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@revizly/node-av",
|
|
3
|
+
"version": "5.2.2-beta.1",
|
|
4
|
+
"description": "FFmpeg bindings for Node.js",
|
|
5
|
+
"author": "seydx (https://github.com/seydx/node-av)",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"require": "./dist/index.js",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./api": {
|
|
16
|
+
"types": "./dist/api/index.d.ts",
|
|
17
|
+
"require": "./dist/api/index.js",
|
|
18
|
+
"default": "./dist/api/index.js"
|
|
19
|
+
},
|
|
20
|
+
"./lib": {
|
|
21
|
+
"types": "./dist/lib/index.d.ts",
|
|
22
|
+
"require": "./dist/lib/index.js",
|
|
23
|
+
"default": "./dist/lib/index.js"
|
|
24
|
+
},
|
|
25
|
+
"./constants": {
|
|
26
|
+
"types": "./dist/constants/index.d.ts",
|
|
27
|
+
"require": "./dist/constants/index.js",
|
|
28
|
+
"default": "./dist/constants/index.js"
|
|
29
|
+
},
|
|
30
|
+
"./ffmpeg": {
|
|
31
|
+
"types": "./dist/ffmpeg/index.d.ts",
|
|
32
|
+
"require": "./dist/ffmpeg/index.js",
|
|
33
|
+
"default": "./dist/ffmpeg/index.js"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"scripts": {
|
|
37
|
+
"benchmark": "tsx benchmarks/index.ts",
|
|
38
|
+
"build": "npm run generate && npm run build:tests && npm run build:examples && npm run build:tsc && npm run build:native",
|
|
39
|
+
"build:benchmarks": "tsc -p tsconfig.benchmarks.json",
|
|
40
|
+
"build:examples": "tsc -p tsconfig.examples.json",
|
|
41
|
+
"build:native": "node-gyp rebuild && cpy --flat build/Release/node-av.node binary/ && node scripts/copy-native-to-platform.js",
|
|
42
|
+
"build:tests": "tsc -p tsconfig.tests.json",
|
|
43
|
+
"build:tsc": "rimraf dist && npm run generate:ffmpeg-version && tsc -p tsconfig.build.json && cpy --flat src/api/data/* dist/api/data --parents",
|
|
44
|
+
"clean": "rimraf dist && node-gyp clean && npm run generate && npm run format && npm run lint:fix && npm run build:tests && npm run build:examples && npm run build:tsc",
|
|
45
|
+
"docs:dev": "npm run predocs && vitepress dev docs --port 5173",
|
|
46
|
+
"docs:build": "npm run predocs && rimraf docs/.vitepress/dist && vitepress build docs && cpy --flat docs/logo.png docs/.vitepress/dist",
|
|
47
|
+
"docs:preview": "npm run predocs && vitepress preview docs --port 5174",
|
|
48
|
+
"format": "prettier --write src/ --write test/ --write scripts/ --write examples/ --write benchmarks/ --ignore-unknown --no-error-on-unmatched-pattern",
|
|
49
|
+
"generate": "npm run patch:ffmpeg && npm run generate:ffmpeg-version && npm run generate:constants && npm run generate:encoders && npm run generate:decoders && npm run generate:hardware && npm run generate:layouts",
|
|
50
|
+
"generate:ffmpeg-version": "node scripts/generate-ffmpeg-version.js",
|
|
51
|
+
"generate:constants": "cross-env FFMPEG_DEV_PATH=externals/jellyfin-ffmpeg node scripts/generate-constants.js && prettier --write src/constants/constants.ts",
|
|
52
|
+
"generate:encoders": "cross-env FFMPEG_DEV_PATH=externals/jellyfin-ffmpeg node scripts/generate-encoders.js --with-patches && prettier --write src/constants/encoders.ts",
|
|
53
|
+
"generate:decoders": "cross-env FFMPEG_DEV_PATH=externals/jellyfin-ffmpeg node scripts/generate-decoders.js --with-patches && prettier --write src/constants/decoders.ts",
|
|
54
|
+
"generate:hardware": "cross-env FFMPEG_DEV_PATH=externals/jellyfin-ffmpeg node scripts/generate-hardware.js --with-patches && prettier --write src/constants/hardware.ts",
|
|
55
|
+
"generate:layouts": "cross-env FFMPEG_DEV_PATH=externals/jellyfin-ffmpeg node scripts/generate-channel-layouts.js && prettier --write src/constants/channel-layouts.ts",
|
|
56
|
+
"install": "node install/check.js",
|
|
57
|
+
"install-updates": "npm i --save",
|
|
58
|
+
"lint": "eslint .",
|
|
59
|
+
"lint:fix": "eslint --fix .",
|
|
60
|
+
"patch:ffmpeg": "node scripts/patch-ffmpeg.js",
|
|
61
|
+
"predocs": "typedoc && cpy README.md docs/ --rename=index.md",
|
|
62
|
+
"release:patch": "npm run build:tsc && node scripts/prepare-release.js patch",
|
|
63
|
+
"release:minor": "npm run build:tsc && node scripts/prepare-release.js minor",
|
|
64
|
+
"release:major": "npm run build:tsc && node scripts/prepare-release.js major",
|
|
65
|
+
"release:beta:patch": "npm run build:tsc && node scripts/prepare-release.js beta-patch",
|
|
66
|
+
"release:beta:minor": "npm run build:tsc && node scripts/prepare-release.js beta-minor",
|
|
67
|
+
"release:beta:major": "npm run build:tsc && node scripts/prepare-release.js beta-major",
|
|
68
|
+
"test": "tsx --test test/*.test.ts",
|
|
69
|
+
"test:all": "npm run build:tests && npm run build:tsc && tsx --test test/*.test.ts",
|
|
70
|
+
"update": "updates --update ./"
|
|
71
|
+
},
|
|
72
|
+
"dependencies": {},
|
|
73
|
+
"optionalDependencies": {
|
|
74
|
+
"@revizly/node-av-linux-arm64": "^5.2.2-beta.1",
|
|
75
|
+
"@revizly/node-av-linux-x64": "^5.2.2-beta.1"
|
|
76
|
+
},
|
|
77
|
+
"devDependencies": {
|
|
78
|
+
"@stylistic/eslint-plugin": "^5.7.1",
|
|
79
|
+
"@types/node": "^25.2.1",
|
|
80
|
+
"@types/node-abi": "^3.0.3",
|
|
81
|
+
"@types/semver": "^7.7.1",
|
|
82
|
+
"@types/ws": "^8.18.1",
|
|
83
|
+
"@typescript-eslint/parser": "^8.54.0",
|
|
84
|
+
"concurrently": "^9.2.1",
|
|
85
|
+
"cpy-cli": "^7.0.0",
|
|
86
|
+
"cross-env": "^10.1.0",
|
|
87
|
+
"eslint": "^9.39.2",
|
|
88
|
+
"eslint-plugin-jsdoc": "^62.5.4",
|
|
89
|
+
"globals": "^17.3.0",
|
|
90
|
+
"node-addon-api": "^8.5.0",
|
|
91
|
+
"node-gyp": "^12.2.0",
|
|
92
|
+
"prettier": "^3.8.1",
|
|
93
|
+
"rimraf": "^6.1.2",
|
|
94
|
+
"sharp": "^0.34.5",
|
|
95
|
+
"tsx": "^4.21.0",
|
|
96
|
+
"typedoc": "^0.28.16",
|
|
97
|
+
"typedoc-plugin-markdown": "^4.10.0",
|
|
98
|
+
"typedoc-vitepress-theme": "^1.1.2",
|
|
99
|
+
"typescript": "^5.9.3",
|
|
100
|
+
"typescript-eslint": "^8.54.0",
|
|
101
|
+
"updates": "^17.3.1",
|
|
102
|
+
"vitepress": "^2.0.0-alpha.16",
|
|
103
|
+
"ws": "^8.19.0"
|
|
104
|
+
},
|
|
105
|
+
"bugs": {
|
|
106
|
+
"url": "https://github.com/seydx/node-av/issues"
|
|
107
|
+
},
|
|
108
|
+
"homepage": "https://github.com/seydx/node-av#readme",
|
|
109
|
+
"keywords": [
|
|
110
|
+
"node",
|
|
111
|
+
"ffmpeg",
|
|
112
|
+
"av",
|
|
113
|
+
"libav",
|
|
114
|
+
"bindings",
|
|
115
|
+
"whisper",
|
|
116
|
+
"binary",
|
|
117
|
+
"windows",
|
|
118
|
+
"linux",
|
|
119
|
+
"darwin",
|
|
120
|
+
"x64",
|
|
121
|
+
"arm64",
|
|
122
|
+
"static"
|
|
123
|
+
],
|
|
124
|
+
"license": "MIT",
|
|
125
|
+
"repository": {
|
|
126
|
+
"type": "git",
|
|
127
|
+
"url": "git+https://github.com/seydx/node-av.git"
|
|
128
|
+
}
|
|
129
|
+
}
|