node-av 1.0.0 → 1.0.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.
@@ -183,10 +183,7 @@ export class Encoder {
183
183
  const videoInfo = input;
184
184
  codecContext.width = videoInfo.width;
185
185
  codecContext.height = videoInfo.height;
186
- // Only set pixelFormat if provided (might be omitted for hardware encoders)
187
- if (videoInfo.pixelFormat !== undefined) {
188
- codecContext.pixelFormat = videoInfo.pixelFormat;
189
- }
186
+ codecContext.pixelFormat = videoInfo.pixelFormat;
190
187
  // Set pkt_timebase and timeBase to input timebase
191
188
  codecContext.pktTimebase = new Rational(videoInfo.timeBase.num, videoInfo.timeBase.den);
192
189
  codecContext.timeBase = new Rational(videoInfo.timeBase.num, videoInfo.timeBase.den);
@@ -262,12 +259,10 @@ export class Encoder {
262
259
  }
263
260
  // Apply hardware acceleration if provided and encoder supports it
264
261
  if (options.hardware && isHardwareEncoder) {
265
- // For hardware encoders, always set the hardware pixel format
266
- // (overrides what was copied from stream parameters)
267
- codecContext.pixelFormat = options.hardware.getHardwarePixelFormat();
268
262
  // Check if frames context already available (shared from decoder)
269
263
  if (options.hardware.framesContext) {
270
264
  codecContext.hwFramesCtx = options.hardware.framesContext;
265
+ codecContext.pixelFormat = options.hardware.getHardwarePixelFormat();
271
266
  }
272
267
  // Else: Will set hwFramesCtx later in encode() when first frame arrives
273
268
  // DO NOT create frames context here - wait for first frame!
@@ -333,6 +328,9 @@ export class Encoder {
333
328
  this.hardware.ensureFramesContext(frame.width, frame.height);
334
329
  this.codecContext.hwFramesCtx = this.hardware.framesContext ?? null;
335
330
  }
331
+ if (this.codecContext.hwFramesCtx) {
332
+ this.codecContext.pixelFormat = this.hardware.getHardwarePixelFormat();
333
+ }
336
334
  }
337
335
  // Software encoder completely ignores hardware context
338
336
  // NO MANUAL RESCALING! FFmpeg's avcodec_send_frame() does this internally
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../src/api/encoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../src/api/encoder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,uCAAuC,EACvC,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,EACL,YAAY,EACZ,WAAW,EACX,MAAM,EACN,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,MAAM,OAAO,OAAO;IACV,YAAY,CAAe;IAC3B,MAAM,CAAS;IACf,SAAS,CAAS;IAClB,MAAM,GAAG,IAAI,CAAC;IACd,gBAAgB,GAAoB,EAAE,CAAC;IACvC,eAAe,CAAiB;IAChC,QAAQ,CAA0B,CAAC,kDAAkD;IACrF,iBAAiB,GAAG,KAAK,CAAC,CAAC,sCAAsC;IAEzE;;;;;;;;OAQG;IACH,YAAoB,YAA0B,EAAE,SAAiB,EAAE,QAAiC;QAClG,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,KAA0B,EAAE,UAA0B,EAAE;QAC7F,MAAM,eAAe,GAAG,SAAS,CAAC;QAElC,uBAAuB;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,WAAW,eAAe,YAAY,CAAC,CAAC;QAC1D,CAAC;QAED,yBAAyB;QACzB,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACxC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAElC,uCAAuC;QACvC,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;YAC5B,qDAAqD;YACrD,6FAA6F;YAE7F,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACtC,kDAAkD;gBAClD,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC1C,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC5C,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAuB,CAAC;gBAElE,yBAAyB;gBACzB,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAC1C,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAEvC,6BAA6B;gBAC7B,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;oBACnF,YAAY,CAAC,SAAS,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACxF,CAAC;qBAAM,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;oBACpF,YAAY,CAAC,SAAS,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACpF,CAAC;gBAED,sCAAsC;gBACtC,IAAI,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,iBAAiB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;oBAC/D,YAAY,CAAC,iBAAiB,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBAC1G,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBAC7C,kDAAkD;gBAClD,YAAY,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACpD,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAwB,CAAC;gBAEpE,iCAAiC;gBACjC,oFAAoF;gBACpF,iFAAiF;gBACjF,YAAY,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAE1D,yBAAyB;gBACzB,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAC1C,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,WAAW,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,mCAAmC;YACnC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBAChE,MAAM,SAAS,GAAG,KAAK,CAAC;gBACxB,YAAY,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;gBACrC,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;gBACvC,YAAY,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;gBAEjD,kDAAkD;gBAClD,YAAY,CAAC,WAAW,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACxF,YAAY,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAErF,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;oBACxB,YAAY,CAAC,SAAS,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC1F,CAAC;gBACD,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC;oBAChC,YAAY,CAAC,iBAAiB,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBAClH,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACvE,MAAM,SAAS,GAAG,KAAK,CAAC;gBACxB,YAAY,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;gBAC/C,YAAY,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;gBACnD,YAAY,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;gBACrD,+CAA+C;gBAC/C,YAAY,CAAC,WAAW,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACxF,YAAY,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAErF,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;oBACxB,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;gBAC/C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC;YAChI,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACzC,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACrC,YAAY,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAC/C,CAAC;QAED,uBAAuB;QACvB,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9G,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC;QACjC,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;QAC7C,CAAC;QAED,uDAAuD;QACvD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,YAAY,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnF,CAAC;QAED,6CAA6C;QAC7C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3D,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,uDAAuD;QACvD,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAE9B,0CAA0C;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,GAAI,CAAC,EAAE,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM;gBAAE,MAAM;YAEnB,iDAAiD;YACjD,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,uCAAuC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrE,gBAAgB,GAAG,IAAI,CAAC;gBAExB,iEAAiE;gBACjE,IAAI,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;oBAC1E,iBAAiB,GAAG,IAAI,CAAC;oBACzB,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,yDAAyD;QACzD,IAAI,gBAAgB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,qBAAqB,eAAe,iCAAiC,GAAG,yCAAyC,CAAC,CAAC;QACrI,CAAC;QAED,kEAAkE;QAClE,IAAI,OAAO,CAAC,QAAQ,IAAI,iBAAiB,EAAE,CAAC;YAC1C,kEAAkE;YAClE,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;gBACnC,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAC1D,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;YACvE,CAAC;YACD,wEAAwE;YACxE,4DAA4D;QAC9D,CAAC;QACD,2DAA2D;QAE3D,aAAa;QACb,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,YAAY,CAAC,WAAW,EAAE,CAAC;YAC3B,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,YAAY,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACvG,OAAO,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAE9C,gEAAgE;QAChE,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAAC;YAC9C,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,MAAM,CAAC,KAAmB;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,2DAA2D;QAC3D,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YAC9E,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;gBAChC,yCAAyC;gBACzC,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC9D,CAAC;iBAAM,IAAI,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACxC,iDAAiD;gBACjD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC7D,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,IAAI,CAAC;YACtE,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;gBAClC,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;YACzE,CAAC;QACH,CAAC;QACD,uDAAuD;QAEvD,0EAA0E;QAC1E,gEAAgE;QAEhE,wBAAwB;QACxB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;YAC3C,8CAA8C;YAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC1C,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAE1B,kCAAkC;YAClC,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;gBAC/B,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,KAAK,CAAC,CAAC,OAAO,CAAC,MAA4B;QACzC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,iBAAiB;QACjB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,MAAM,CAAC;gBACf,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,sCAAsC;gBACtC,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,IAAI,MAAM,CAAC;QACX,OAAO,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;YAC9C,MAAM,MAAM,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,0BAA0B;QAC1B,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAExC,iBAAiB;QACjB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,CAAC,YAAY;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,MAAM,CAAC;QACX,OAAO,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;YAC9C,MAAM,MAAM,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAEhC,4DAA4D;QAC5D,6EAA6E;QAC7E,qEAAqE;QAErE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;;;;;;;OAUG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,uBAAuB;QACrB,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;IACtC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,wBAAwB;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,aAAa;QACzB,6BAA6B;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAEpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE/D,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;YACd,sCAAsC;YACtC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;aAAM,IAAI,GAAG,KAAK,cAAc,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACzD,kCAAkC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,QAAQ;YACR,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC;QACd,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;CACF"}
@@ -14,55 +14,31 @@ function loadBinding() {
14
14
  const platform = process.platform;
15
15
  const arch = process.arch;
16
16
  const platformArch = `${platform}-${arch}`;
17
- // Try 1: Platform-specific package (optionalDependencies)
17
+ // Local build directory (--build-from-source)
18
18
  try {
19
- const packageName = `@seydx/node-av-${platformArch}`;
20
- return require(`${packageName}/node-av.node`);
21
- }
22
- catch (err) {
23
- errors.push(new Error(`Platform package not found: ${err}`));
24
- }
25
- // Try 2: Local build directory (development)
26
- try {
27
- const localPath = join(process.cwd(), 'build', 'Release', 'node-av.node');
28
- if (existsSync(localPath)) {
29
- return require(localPath);
30
- }
31
- }
32
- catch (err) {
33
- errors.push(new Error(`Local build not found: ${err}`));
34
- }
35
- // Try 3: Binary directory (postinstall)
36
- try {
37
- const binaryPath = join(process.cwd(), 'binary', 'node-av.node');
38
- if (existsSync(binaryPath)) {
39
- return require(binaryPath);
19
+ const localPath = [join(process.cwd(), 'build', 'Release', 'node-av.node'), join(process.cwd(), 'binary', 'node-av.node'), join(process.cwd(), 'node-av.node')];
20
+ for (const path of localPath) {
21
+ if (existsSync(path)) {
22
+ return require(path);
23
+ }
40
24
  }
41
25
  }
42
26
  catch (err) {
43
- errors.push(new Error(`Binary directory not found: ${err}`));
27
+ errors.push(new Error(`Local build not found or loading failed: ${err}`));
44
28
  }
45
- // Try 4: node-gyp-build style paths
29
+ // Platform-specific package (optionalDependencies)
46
30
  try {
47
- const gypBuildPath = join(process.cwd(), 'build', 'node-av.node');
48
- if (existsSync(gypBuildPath)) {
49
- return require(gypBuildPath);
50
- }
31
+ const packageName = `@seydx/node-av-${platformArch}`;
32
+ return require(`${packageName}/node-av.node`);
51
33
  }
52
34
  catch (err) {
53
- errors.push(new Error(`node-gyp build not found: ${err}`));
35
+ errors.push(new Error(`Platform package not found or loading failed: ${err}`));
54
36
  }
55
37
  // All attempts failed
56
38
  const errorMessages = errors.map((e) => e.message).join('\n ');
57
39
  // prettier-ignore
58
40
  throw new Error(`Could not load the node-av native binding for ${platformArch}.\n` +
59
- `Attempted locations:\n ${errorMessages}\n\n` +
60
- 'Possible solutions:\n' +
61
- "1. Run 'npm install' to download the prebuilt binary\n" +
62
- "2. Run 'npm install --build-from-source' to compile from source\n" +
63
- '3. Ensure you have the required dependencies for your platform\n' +
64
- '\n' +
65
- 'See https://github.com/seydx/av for more information.');
41
+ `Attempted locations:\n ${errorMessages}\n\n`);
66
42
  }
67
43
  // Load the native binding with fallback logic
68
44
  const bindings = loadBinding();
@@ -1 +1 @@
1
- {"version":3,"file":"binding.js","sourceRoot":"","sources":["../../src/lib/binding.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AA+Q5B,SAAS,WAAW;IAClB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,kBAAkB;IAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,YAAY,GAAG,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;IAE3C,0DAA0D;IAC1D,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,kBAAkB,YAAY,EAAE,CAAC;QACrD,OAAO,OAAO,CAAC,GAAG,WAAW,eAAe,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,6CAA6C;IAC7C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAC1E,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,wCAAwC;IACxC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACjE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,oCAAoC;IACpC,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QAClE,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,sBAAsB;IACtB,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChE,kBAAkB;IAClB,MAAM,IAAI,KAAK,CACb,iDAAiD,YAAY,KAAK;QAClE,2BAA2B,aAAa,MAAM;QAC9C,uBAAuB;QACvB,wDAAwD;QACxD,mEAAmE;QACnE,kEAAkE;QAClE,IAAI;QACJ,uDAAuD,CACxD,CAAC;AACJ,CAAC;AAED,8CAA8C;AAC9C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"binding.js","sourceRoot":"","sources":["../../src/lib/binding.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AA+Q5B,SAAS,WAAW;IAClB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,kBAAkB;IAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,YAAY,GAAG,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;IAE3C,8CAA8C;IAC9C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;QAChK,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,4CAA4C,GAAG,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,mDAAmD;IACnD,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,kBAAkB,YAAY,EAAE,CAAC;QACrD,OAAO,OAAO,CAAC,GAAG,WAAW,eAAe,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,iDAAiD,GAAG,EAAE,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,sBAAsB;IACtB,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChE,kBAAkB;IAClB,MAAM,IAAI,KAAK,CACb,iDAAiD,YAAY,KAAK;QAClE,2BAA2B,aAAa,MAAM,CAC/C,CAAC;AACJ,CAAC;AAED,8CAA8C;AAC9C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,CAAC"}
package/install/check.js CHANGED
@@ -1,113 +1,123 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { getFFmpegLibraryVersions, globalFFmpegVersion, log, spawnRebuild, useGlobalFFmpeg } from './ffmpeg.js';
3
+ import { existsSync } from 'node:fs';
4
+ import { createRequire } from 'node:module';
5
+ import { join } from 'node:path';
4
6
 
5
- const buildFromSource = async (msg) => {
6
- log(msg);
7
- log('Building from source requires:');
8
- log(' - FFmpeg 7.1+ with development headers');
9
- log(' - Python 3.12+');
10
- log(' - node-gyp and node-addon-api');
7
+ import { log, spawnRebuild, useGlobalFFmpeg } from './ffmpeg.js';
11
8
 
12
- // Check for node-addon-api and node-gyp
13
- let hasNodeAddonApi = false;
14
- let hasNodeGyp = false;
9
+ const require = createRequire(import.meta.url);
10
+
11
+ const tryLoadPrebuilt = () => {
12
+ // Try to load from platform-specific package (optionalDependencies)
13
+ const platform = process.platform;
14
+ const arch = process.arch;
15
+ const packageName = `@seydx/node-av-${platform}-${arch}`;
15
16
 
16
17
  try {
17
- // @ts-expect-error
18
- await import('node-addon-api');
19
- hasNodeAddonApi = true;
18
+ const packagePath = require.resolve(`${packageName}/node-av.node`);
19
+ if (existsSync(packagePath)) {
20
+ log(`Using prebuilt binary from ${packageName}`);
21
+ return true;
22
+ }
20
23
  } catch {
21
- // Not installed
24
+ // Package not installed or file not found
25
+ }
26
+
27
+ // Try local binary folder (for development)
28
+ const localBinary = join(process.cwd(), 'binary', 'node-av.node');
29
+ if (existsSync(localBinary)) {
30
+ log('Using local binary from binary/node-av.node');
31
+ return true;
22
32
  }
23
33
 
34
+ return false;
35
+ };
36
+
37
+ const buildFromSource = () => {
38
+ log('Building from source...');
39
+
40
+ // Check for required build dependencies
41
+ const missingDeps = [];
42
+
24
43
  try {
25
- // @ts-expect-error
26
- await import('node-gyp');
27
- hasNodeGyp = true;
44
+ require('node-addon-api');
28
45
  } catch {
29
- // Not installed
46
+ missingDeps.push('node-addon-api');
30
47
  }
31
48
 
32
- if (!hasNodeAddonApi || !hasNodeGyp) {
49
+ try {
50
+ require('node-gyp');
51
+ } catch {
52
+ missingDeps.push('node-gyp');
53
+ }
54
+
55
+ if (missingDeps.length > 0) {
33
56
  log('');
34
- log('Missing build dependencies. Please install:');
35
- log(' npm install --save-dev node-addon-api node-gyp');
57
+ log(`Missing build dependencies: ${missingDeps.join(', ')}`);
58
+ log('Please install:');
59
+ log(` npm install --save-dev ${missingDeps.join(' ')}`);
36
60
  log('');
37
61
  log('Then run npm install again.');
38
62
  process.exit(1);
39
63
  }
40
64
 
41
- log('Found required build dependencies');
42
65
  log('Building native bindings...');
43
66
 
44
67
  const status = spawnRebuild();
45
68
  if (status !== 0) {
69
+ log('');
46
70
  log('Build failed. Please ensure you have:');
47
71
  log(' - FFmpeg 7.1+ libraries and headers installed');
48
72
  log(' - Python 3.12+ installed');
49
73
  log(' - A C++ compiler with C++17 support');
74
+ log('');
50
75
  log('See https://github.com/seydx/av for detailed requirements');
51
76
  process.exit(status);
52
77
  }
78
+
79
+ log('Build completed successfully!');
53
80
  };
54
81
 
55
82
  (async () => {
56
83
  try {
57
- // Check if we should build from source
58
- const shouldBuildFromSource = process.env.npm_config_build_from_source;
59
-
60
- // Try to load the prebuilt binary first (unless explicitly building from source)
61
- if (!shouldBuildFromSource) {
62
- try {
63
- // Check if platform-specific package exists (optionalDependencies)
64
- const platform = process.platform;
65
- const arch = process.arch;
66
- const packageName = `@seydx/node-av-${platform}-${arch}`;
67
-
68
- // Try to resolve the package
69
- await import(`${packageName}/package.json`);
70
- log(`Using prebuilt binary from ${packageName}`);
84
+ const shouldBuildFromSource = process.env.npm_config_build_from_source === 'true';
85
+
86
+ // Priority 1: User explicitly wants to build from source
87
+ if (shouldBuildFromSource) {
88
+ if (!useGlobalFFmpeg()) {
89
+ log('--build-from-source specified but no FFmpeg libraries found');
90
+ log('Please install FFmpeg 7.1+ with development headers');
91
+ process.exit(1);
92
+ }
93
+ // Fall through to build logic below
94
+ } else {
95
+ // Priority 2: Try to use prebuilt binary if not forcing source build
96
+ if (tryLoadPrebuilt()) {
71
97
  return;
72
- } catch {
73
- // No prebuilt binary available, will build from source
74
98
  }
75
99
  }
76
100
 
77
- // No prebuilt binary or --build-from-source flag, check for system FFmpeg
78
- if (useGlobalFFmpeg(log)) {
79
- const versions = getFFmpegLibraryVersions();
80
- if (versions && versions.length > 0) {
81
- log('Detected globally-installed FFmpeg libraries:');
82
- for (const lib of versions) {
83
- log(` ✓ ${lib.name.padEnd(20)} v${lib.version} (${lib.description})`);
84
- }
85
- await buildFromSource('Building with system FFmpeg');
86
- } else {
87
- await buildFromSource(`Detected globally-installed FFmpeg v${globalFFmpegVersion()}`);
88
- }
89
- } else {
90
- // No system FFmpeg found
101
+ // Build from source (either requested or as fallback)
102
+ if (useGlobalFFmpeg()) {
103
+ // Determine why we're building
91
104
  if (shouldBuildFromSource) {
92
- log('--build-from-source specified but no FFmpeg libraries found');
93
- log('Please install FFmpeg 7.1+ with development headers');
94
- process.exit(1);
105
+ log('Building from source as requested');
95
106
  } else {
96
107
  log('No prebuilt binary available for your platform');
97
- log('No system FFmpeg libraries found (requires v7.1+)');
98
- log('');
99
- log('Please install FFmpeg 7.1+ and build dependencies:');
100
- log(' - FFmpeg development libraries');
101
- log(' - Python 3.12+');
102
- log(' - npm install --save-dev node-addon-api node-gyp');
103
- log('');
104
- log('Then run npm install again.');
105
- process.exit(1);
108
+ log('System FFmpeg detected, building from source automatically');
106
109
  }
110
+
111
+ buildFromSource();
112
+ } else {
113
+ // No FFmpeg found and no prebuilt available
114
+ log('⚠️ No prebuilt binary and no system FFmpeg found');
115
+ log('Please install FFmpeg 7.1+ with development headers');
116
+ log('See https://github.com/seydx/av for installation instructions');
117
+ process.exit(1);
107
118
  }
108
119
  } catch (err) {
109
- const summary = err.message.split(/\n/).slice(0, 1);
110
- console.log(`node-av: installation error: ${summary}`);
120
+ console.error(`node-av: Installation error: ${err.message}`);
111
121
  process.exit(1);
112
122
  }
113
123
  })();
package/install/ffmpeg.js CHANGED
@@ -1,29 +1,13 @@
1
- // https://github.com/lovell/sharp/blob/main/lib/libvips.js
1
+ // Adapted from https://github.com/lovell/sharp/blob/main/lib/libvips.js
2
2
 
3
3
  import detectLibc from 'detect-libc';
4
4
  import { spawnSync } from 'node:child_process';
5
- import { readFileSync } from 'node:fs';
6
- import { dirname, join } from 'node:path';
7
- import { fileURLToPath } from 'node:url';
8
- import semverCoerce from 'semver/functions/coerce.js';
9
- import semverGreaterThanOrEqualTo from 'semver/functions/gte.js';
10
- import semverSatisfies from 'semver/functions/satisfies.js';
11
-
12
- const __dirname = dirname(fileURLToPath(import.meta.url));
13
- const packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf8'));
14
- const { engines } = packageJson;
15
5
 
16
6
  const spawnSyncOptions = {
17
7
  encoding: 'utf8',
18
8
  shell: true,
19
9
  };
20
10
 
21
- // Minimum FFmpeg version required
22
- export const minimumFFmpegVersion = '7.1.0';
23
-
24
- // Minimum Python version required for node-gyp
25
- export const minimumPythonVersion = '3.12.0';
26
-
27
11
  export const log = (item) => {
28
12
  if (item instanceof Error) {
29
13
  console.error(`node-av: Installation error: ${item.message}`);
@@ -42,122 +26,52 @@ export const buildPlatformArch = () => {
42
26
  return `${npm_config_platform ?? process.platform}${libc}-${npm_config_arch ?? process.arch}`;
43
27
  };
44
28
 
45
- export const isUnsupportedNodeRuntime = () => {
46
- if (process.release?.name === 'node' && process.versions) {
47
- if (!semverSatisfies(process.versions.node, engines.node)) {
48
- return { found: process.versions.node, expected: engines.node };
49
- }
50
- }
51
- };
52
-
53
29
  export const spawnRebuild = () =>
54
30
  spawnSync('node-gyp rebuild', {
55
31
  ...spawnSyncOptions,
56
32
  stdio: 'inherit',
57
33
  }).status;
58
34
 
59
- export const globalFFmpegVersion = () => {
60
- if (process.platform !== 'win32') {
61
- const ffmpegVersion =
62
- spawnSync('pkg-config --modversion libavcodec', {
63
- ...spawnSyncOptions,
64
- env: {
65
- ...process.env,
66
- PKG_CONFIG_PATH: pkgConfigPath(),
67
- },
68
- }).stdout || '';
69
- return ffmpegVersion.trim();
70
- } else {
35
+ export const pkgConfigPath = () => {
36
+ if (process.platform === 'win32') {
71
37
  return '';
72
38
  }
73
- };
74
39
 
75
- export const getFFmpegLibraryVersions = () => {
76
- if (process.platform === 'win32') {
77
- return null;
78
- }
40
+ const paths = [];
79
41
 
80
- const libraries = [
81
- { name: 'libavcodec', description: 'codec library' },
82
- { name: 'libavformat', description: 'format library' },
83
- { name: 'libavutil', description: 'utility library' },
84
- { name: 'libswscale', description: 'video scaling library' },
85
- { name: 'libswresample', description: 'audio resampling library' },
86
- { name: 'libavfilter', description: 'filter library' },
87
- { name: 'libavdevice', description: 'device library' },
88
- { name: 'libpostproc', description: 'post-processing library' },
89
- ];
90
-
91
- const versions = [];
92
-
93
- for (const lib of libraries) {
94
- const version = spawnSync(`pkg-config --modversion ${lib.name}`, {
95
- ...spawnSyncOptions,
96
- env: {
97
- ...process.env,
98
- PKG_CONFIG_PATH: pkgConfigPath(),
99
- },
100
- }).stdout;
101
-
102
- if (version && version.trim()) {
103
- versions.push({
104
- name: lib.name,
105
- description: lib.description,
106
- version: version.trim(),
107
- });
42
+ // Try homebrew path on macOS
43
+ if (process.platform === 'darwin') {
44
+ const brewPath = spawnSync('brew --prefix 2>/dev/null', spawnSyncOptions).stdout;
45
+ if (brewPath) {
46
+ paths.push(`${brewPath.trim()}/lib/pkgconfig`);
108
47
  }
109
48
  }
110
49
 
111
- return versions.length > 0 ? versions : null;
112
- };
50
+ // Add standard paths
51
+ paths.push(process.env.PKG_CONFIG_PATH, '/usr/local/lib/pkgconfig', '/usr/lib/pkgconfig', '/usr/local/libdata/pkgconfig', '/usr/libdata/pkgconfig');
113
52
 
114
- export const pkgConfigPath = () => {
115
- if (process.platform !== 'win32') {
116
- const brewPkgConfigPath = spawnSync('which brew >/dev/null 2>&1 && brew environment --plain | grep PKG_CONFIG_LIBDIR | cut -d" " -f2', spawnSyncOptions).stdout || '';
117
- return [
118
- brewPkgConfigPath.trim(),
119
- process.env.PKG_CONFIG_PATH,
120
- '/usr/local/lib/pkgconfig',
121
- '/usr/lib/pkgconfig',
122
- '/usr/local/libdata/pkgconfig',
123
- '/usr/libdata/pkgconfig',
124
- ]
125
- .filter(Boolean)
126
- .join(':');
127
- } else {
128
- return '';
129
- }
53
+ return paths.filter(Boolean).join(':');
130
54
  };
131
55
 
132
- export const useGlobalFFmpeg = (logger) => {
133
- const globalVersion = globalFFmpegVersion();
134
- if (!globalVersion) {
56
+ export const useGlobalFFmpeg = () => {
57
+ if (process.platform === 'win32') {
135
58
  return false;
136
59
  }
137
60
 
138
- // Check if all required libraries are present
139
- const requiredLibs = ['libavcodec', 'libavformat', 'libavutil', 'libswscale', 'libswresample'];
140
- for (const lib of requiredLibs) {
141
- const version =
142
- spawnSync(`pkg-config --modversion ${lib}`, {
143
- ...spawnSyncOptions,
144
- env: {
145
- ...process.env,
146
- PKG_CONFIG_PATH: pkgConfigPath(),
147
- },
148
- }).stdout || '';
149
- if (!version?.trim()) {
150
- if (logger) {
151
- logger(`Missing required FFmpeg library: ${lib}`);
152
- }
153
- return false;
154
- }
155
- }
61
+ let ffmpegVersion =
62
+ spawnSync('pkg-config --modversion libavcodec', {
63
+ ...spawnSyncOptions,
64
+ env: {
65
+ ...process.env,
66
+ PKG_CONFIG_PATH: pkgConfigPath(),
67
+ },
68
+ }).stdout || '';
69
+
70
+ ffmpegVersion = ffmpegVersion.trim();
156
71
 
157
- const coercedVersion = semverCoerce(globalVersion);
158
- if (!coercedVersion) {
72
+ if (!ffmpegVersion) {
159
73
  return false;
160
74
  }
161
75
 
162
- return semverGreaterThanOrEqualTo(coercedVersion.version, minimumFFmpegVersion);
76
+ return true;
163
77
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-av",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "FFmpeg bindings for Node.js",
5
5
  "author": "seydx (https://github.com/seydx/av)",
6
6
  "type": "module",
@@ -53,16 +53,15 @@
53
53
  "update": "updates --update ./"
54
54
  },
55
55
  "dependencies": {
56
- "detect-libc": "^2.0.4",
57
- "semver": "^7.7.2"
56
+ "detect-libc": "^2.0.4"
58
57
  },
59
58
  "optionalDependencies": {
60
- "@seydx/node-av-darwin-arm64": "^1.0.0",
61
- "@seydx/node-av-darwin-x64": "^1.0.0",
62
- "@seydx/node-av-linux-arm64": "^1.0.0",
63
- "@seydx/node-av-linux-x64": "^1.0.0",
64
- "@seydx/node-av-win32-arm64": "^1.0.0",
65
- "@seydx/node-av-win32-x64": "^1.0.0"
59
+ "@seydx/node-av-darwin-arm64": "^1.0.1",
60
+ "@seydx/node-av-darwin-x64": "^1.0.1",
61
+ "@seydx/node-av-linux-arm64": "^1.0.1",
62
+ "@seydx/node-av-linux-x64": "^1.0.1",
63
+ "@seydx/node-av-win32-arm64": "^1.0.1",
64
+ "@seydx/node-av-win32-x64": "^1.0.1"
66
65
  },
67
66
  "devDependencies": {
68
67
  "@stylistic/eslint-plugin": "^5.2.3",
@@ -0,0 +1,11 @@
1
+ ## node-av Release v1.0.1
2
+
3
+ ### 📦 Updated Packages
4
+
5
+ The following platform packages have been updated to v1.0.1:
6
+ - `@seydx/node-av-darwin-arm64@v1.0.1`
7
+ - `@seydx/node-av-darwin-x64@v1.0.1`
8
+ - `@seydx/node-av-linux-arm64@v1.0.1`
9
+ - `@seydx/node-av-linux-x64@v1.0.1`
10
+ - `@seydx/node-av-win32-arm64@v1.0.1`
11
+ - `@seydx/node-av-win32-x64@v1.0.1`