webcodecs-node 0.7.2 → 0.7.5

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 (105) hide show
  1. package/README.md +94 -12
  2. package/dist/config/ffmpeg-quality.d.ts +10 -1
  3. package/dist/config/ffmpeg-quality.d.ts.map +1 -1
  4. package/dist/config/ffmpeg-quality.js +12 -38
  5. package/dist/config/ffmpeg-quality.js.map +1 -1
  6. package/dist/config/webcodecs-config.d.ts +58 -0
  7. package/dist/config/webcodecs-config.d.ts.map +1 -0
  8. package/dist/config/webcodecs-config.js +187 -0
  9. package/dist/config/webcodecs-config.js.map +1 -0
  10. package/dist/containers/Demuxer.d.ts +3 -1
  11. package/dist/containers/Demuxer.d.ts.map +1 -1
  12. package/dist/containers/Demuxer.js +26 -19
  13. package/dist/containers/Demuxer.js.map +1 -1
  14. package/dist/containers/FFmpegMuxer.d.ts +42 -0
  15. package/dist/containers/FFmpegMuxer.d.ts.map +1 -0
  16. package/dist/containers/FFmpegMuxer.js +311 -0
  17. package/dist/containers/FFmpegMuxer.js.map +1 -0
  18. package/dist/containers/FFmpegSpawnMuxer.d.ts +42 -0
  19. package/dist/containers/FFmpegSpawnMuxer.d.ts.map +1 -0
  20. package/dist/containers/FFmpegSpawnMuxer.js +311 -0
  21. package/dist/containers/FFmpegSpawnMuxer.js.map +1 -0
  22. package/dist/containers/FallbackMuxer.d.ts +42 -0
  23. package/dist/containers/FallbackMuxer.d.ts.map +1 -0
  24. package/dist/containers/FallbackMuxer.js +311 -0
  25. package/dist/containers/FallbackMuxer.js.map +1 -0
  26. package/dist/containers/Muxer.d.ts +75 -107
  27. package/dist/containers/Muxer.d.ts.map +1 -1
  28. package/dist/containers/Muxer.js +184 -243
  29. package/dist/containers/Muxer.js.map +1 -1
  30. package/dist/containers/MuxerWithFallback.d.ts +110 -0
  31. package/dist/containers/MuxerWithFallback.d.ts.map +1 -0
  32. package/dist/containers/MuxerWithFallback.js +239 -0
  33. package/dist/containers/MuxerWithFallback.js.map +1 -0
  34. package/dist/containers/NodeAvMuxer.d.ts +118 -0
  35. package/dist/containers/NodeAvMuxer.d.ts.map +1 -0
  36. package/dist/containers/NodeAvMuxer.js +338 -0
  37. package/dist/containers/NodeAvMuxer.js.map +1 -0
  38. package/dist/containers/extract.d.ts.map +1 -1
  39. package/dist/containers/extract.js +3 -1
  40. package/dist/containers/extract.js.map +1 -1
  41. package/dist/containers/index.d.ts +20 -14
  42. package/dist/containers/index.d.ts.map +1 -1
  43. package/dist/containers/index.js +21 -14
  44. package/dist/containers/index.js.map +1 -1
  45. package/dist/containers/muxer-types.d.ts +117 -0
  46. package/dist/containers/muxer-types.d.ts.map +1 -0
  47. package/dist/containers/muxer-types.js +45 -0
  48. package/dist/containers/muxer-types.js.map +1 -0
  49. package/dist/containers/transcode.d.ts.map +1 -1
  50. package/dist/containers/transcode.js +171 -150
  51. package/dist/containers/transcode.js.map +1 -1
  52. package/dist/core/VideoFrame.d.ts +19 -0
  53. package/dist/core/VideoFrame.d.ts.map +1 -1
  54. package/dist/core/VideoFrame.js +11 -0
  55. package/dist/core/VideoFrame.js.map +1 -1
  56. package/dist/decoders/VideoDecoder.d.ts +1 -0
  57. package/dist/decoders/VideoDecoder.d.ts.map +1 -1
  58. package/dist/decoders/VideoDecoder.js +6 -4
  59. package/dist/decoders/VideoDecoder.js.map +1 -1
  60. package/dist/demos/demo-audio-visualizer-mediabunny.d.ts +10 -0
  61. package/dist/demos/demo-audio-visualizer-mediabunny.d.ts.map +1 -0
  62. package/dist/demos/demo-audio-visualizer-mediabunny.js +357 -0
  63. package/dist/demos/demo-audio-visualizer-mediabunny.js.map +1 -0
  64. package/dist/demos/demo-audio-visualizer-nodeav.d.ts +10 -0
  65. package/dist/demos/demo-audio-visualizer-nodeav.d.ts.map +1 -0
  66. package/dist/demos/demo-audio-visualizer-nodeav.js +318 -0
  67. package/dist/demos/demo-audio-visualizer-nodeav.js.map +1 -0
  68. package/dist/demos/demo-muxer-fallback.d.ts +8 -0
  69. package/dist/demos/demo-muxer-fallback.d.ts.map +1 -0
  70. package/dist/demos/demo-muxer-fallback.js +165 -0
  71. package/dist/demos/demo-muxer-fallback.js.map +1 -0
  72. package/dist/encoders/AudioEncoder.d.ts +2 -0
  73. package/dist/encoders/AudioEncoder.d.ts.map +1 -1
  74. package/dist/encoders/AudioEncoder.js +7 -4
  75. package/dist/encoders/AudioEncoder.js.map +1 -1
  76. package/dist/hardware/decoder-args.d.ts.map +1 -1
  77. package/dist/hardware/decoder-args.js +35 -14
  78. package/dist/hardware/decoder-args.js.map +1 -1
  79. package/dist/hardware/detection.d.ts.map +1 -1
  80. package/dist/hardware/detection.js +39 -0
  81. package/dist/hardware/detection.js.map +1 -1
  82. package/dist/hardware/encoder-args.d.ts.map +1 -1
  83. package/dist/hardware/encoder-args.js +43 -5
  84. package/dist/hardware/encoder-args.js.map +1 -1
  85. package/dist/hardware/types.d.ts.map +1 -1
  86. package/dist/hardware/types.js +30 -28
  87. package/dist/hardware/types.js.map +1 -1
  88. package/dist/node-av/NodeAvVideoEncoder.d.ts +5 -0
  89. package/dist/node-av/NodeAvVideoEncoder.d.ts.map +1 -1
  90. package/dist/node-av/NodeAvVideoEncoder.js +76 -23
  91. package/dist/node-av/NodeAvVideoEncoder.js.map +1 -1
  92. package/dist/utils/avc.d.ts +2 -0
  93. package/dist/utils/avc.d.ts.map +1 -1
  94. package/dist/utils/avc.js +36 -8
  95. package/dist/utils/avc.js.map +1 -1
  96. package/dist/utils/codec-validation.d.ts.map +1 -1
  97. package/dist/utils/codec-validation.js +18 -8
  98. package/dist/utils/codec-validation.js.map +1 -1
  99. package/dist/utils/hevc.d.ts +2 -0
  100. package/dist/utils/hevc.d.ts.map +1 -1
  101. package/dist/utils/hevc.js +42 -8
  102. package/dist/utils/hevc.js.map +1 -1
  103. package/docs/api.md +20 -2
  104. package/docs/configuration.md +10 -7
  105. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Demuxer.js","sourceRoot":"","sources":["../../src/containers/Demuxer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAA8B,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAA8B,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAoCpE;;GAEG;AACH,SAAS,eAAe,CAAC,OAAe,EAAE,SAAyB;IACjE,0BAA0B;IAC1B,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,EAAE,EAAE,mBAAmB;YAC1B,8CAA8C;YAC9C,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACvC,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC3B,OAAO,QAAQ,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;YAC3I,CAAC;YACD,OAAO,aAAa,CAAC,CAAC,6BAA6B;QACrD,KAAK,GAAG,EAAE,mBAAmB;YAC3B,OAAO,iBAAiB,CAAC;QAC3B,KAAK,GAAG,EAAE,kBAAkB;YAC1B,OAAO,KAAK,CAAC;QACf,KAAK,GAAG,EAAE,kBAAkB;YAC1B,OAAO,eAAe,CAAC;QACzB,KAAK,GAAG,EAAE,kBAAkB;YAC1B,OAAO,eAAe,CAAC;QACzB;YACE,OAAO,WAAW,OAAO,EAAE,CAAC;IAChC,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,KAAK,EAAE,kBAAkB;YAC5B,OAAO,WAAW,CAAC;QACrB,KAAK,KAAK,EAAE,kBAAkB;YAC5B,OAAO,KAAK,CAAC;QACf,KAAK,KAAK,EAAE,mBAAmB;YAC7B,OAAO,MAAM,CAAC;QAChB,KAAK,KAAK,EAAE,qBAAqB;YAC/B,OAAO,QAAQ,CAAC;QAClB,KAAK,KAAK,EAAE,mBAAmB;YAC7B,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,WAAW,OAAO,EAAE,CAAC;IAChC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,OAAO;IACV,OAAO,GAAyB,IAAI,CAAC;IACrC,IAAI,CAAS;IACb,YAAY,GAA6B,IAAI,CAAC;IAC9C,YAAY,GAA6B,IAAI,CAAC;IAC9C,iBAAiB,GAAW,CAAC,CAAC,CAAC;IAC/B,iBAAiB,GAAW,CAAC,CAAC,CAAC;IAC/B,cAAc,GAAwC,IAAI,CAAC;IAC3D,cAAc,GAAwC,IAAI,CAAC;IAEnE,YAAY,MAAqB;QAC/B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,UAAkB,gBAAgB,CAAC,IAAI;QAChD,IAAI,CAAC,OAAO,GAAG,MAAM,WAAW,CAC9B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7B,OAAO,EACP,iBAAiB,IAAI,CAAC,IAAI,GAAG,CAC9B,CAAC;QAEF,4BAA4B;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,KAAK,CAAC;YAC3C,IAAI,CAAC,cAAc,GAAG;gBACpB,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG;gBAC7B,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG;aAC9B,CAAC;YAEF,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG;gBAClB,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC;gBAChD,UAAU,EAAE,EAAE,CAAC,KAAK;gBACpB,WAAW,EAAE,EAAE,CAAC,MAAM;gBACtB,WAAW,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;aACrE,CAAC;QACJ,CAAC;QAED,4BAA4B;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,KAAK,CAAC;YAC3C,IAAI,CAAC,cAAc,GAAG;gBACpB,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG;gBAC7B,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG;aAC9B,CAAC;YAEF,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG;gBAClB,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC,OAAO,CAAC;gBAClC,UAAU,EAAE,EAAE,CAAC,UAAU;gBACzB,gBAAgB,EAAE,EAAE,CAAC,QAAQ;gBAC7B,WAAW,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;aACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,GAAoB,EAAE,QAAsC;QACjF,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAC,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9F,OAAO;QACT,CAAC;QAED,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI;gBAAE,SAAS;YACtC,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAClD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;oBAC9B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;oBAC3D,CAAC,CAAC,SAAS,CAAC;gBAEd,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC;oBAClC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;oBACzC,SAAS;oBACT,QAAQ;oBACR,IAAI,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;iBAClC,CAAC,CAAC;gBAEH,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAC,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9F,OAAO;QACT,CAAC;QAED,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI;gBAAE,SAAS;YACtC,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAClD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;oBAC9B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;oBAC3D,CAAC,CAAC,SAAS,CAAC;gBAEd,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC;oBAClC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;oBACzC,SAAS;oBACT,QAAQ;oBACR,IAAI,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;iBAClC,CAAC,CAAC;gBAEH,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,CAAC,MAAM;QAIX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI;gBAAE,SAAS;YACtC,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC9F,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;oBAC9B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;oBAC3D,CAAC,CAAC,SAAS,CAAC;gBAEd,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC;oBAClC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;oBACzC,SAAS;oBACT,QAAQ;oBACR,IAAI,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;iBAClC,CAAC,CAAC;gBAEH,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5D,CAAC;iBAAM,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACrG,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;oBAC9B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;oBAC3D,CAAC,CAAC,SAAS,CAAC;gBAEd,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC;oBAClC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;oBACzC,SAAS;oBACT,QAAQ;oBACR,IAAI,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;iBAClC,CAAC,CAAC;gBAEH,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,OAGX;QACC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBAClD,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACzD,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
