@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.
Files changed (254) hide show
  1. package/BUILD_LINUX.md +61 -0
  2. package/LICENSE.md +22 -0
  3. package/README.md +662 -0
  4. package/build_mac_local.sh +69 -0
  5. package/dist/api/audio-frame-buffer.d.ts +205 -0
  6. package/dist/api/audio-frame-buffer.js +287 -0
  7. package/dist/api/audio-frame-buffer.js.map +1 -0
  8. package/dist/api/bitstream-filter.d.ts +820 -0
  9. package/dist/api/bitstream-filter.js +1242 -0
  10. package/dist/api/bitstream-filter.js.map +1 -0
  11. package/dist/api/constants.d.ts +44 -0
  12. package/dist/api/constants.js +45 -0
  13. package/dist/api/constants.js.map +1 -0
  14. package/dist/api/data/test_av1.ivf +0 -0
  15. package/dist/api/data/test_h264.h264 +0 -0
  16. package/dist/api/data/test_hevc.h265 +0 -0
  17. package/dist/api/data/test_mjpeg.mjpeg +0 -0
  18. package/dist/api/data/test_vp8.ivf +0 -0
  19. package/dist/api/data/test_vp9.ivf +0 -0
  20. package/dist/api/decoder.d.ts +1088 -0
  21. package/dist/api/decoder.js +1775 -0
  22. package/dist/api/decoder.js.map +1 -0
  23. package/dist/api/demuxer.d.ts +1219 -0
  24. package/dist/api/demuxer.js +2081 -0
  25. package/dist/api/demuxer.js.map +1 -0
  26. package/dist/api/device.d.ts +586 -0
  27. package/dist/api/device.js +961 -0
  28. package/dist/api/device.js.map +1 -0
  29. package/dist/api/encoder.d.ts +1132 -0
  30. package/dist/api/encoder.js +1988 -0
  31. package/dist/api/encoder.js.map +1 -0
  32. package/dist/api/filter-complex.d.ts +821 -0
  33. package/dist/api/filter-complex.js +1604 -0
  34. package/dist/api/filter-complex.js.map +1 -0
  35. package/dist/api/filter-presets.d.ts +1286 -0
  36. package/dist/api/filter-presets.js +2152 -0
  37. package/dist/api/filter-presets.js.map +1 -0
  38. package/dist/api/filter.d.ts +1234 -0
  39. package/dist/api/filter.js +1976 -0
  40. package/dist/api/filter.js.map +1 -0
  41. package/dist/api/fmp4-stream.d.ts +426 -0
  42. package/dist/api/fmp4-stream.js +739 -0
  43. package/dist/api/fmp4-stream.js.map +1 -0
  44. package/dist/api/hardware.d.ts +651 -0
  45. package/dist/api/hardware.js +1260 -0
  46. package/dist/api/hardware.js.map +1 -0
  47. package/dist/api/index.d.ts +17 -0
  48. package/dist/api/index.js +32 -0
  49. package/dist/api/index.js.map +1 -0
  50. package/dist/api/io-stream.d.ts +307 -0
  51. package/dist/api/io-stream.js +282 -0
  52. package/dist/api/io-stream.js.map +1 -0
  53. package/dist/api/muxer.d.ts +957 -0
  54. package/dist/api/muxer.js +2002 -0
  55. package/dist/api/muxer.js.map +1 -0
  56. package/dist/api/pipeline.d.ts +607 -0
  57. package/dist/api/pipeline.js +1145 -0
  58. package/dist/api/pipeline.js.map +1 -0
  59. package/dist/api/utilities/async-queue.d.ts +120 -0
  60. package/dist/api/utilities/async-queue.js +211 -0
  61. package/dist/api/utilities/async-queue.js.map +1 -0
  62. package/dist/api/utilities/audio-sample.d.ts +117 -0
  63. package/dist/api/utilities/audio-sample.js +112 -0
  64. package/dist/api/utilities/audio-sample.js.map +1 -0
  65. package/dist/api/utilities/channel-layout.d.ts +76 -0
  66. package/dist/api/utilities/channel-layout.js +80 -0
  67. package/dist/api/utilities/channel-layout.js.map +1 -0
  68. package/dist/api/utilities/electron-shared-texture.d.ts +328 -0
  69. package/dist/api/utilities/electron-shared-texture.js +503 -0
  70. package/dist/api/utilities/electron-shared-texture.js.map +1 -0
  71. package/dist/api/utilities/image.d.ts +207 -0
  72. package/dist/api/utilities/image.js +213 -0
  73. package/dist/api/utilities/image.js.map +1 -0
  74. package/dist/api/utilities/index.d.ts +12 -0
  75. package/dist/api/utilities/index.js +25 -0
  76. package/dist/api/utilities/index.js.map +1 -0
  77. package/dist/api/utilities/media-type.d.ts +49 -0
  78. package/dist/api/utilities/media-type.js +53 -0
  79. package/dist/api/utilities/media-type.js.map +1 -0
  80. package/dist/api/utilities/pixel-format.d.ts +89 -0
  81. package/dist/api/utilities/pixel-format.js +97 -0
  82. package/dist/api/utilities/pixel-format.js.map +1 -0
  83. package/dist/api/utilities/sample-format.d.ts +129 -0
  84. package/dist/api/utilities/sample-format.js +141 -0
  85. package/dist/api/utilities/sample-format.js.map +1 -0
  86. package/dist/api/utilities/scheduler.d.ts +138 -0
  87. package/dist/api/utilities/scheduler.js +98 -0
  88. package/dist/api/utilities/scheduler.js.map +1 -0
  89. package/dist/api/utilities/streaming.d.ts +186 -0
  90. package/dist/api/utilities/streaming.js +309 -0
  91. package/dist/api/utilities/streaming.js.map +1 -0
  92. package/dist/api/utilities/timestamp.d.ts +193 -0
  93. package/dist/api/utilities/timestamp.js +206 -0
  94. package/dist/api/utilities/timestamp.js.map +1 -0
  95. package/dist/api/utilities/whisper-model.d.ts +310 -0
  96. package/dist/api/utilities/whisper-model.js +528 -0
  97. package/dist/api/utilities/whisper-model.js.map +1 -0
  98. package/dist/api/utils.d.ts +19 -0
  99. package/dist/api/utils.js +39 -0
  100. package/dist/api/utils.js.map +1 -0
  101. package/dist/api/whisper.d.ts +324 -0
  102. package/dist/api/whisper.js +362 -0
  103. package/dist/api/whisper.js.map +1 -0
  104. package/dist/constants/channel-layouts.d.ts +53 -0
  105. package/dist/constants/channel-layouts.js +57 -0
  106. package/dist/constants/channel-layouts.js.map +1 -0
  107. package/dist/constants/constants.d.ts +2325 -0
  108. package/dist/constants/constants.js +1887 -0
  109. package/dist/constants/constants.js.map +1 -0
  110. package/dist/constants/decoders.d.ts +633 -0
  111. package/dist/constants/decoders.js +641 -0
  112. package/dist/constants/decoders.js.map +1 -0
  113. package/dist/constants/encoders.d.ts +295 -0
  114. package/dist/constants/encoders.js +308 -0
  115. package/dist/constants/encoders.js.map +1 -0
  116. package/dist/constants/hardware.d.ts +26 -0
  117. package/dist/constants/hardware.js +27 -0
  118. package/dist/constants/hardware.js.map +1 -0
  119. package/dist/constants/index.d.ts +5 -0
  120. package/dist/constants/index.js +6 -0
  121. package/dist/constants/index.js.map +1 -0
  122. package/dist/ffmpeg/index.d.ts +99 -0
  123. package/dist/ffmpeg/index.js +115 -0
  124. package/dist/ffmpeg/index.js.map +1 -0
  125. package/dist/ffmpeg/utils.d.ts +31 -0
  126. package/dist/ffmpeg/utils.js +68 -0
  127. package/dist/ffmpeg/utils.js.map +1 -0
  128. package/dist/ffmpeg/version.d.ts +6 -0
  129. package/dist/ffmpeg/version.js +7 -0
  130. package/dist/ffmpeg/version.js.map +1 -0
  131. package/dist/index.d.ts +4 -0
  132. package/dist/index.js +9 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/lib/audio-fifo.d.ts +399 -0
  135. package/dist/lib/audio-fifo.js +431 -0
  136. package/dist/lib/audio-fifo.js.map +1 -0
  137. package/dist/lib/binding.d.ts +228 -0
  138. package/dist/lib/binding.js +60 -0
  139. package/dist/lib/binding.js.map +1 -0
  140. package/dist/lib/bitstream-filter-context.d.ts +379 -0
  141. package/dist/lib/bitstream-filter-context.js +441 -0
  142. package/dist/lib/bitstream-filter-context.js.map +1 -0
  143. package/dist/lib/bitstream-filter.d.ts +140 -0
  144. package/dist/lib/bitstream-filter.js +154 -0
  145. package/dist/lib/bitstream-filter.js.map +1 -0
  146. package/dist/lib/codec-context.d.ts +1071 -0
  147. package/dist/lib/codec-context.js +1354 -0
  148. package/dist/lib/codec-context.js.map +1 -0
  149. package/dist/lib/codec-parameters.d.ts +616 -0
  150. package/dist/lib/codec-parameters.js +761 -0
  151. package/dist/lib/codec-parameters.js.map +1 -0
  152. package/dist/lib/codec-parser.d.ts +201 -0
  153. package/dist/lib/codec-parser.js +213 -0
  154. package/dist/lib/codec-parser.js.map +1 -0
  155. package/dist/lib/codec.d.ts +586 -0
  156. package/dist/lib/codec.js +713 -0
  157. package/dist/lib/codec.js.map +1 -0
  158. package/dist/lib/device.d.ts +291 -0
  159. package/dist/lib/device.js +324 -0
  160. package/dist/lib/device.js.map +1 -0
  161. package/dist/lib/dictionary.d.ts +333 -0
  162. package/dist/lib/dictionary.js +372 -0
  163. package/dist/lib/dictionary.js.map +1 -0
  164. package/dist/lib/error.d.ts +242 -0
  165. package/dist/lib/error.js +303 -0
  166. package/dist/lib/error.js.map +1 -0
  167. package/dist/lib/fifo.d.ts +416 -0
  168. package/dist/lib/fifo.js +453 -0
  169. package/dist/lib/fifo.js.map +1 -0
  170. package/dist/lib/filter-context.d.ts +712 -0
  171. package/dist/lib/filter-context.js +789 -0
  172. package/dist/lib/filter-context.js.map +1 -0
  173. package/dist/lib/filter-graph-segment.d.ts +160 -0
  174. package/dist/lib/filter-graph-segment.js +171 -0
  175. package/dist/lib/filter-graph-segment.js.map +1 -0
  176. package/dist/lib/filter-graph.d.ts +641 -0
  177. package/dist/lib/filter-graph.js +704 -0
  178. package/dist/lib/filter-graph.js.map +1 -0
  179. package/dist/lib/filter-inout.d.ts +198 -0
  180. package/dist/lib/filter-inout.js +257 -0
  181. package/dist/lib/filter-inout.js.map +1 -0
  182. package/dist/lib/filter.d.ts +243 -0
  183. package/dist/lib/filter.js +272 -0
  184. package/dist/lib/filter.js.map +1 -0
  185. package/dist/lib/format-context.d.ts +1254 -0
  186. package/dist/lib/format-context.js +1379 -0
  187. package/dist/lib/format-context.js.map +1 -0
  188. package/dist/lib/frame-utils.d.ts +116 -0
  189. package/dist/lib/frame-utils.js +98 -0
  190. package/dist/lib/frame-utils.js.map +1 -0
  191. package/dist/lib/frame.d.ts +1222 -0
  192. package/dist/lib/frame.js +1435 -0
  193. package/dist/lib/frame.js.map +1 -0
  194. package/dist/lib/hardware-device-context.d.ts +362 -0
  195. package/dist/lib/hardware-device-context.js +383 -0
  196. package/dist/lib/hardware-device-context.js.map +1 -0
  197. package/dist/lib/hardware-frames-context.d.ts +419 -0
  198. package/dist/lib/hardware-frames-context.js +477 -0
  199. package/dist/lib/hardware-frames-context.js.map +1 -0
  200. package/dist/lib/index.d.ts +35 -0
  201. package/dist/lib/index.js +60 -0
  202. package/dist/lib/index.js.map +1 -0
  203. package/dist/lib/input-format.d.ts +249 -0
  204. package/dist/lib/input-format.js +306 -0
  205. package/dist/lib/input-format.js.map +1 -0
  206. package/dist/lib/io-context.d.ts +696 -0
  207. package/dist/lib/io-context.js +769 -0
  208. package/dist/lib/io-context.js.map +1 -0
  209. package/dist/lib/log.d.ts +174 -0
  210. package/dist/lib/log.js +184 -0
  211. package/dist/lib/log.js.map +1 -0
  212. package/dist/lib/native-types.d.ts +946 -0
  213. package/dist/lib/native-types.js +2 -0
  214. package/dist/lib/native-types.js.map +1 -0
  215. package/dist/lib/option.d.ts +927 -0
  216. package/dist/lib/option.js +1583 -0
  217. package/dist/lib/option.js.map +1 -0
  218. package/dist/lib/output-format.d.ts +180 -0
  219. package/dist/lib/output-format.js +213 -0
  220. package/dist/lib/output-format.js.map +1 -0
  221. package/dist/lib/packet.d.ts +501 -0
  222. package/dist/lib/packet.js +590 -0
  223. package/dist/lib/packet.js.map +1 -0
  224. package/dist/lib/rational.d.ts +251 -0
  225. package/dist/lib/rational.js +278 -0
  226. package/dist/lib/rational.js.map +1 -0
  227. package/dist/lib/software-resample-context.d.ts +552 -0
  228. package/dist/lib/software-resample-context.js +592 -0
  229. package/dist/lib/software-resample-context.js.map +1 -0
  230. package/dist/lib/software-scale-context.d.ts +344 -0
  231. package/dist/lib/software-scale-context.js +366 -0
  232. package/dist/lib/software-scale-context.js.map +1 -0
  233. package/dist/lib/stream.d.ts +379 -0
  234. package/dist/lib/stream.js +526 -0
  235. package/dist/lib/stream.js.map +1 -0
  236. package/dist/lib/sync-queue.d.ts +179 -0
  237. package/dist/lib/sync-queue.js +197 -0
  238. package/dist/lib/sync-queue.js.map +1 -0
  239. package/dist/lib/types.d.ts +34 -0
  240. package/dist/lib/types.js +2 -0
  241. package/dist/lib/types.js.map +1 -0
  242. package/dist/lib/utilities.d.ts +1127 -0
  243. package/dist/lib/utilities.js +1225 -0
  244. package/dist/lib/utilities.js.map +1 -0
  245. package/dist/utils/electron.d.ts +49 -0
  246. package/dist/utils/electron.js +63 -0
  247. package/dist/utils/electron.js.map +1 -0
  248. package/dist/utils/index.d.ts +4 -0
  249. package/dist/utils/index.js +5 -0
  250. package/dist/utils/index.js.map +1 -0
  251. package/install/check.js +121 -0
  252. package/install/ffmpeg.js +66 -0
  253. package/jellyfin-ffmpeg.patch +181 -0
  254. 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,4 @@
1
+ /**
2
+ * Internal utilities
3
+ */
4
+ export { getDirname, getUnpackedPath } from './electron.js';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Internal utilities
3
+ */
4
+ export { getDirname, getUnpackedPath } from './electron.js';
5
+ //# sourceMappingURL=index.js.map
@@ -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"}
@@ -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
+ }