1
+ {"version":3,"file":"Demuxer.js","sourceRoot":"","sources":["../../src/containers/Demuxer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * FFmpeg Muxer - FFmpeg subprocess-based muxer
3
+ *
4
+ * This muxer accumulates encoded chunks in memory and uses FFmpeg
5
+ * to mux them when close() is called. Used as a fallback when
6
+ * the node-av muxer fails.
7
+ */
8
+ import type { EncodedVideoChunk } from '../core/EncodedVideoChunk.js';
9
+ import type { EncodedAudioChunk } from '../core/EncodedAudioChunk.js';
10
+ import type { IMuxer, MuxerConfig, VideoTrackConfig, AudioTrackConfig } from './muxer-types.js';
11
+ /**
12
+ * FFmpeg-based muxer that uses subprocess for muxing
13
+ *
14
+ * This muxer accumulates chunks and uses FFmpeg to create the final
15
+ * output file. It's more battle-tested but slower (~130ms due to
16
+ * process spawn) than the native node-av muxer (~5ms).
17
+ */
18
+ export declare class FFmpegMuxer implements IMuxer {
19
+ private config;
20
+ private videoConfig;
21
+ private audioConfig;
22
+ private videoChunks;
23
+ private audioChunks;
24
+ private _videoChunkCount;
25
+ private _audioChunkCount;
26
+ private isOpen;
27
+ private tempDir;
28
+ constructor(config: MuxerConfig);
29
+ open(timeout?: number): Promise<void>;
30
+ addVideoTrack(config: VideoTrackConfig): Promise<number>;
31
+ addAudioTrack(config: AudioTrackConfig): Promise<number>;
32
+ writeVideoChunk(chunk: EncodedVideoChunk): Promise<void>;
33
+ writeAudioChunk(chunk: EncodedAudioChunk): Promise<void>;
34
+ close(timeout?: number): Promise<void>;
35
+ private muxWithFFmpeg;
36
+ private writeVideoToFile;
37
+ private writeAudioToFile;
38
+ private spawnFFmpeg;
39
+ get videoChunkCount(): number;
40
+ get audioChunkCount(): number;
41
+ }
42
+ //# sourceMappingURL=FFmpegMuxer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FFmpegMuxer.d.ts","sourceRoot":"","sources":["../../src/containers/FFmpegMuxer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EACV,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAwK1B;;;;;;GAMG;AACH,qBAAa,WAAY,YAAW,MAAM;IACxC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAuB;gBAE1B,MAAM,EAAE,WAAW;IAIzB,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrC,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQxD,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQxD,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxD,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxD,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAgB9B,aAAa;YA4Cb,gBAAgB;YAgChB,gBAAgB;IA0B9B,OAAO,CAAC,WAAW;IAoCnB,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;CACF"}
@@ -0,0 +1,311 @@
1
+ /**
2
+ * FFmpeg Muxer - FFmpeg subprocess-based muxer
3
+ *
4
+ * This muxer accumulates encoded chunks in memory and uses FFmpeg
5
+ * to mux them when close() is called. Used as a fallback when
6
+ * the node-av muxer fails.
7
+ */
8
+ import * as fs from 'fs';
9
+ import * as path from 'path';
10
+ import * as os from 'os';
11
+ import { spawn } from 'child_process';
12
+ import { randomBytes } from 'crypto';
13
+ import { MuxerError } from './muxer-types.js';
14
+ /**
15
+ * Convert AVCC format (length-prefixed NALUs) to Annex B (start code prefixed)
16
+ * This is needed because FFmpeg expects Annex B format for raw H.264 input
17
+ */
18
+ function avccToAnnexB(avccData, nalLengthSize = 4) {
19
+ const START_CODE = new Uint8Array([0, 0, 0, 1]);
20
+ const chunks = [];
21
+ let offset = 0;
22
+ while (offset < avccData.length) {
23
+ // Read NAL unit length
24
+ let nalLength = 0;
25
+ for (let i = 0; i < nalLengthSize; i++) {
26
+ nalLength = (nalLength << 8) | avccData[offset + i];
27
+ }
28
+ offset += nalLengthSize;
29
+ if (nalLength <= 0 || offset + nalLength > avccData.length) {
30
+ break;
31
+ }
32
+ // Add start code + NAL unit
33
+ chunks.push(START_CODE);
34
+ chunks.push(avccData.slice(offset, offset + nalLength));
35
+ offset += nalLength;
36
+ }
37
+ // Concatenate all chunks
38
+ const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
39
+ const result = new Uint8Array(totalLength);
40
+ let writeOffset = 0;
41
+ for (const chunk of chunks) {
42
+ result.set(chunk, writeOffset);
43
+ writeOffset += chunk.length;
44
+ }
45
+ return result;
46
+ }
47
+ /**
48
+ * Parse AVCC extradata (SPS/PPS) to Annex B format
49
+ */
50
+ function parseAvccExtradata(extradata) {
51
+ const START_CODE = new Uint8Array([0, 0, 0, 1]);
52
+ const chunks = [];
53
+ // AVCC format:
54
+ // configurationVersion (1 byte) = 1
55
+ // AVCProfileIndication (1 byte)
56
+ // profile_compatibility (1 byte)
57
+ // AVCLevelIndication (1 byte)
58
+ // lengthSizeMinusOne (6 bits reserved + 2 bits) -> NAL length size = (value & 0x03) + 1
59
+ // numOfSequenceParameterSets (3 bits reserved + 5 bits)
60
+ // SPS entries...
61
+ // numOfPictureParameterSets (1 byte)
62
+ // PPS entries...
63
+ if (extradata.length < 7 || extradata[0] !== 1) {
64
+ // Not valid AVCC, return as-is (might already be Annex B)
65
+ return { annexBHeader: extradata, nalLengthSize: 4 };
66
+ }
67
+ const nalLengthSize = (extradata[4] & 0x03) + 1;
68
+ let offset = 5;
69
+ // Parse SPS
70
+ const numSPS = extradata[offset] & 0x1f;
71
+ offset++;
72
+ for (let i = 0; i < numSPS; i++) {
73
+ const spsLength = (extradata[offset] << 8) | extradata[offset + 1];
74
+ offset += 2;
75
+ chunks.push(START_CODE);
76
+ chunks.push(extradata.slice(offset, offset + spsLength));
77
+ offset += spsLength;
78
+ }
79
+ // Parse PPS
80
+ const numPPS = extradata[offset];
81
+ offset++;
82
+ for (let i = 0; i < numPPS; i++) {
83
+ const ppsLength = (extradata[offset] << 8) | extradata[offset + 1];
84
+ offset += 2;
85
+ chunks.push(START_CODE);
86
+ chunks.push(extradata.slice(offset, offset + ppsLength));
87
+ offset += ppsLength;
88
+ }
89
+ // Concatenate
90
+ const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
91
+ const annexBHeader = new Uint8Array(totalLength);
92
+ let writeOffset = 0;
93
+ for (const chunk of chunks) {
94
+ annexBHeader.set(chunk, writeOffset);
95
+ writeOffset += chunk.length;
96
+ }
97
+ return { annexBHeader, nalLengthSize };
98
+ }
99
+ /**
100
+ * Add ADTS header to raw AAC frame
101
+ */
102
+ function addAdtsHeader(aacFrame, sampleRate, channels) {
103
+ const sampleRateIndex = [
104
+ 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025,
105
+ 8000, 7350,
106
+ ].indexOf(sampleRate);
107
+ if (sampleRateIndex === -1) {
108
+ // Unsupported sample rate, return raw frame
109
+ return aacFrame;
110
+ }
111
+ const frameLength = aacFrame.length + 7; // ADTS header is 7 bytes
112
+ const header = new Uint8Array(7);
113
+ // Syncword (12 bits) = 0xFFF
114
+ header[0] = 0xff;
115
+ header[1] = 0xf1; // MPEG-4, Layer 0, no CRC
116
+ // Profile (2 bits) = AAC-LC (1), shifted left 6
117
+ // Sample rate index (4 bits), shifted left 2
118
+ // Private bit (1 bit) = 0
119
+ // Channel config (3 bits, upper 1 bit)
120
+ header[2] = ((1 << 6) | (sampleRateIndex << 2) | (channels >> 2)) & 0xff;
121
+ // Channel config (lower 2 bits), shifted left 6
122
+ // Original/copy (1 bit) = 0
123
+ // Home (1 bit) = 0
124
+ // Copyright ID (1 bit) = 0
125
+ // Copyright start (1 bit) = 0
126
+ // Frame length (13 bits, upper 2 bits)
127
+ header[3] = (((channels & 0x03) << 6) | (frameLength >> 11)) & 0xff;
128
+ // Frame length (middle 8 bits)
129
+ header[4] = (frameLength >> 3) & 0xff;
130
+ // Frame length (lower 3 bits), shifted left 5
131
+ // Buffer fullness (11 bits, upper 5 bits) = 0x7FF (VBR)
132
+ header[5] = (((frameLength & 0x07) << 5) | 0x1f) & 0xff;
133
+ // Buffer fullness (lower 6 bits), shifted left 2
134
+ // Number of AAC frames - 1 (2 bits) = 0
135
+ header[6] = 0xfc;
136
+ // Combine header and frame
137
+ const result = new Uint8Array(frameLength);
138
+ result.set(header);
139
+ result.set(aacFrame, 7);
140
+ return result;
141
+ }
142
+ /**
143
+ * FFmpeg-based muxer that uses subprocess for muxing
144
+ *
145
+ * This muxer accumulates chunks and uses FFmpeg to create the final
146
+ * output file. It's more battle-tested but slower (~130ms due to
147
+ * process spawn) than the native node-av muxer (~5ms).
148
+ */
149
+ export class FFmpegMuxer {
150
+ config;
151
+ videoConfig = null;
152
+ audioConfig = null;
153
+ videoChunks = [];
154
+ audioChunks = [];
155
+ _videoChunkCount = 0;
156
+ _audioChunkCount = 0;
157
+ isOpen = false;
158
+ tempDir = null;
159
+ constructor(config) {
160
+ this.config = config;
161
+ }
162
+ async open(timeout) {
163
+ // Create temp directory for intermediate files
164
+ this.tempDir = path.join(os.tmpdir(), `ffmpeg-mux-${randomBytes(8).toString('hex')}`);
165
+ fs.mkdirSync(this.tempDir, { recursive: true });
166
+ this.isOpen = true;
167
+ }
168
+ async addVideoTrack(config) {
169
+ if (!this.isOpen) {
170
+ throw new MuxerError('Muxer not opened', 'ffmpeg-spawn', 'addTrack');
171
+ }
172
+ this.videoConfig = config;
173
+ return 0;
174
+ }
175
+ async addAudioTrack(config) {
176
+ if (!this.isOpen) {
177
+ throw new MuxerError('Muxer not opened', 'ffmpeg-spawn', 'addTrack');
178
+ }
179
+ this.audioConfig = config;
180
+ return this.videoConfig ? 1 : 0;
181
+ }
182
+ async writeVideoChunk(chunk) {
183
+ if (!this.isOpen || !this.videoConfig) {
184
+ throw new MuxerError('Video track not configured', 'ffmpeg-spawn', 'write');
185
+ }
186
+ this.videoChunks.push(chunk);
187
+ this._videoChunkCount++;
188
+ }
189
+ async writeAudioChunk(chunk) {
190
+ if (!this.isOpen || !this.audioConfig) {
191
+ throw new MuxerError('Audio track not configured', 'ffmpeg-spawn', 'write');
192
+ }
193
+ this.audioChunks.push(chunk);
194
+ this._audioChunkCount++;
195
+ }
196
+ async close(timeout) {
197
+ if (!this.isOpen || !this.tempDir) {
198
+ return;
199
+ }
200
+ try {
201
+ await this.muxWithFFmpeg();
202
+ }
203
+ finally {
204
+ // Clean up temp directory
205
+ if (this.tempDir && fs.existsSync(this.tempDir)) {
206
+ fs.rmSync(this.tempDir, { recursive: true, force: true });
207
+ }
208
+ this.isOpen = false;
209
+ }
210
+ }
211
+ async muxWithFFmpeg() {
212
+ if (!this.tempDir)
213
+ return;
214
+ const ffmpegArgs = ['-y'];
215
+ const inputFiles = [];
216
+ // Write video to temp file
217
+ if (this.videoConfig && this.videoChunks.length > 0) {
218
+ const videoPath = path.join(this.tempDir, 'video.h264');
219
+ await this.writeVideoToFile(videoPath);
220
+ inputFiles.push(videoPath);
221
+ const framerate = this.videoConfig.framerate || 30;
222
+ ffmpegArgs.push('-f', 'h264', '-r', String(framerate), '-i', videoPath);
223
+ }
224
+ // Write audio to temp file
225
+ if (this.audioConfig && this.audioChunks.length > 0) {
226
+ const audioPath = path.join(this.tempDir, 'audio.aac');
227
+ await this.writeAudioToFile(audioPath);
228
+ inputFiles.push(audioPath);
229
+ ffmpegArgs.push('-f', 'aac', '-i', audioPath);
230
+ }
231
+ if (inputFiles.length === 0) {
232
+ throw new MuxerError('No tracks to mux', 'ffmpeg-spawn', 'close');
233
+ }
234
+ // Output options
235
+ ffmpegArgs.push('-c:v', 'copy', '-c:a', 'copy', '-movflags', '+faststart', this.config.path);
236
+ // Spawn FFmpeg
237
+ await this.spawnFFmpeg(ffmpegArgs);
238
+ }
239
+ async writeVideoToFile(filePath) {
240
+ if (!this.videoConfig)
241
+ return;
242
+ const chunks = [];
243
+ // Parse extradata to get NAL length size and write SPS/PPS header
244
+ let nalLengthSize = 4;
245
+ if (this.videoConfig.description) {
246
+ const { annexBHeader, nalLengthSize: nls } = parseAvccExtradata(this.videoConfig.description);
247
+ nalLengthSize = nls;
248
+ chunks.push(annexBHeader);
249
+ }
250
+ // Convert each chunk from AVCC to Annex B
251
+ for (const chunk of this.videoChunks) {
252
+ const annexBData = avccToAnnexB(chunk._buffer, nalLengthSize);
253
+ chunks.push(annexBData);
254
+ }
255
+ // Write to file
256
+ const totalLength = chunks.reduce((sum, c) => sum + c.length, 0);
257
+ const buffer = Buffer.alloc(totalLength);
258
+ let offset = 0;
259
+ for (const chunk of chunks) {
260
+ Buffer.from(chunk).copy(buffer, offset);
261
+ offset += chunk.length;
262
+ }
263
+ fs.writeFileSync(filePath, buffer);
264
+ }
265
+ async writeAudioToFile(filePath) {
266
+ if (!this.audioConfig)
267
+ return;
268
+ const chunks = [];
269
+ // Add ADTS headers to each AAC frame
270
+ for (const chunk of this.audioChunks) {
271
+ const adtsFrame = addAdtsHeader(chunk._rawData, this.audioConfig.sampleRate, this.audioConfig.numberOfChannels);
272
+ chunks.push(adtsFrame);
273
+ }
274
+ // Write to file
275
+ const totalLength = chunks.reduce((sum, c) => sum + c.length, 0);
276
+ const buffer = Buffer.alloc(totalLength);
277
+ let offset = 0;
278
+ for (const chunk of chunks) {
279
+ Buffer.from(chunk).copy(buffer, offset);
280
+ offset += chunk.length;
281
+ }
282
+ fs.writeFileSync(filePath, buffer);
283
+ }
284
+ spawnFFmpeg(args) {
285
+ return new Promise((resolve, reject) => {
286
+ const ffmpeg = spawn('ffmpeg', args);
287
+ let stderr = '';
288
+ ffmpeg.stderr.on('data', (data) => {
289
+ stderr += data.toString();
290
+ });
291
+ ffmpeg.on('error', (err) => {
292
+ reject(new MuxerError(`FFmpeg spawn error: ${err.message}`, 'ffmpeg-spawn', 'close', err));
293
+ });
294
+ ffmpeg.on('close', (code) => {
295
+ if (code === 0) {
296
+ resolve();
297
+ }
298
+ else {
299
+ reject(new MuxerError(`FFmpeg exited with code ${code}: ${stderr.slice(-500)}`, 'ffmpeg-spawn', 'close'));
300
+ }
301
+ });
302
+ });
303
+ }
304
+ get videoChunkCount() {
305
+ return this._videoChunkCount;
306
+ }
307
+ get audioChunkCount() {
308
+ return this._audioChunkCount;
309
+ }
310
+ }
311
+ //# sourceMappingURL=FFmpegMuxer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FFmpegMuxer.js","sourceRoot":"","sources":["../../src/containers/FFmpegMuxer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * FFmpeg Spawn Muxer - Fallback muxer using FFmpeg subprocess
3
+ *
4
+ * This muxer accumulates encoded chunks in memory and uses FFmpeg
5
+ * to mux them when close() is called. It serves as a fallback when
6
+ * the node-av muxer fails.
7
+ */
8
+ import type { EncodedVideoChunk } from '../core/EncodedVideoChunk.js';
9
+ import type { EncodedAudioChunk } from '../core/EncodedAudioChunk.js';
10
+ import type { IMuxer, MuxerConfig, VideoTrackConfig, AudioTrackConfig } from './muxer-types.js';
11
+ /**
12
+ * FFmpeg-based muxer that uses subprocess for muxing
13
+ *
14
+ * This is a fallback muxer that accumulates chunks and uses FFmpeg
15
+ * to create the final output file. It's more battle-tested but slower
16
+ * than the native node-av muxer.
17
+ */
18
+ export declare class FFmpegSpawnMuxer implements IMuxer {
19
+ private config;
20
+ private videoConfig;
21
+ private audioConfig;
22
+ private videoChunks;
23
+ private audioChunks;
24
+ private _videoChunkCount;
25
+ private _audioChunkCount;
26
+ private isOpen;
27
+ private tempDir;
28
+ constructor(config: MuxerConfig);
29
+ open(timeout?: number): Promise<void>;
30
+ addVideoTrack(config: VideoTrackConfig): Promise<number>;
31
+ addAudioTrack(config: AudioTrackConfig): Promise<number>;
32
+ writeVideoChunk(chunk: EncodedVideoChunk): Promise<void>;
33
+ writeAudioChunk(chunk: EncodedAudioChunk): Promise<void>;
34
+ close(timeout?: number): Promise<void>;
35
+ private muxWithFFmpeg;
36
+ private writeVideoToFile;
37
+ private writeAudioToFile;
38
+ private spawnFFmpeg;
39
+ get videoChunkCount(): number;
40
+ get audioChunkCount(): number;
41
+ }
42
+ //# sourceMappingURL=FFmpegSpawnMuxer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FFmpegSpawnMuxer.d.ts","sourceRoot":"","sources":["../../src/containers/FFmpegSpawnMuxer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EACV,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAwK1B;;;;;;GAMG;AACH,qBAAa,gBAAiB,YAAW,MAAM;IAC7C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAuB;gBAE1B,MAAM,EAAE,WAAW;IAIzB,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrC,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQxD,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQxD,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxD,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxD,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAgB9B,aAAa;YA4Cb,gBAAgB;YAgChB,gBAAgB;IA0B9B,OAAO,CAAC,WAAW;IAoCnB,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;CACF"}