webcodecs-node 0.2.2

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 (455) hide show
  1. package/LICENSE +656 -0
  2. package/README.md +607 -0
  3. package/dist/AudioData.d.ts +6 -0
  4. package/dist/AudioData.d.ts.map +1 -0
  5. package/dist/AudioData.js +6 -0
  6. package/dist/AudioData.js.map +1 -0
  7. package/dist/AudioDecoder.d.ts +6 -0
  8. package/dist/AudioDecoder.d.ts.map +1 -0
  9. package/dist/AudioDecoder.js +6 -0
  10. package/dist/AudioDecoder.js.map +1 -0
  11. package/dist/AudioEncoder.d.ts +6 -0
  12. package/dist/AudioEncoder.d.ts.map +1 -0
  13. package/dist/AudioEncoder.js +6 -0
  14. package/dist/AudioEncoder.js.map +1 -0
  15. package/dist/EncodedAudioChunk.d.ts +6 -0
  16. package/dist/EncodedAudioChunk.d.ts.map +1 -0
  17. package/dist/EncodedAudioChunk.js +6 -0
  18. package/dist/EncodedAudioChunk.js.map +1 -0
  19. package/dist/EncodedVideoChunk.d.ts +6 -0
  20. package/dist/EncodedVideoChunk.d.ts.map +1 -0
  21. package/dist/EncodedVideoChunk.js +6 -0
  22. package/dist/EncodedVideoChunk.js.map +1 -0
  23. package/dist/FFmpegProcess.d.ts +6 -0
  24. package/dist/FFmpegProcess.d.ts.map +1 -0
  25. package/dist/FFmpegProcess.js +6 -0
  26. package/dist/FFmpegProcess.js.map +1 -0
  27. package/dist/HardwareAcceleration.d.ts +6 -0
  28. package/dist/HardwareAcceleration.d.ts.map +1 -0
  29. package/dist/HardwareAcceleration.js +6 -0
  30. package/dist/HardwareAcceleration.js.map +1 -0
  31. package/dist/ImageDecoder.d.ts +6 -0
  32. package/dist/ImageDecoder.d.ts.map +1 -0
  33. package/dist/ImageDecoder.js +6 -0
  34. package/dist/ImageDecoder.js.map +1 -0
  35. package/dist/Logger.d.ts +6 -0
  36. package/dist/Logger.d.ts.map +1 -0
  37. package/dist/Logger.js +6 -0
  38. package/dist/Logger.js.map +1 -0
  39. package/dist/MediaCapabilities.d.ts +9 -0
  40. package/dist/MediaCapabilities.d.ts.map +1 -0
  41. package/dist/MediaCapabilities.js +8 -0
  42. package/dist/MediaCapabilities.js.map +1 -0
  43. package/dist/VideoDecoder.d.ts +6 -0
  44. package/dist/VideoDecoder.d.ts.map +1 -0
  45. package/dist/VideoDecoder.js +6 -0
  46. package/dist/VideoDecoder.js.map +1 -0
  47. package/dist/VideoEncoder.d.ts +6 -0
  48. package/dist/VideoEncoder.d.ts.map +1 -0
  49. package/dist/VideoEncoder.js +6 -0
  50. package/dist/VideoEncoder.js.map +1 -0
  51. package/dist/VideoFrame.d.ts +10 -0
  52. package/dist/VideoFrame.d.ts.map +1 -0
  53. package/dist/VideoFrame.js +9 -0
  54. package/dist/VideoFrame.js.map +1 -0
  55. package/dist/__tests__/AudioData.test.d.ts +5 -0
  56. package/dist/__tests__/AudioData.test.d.ts.map +1 -0
  57. package/dist/__tests__/AudioData.test.js +179 -0
  58. package/dist/__tests__/AudioData.test.js.map +1 -0
  59. package/dist/__tests__/AudioDecoder.test.d.ts +5 -0
  60. package/dist/__tests__/AudioDecoder.test.d.ts.map +1 -0
  61. package/dist/__tests__/AudioDecoder.test.js +733 -0
  62. package/dist/__tests__/AudioDecoder.test.js.map +1 -0
  63. package/dist/__tests__/AudioEncoder.test.d.ts +5 -0
  64. package/dist/__tests__/AudioEncoder.test.d.ts.map +1 -0
  65. package/dist/__tests__/AudioEncoder.test.js +247 -0
  66. package/dist/__tests__/AudioEncoder.test.js.map +1 -0
  67. package/dist/__tests__/EncodedChunks.test.d.ts +5 -0
  68. package/dist/__tests__/EncodedChunks.test.d.ts.map +1 -0
  69. package/dist/__tests__/EncodedChunks.test.js +99 -0
  70. package/dist/__tests__/EncodedChunks.test.js.map +1 -0
  71. package/dist/__tests__/HardwareAcceleration.test.d.ts +5 -0
  72. package/dist/__tests__/HardwareAcceleration.test.d.ts.map +1 -0
  73. package/dist/__tests__/HardwareAcceleration.test.js +84 -0
  74. package/dist/__tests__/HardwareAcceleration.test.js.map +1 -0
  75. package/dist/__tests__/ImageDecoder.test.d.ts +5 -0
  76. package/dist/__tests__/ImageDecoder.test.d.ts.map +1 -0
  77. package/dist/__tests__/ImageDecoder.test.js +587 -0
  78. package/dist/__tests__/ImageDecoder.test.js.map +1 -0
  79. package/dist/__tests__/MediaCapabilities.test.d.ts +5 -0
  80. package/dist/__tests__/MediaCapabilities.test.d.ts.map +1 -0
  81. package/dist/__tests__/MediaCapabilities.test.js +346 -0
  82. package/dist/__tests__/MediaCapabilities.test.js.map +1 -0
  83. package/dist/__tests__/VideoDecoder.test.d.ts +5 -0
  84. package/dist/__tests__/VideoDecoder.test.d.ts.map +1 -0
  85. package/dist/__tests__/VideoDecoder.test.js +675 -0
  86. package/dist/__tests__/VideoDecoder.test.js.map +1 -0
  87. package/dist/__tests__/VideoEncoder.test.d.ts +5 -0
  88. package/dist/__tests__/VideoEncoder.test.d.ts.map +1 -0
  89. package/dist/__tests__/VideoEncoder.test.js +468 -0
  90. package/dist/__tests__/VideoEncoder.test.js.map +1 -0
  91. package/dist/__tests__/VideoFrame.test.d.ts +5 -0
  92. package/dist/__tests__/VideoFrame.test.d.ts.map +1 -0
  93. package/dist/__tests__/VideoFrame.test.js +243 -0
  94. package/dist/__tests__/VideoFrame.test.js.map +1 -0
  95. package/dist/__tests__/aac-utils.test.d.ts +2 -0
  96. package/dist/__tests__/aac-utils.test.d.ts.map +1 -0
  97. package/dist/__tests__/aac-utils.test.js +37 -0
  98. package/dist/__tests__/aac-utils.test.js.map +1 -0
  99. package/dist/__tests__/avc-utils.test.d.ts +2 -0
  100. package/dist/__tests__/avc-utils.test.d.ts.map +1 -0
  101. package/dist/__tests__/avc-utils.test.js +63 -0
  102. package/dist/__tests__/avc-utils.test.js.map +1 -0
  103. package/dist/__tests__/hevc-utils.test.d.ts +2 -0
  104. package/dist/__tests__/hevc-utils.test.d.ts.map +1 -0
  105. package/dist/__tests__/hevc-utils.test.js +78 -0
  106. package/dist/__tests__/hevc-utils.test.js.map +1 -0
  107. package/dist/capabilities/MediaCapabilities.d.ts +78 -0
  108. package/dist/capabilities/MediaCapabilities.d.ts.map +1 -0
  109. package/dist/capabilities/MediaCapabilities.js +276 -0
  110. package/dist/capabilities/MediaCapabilities.js.map +1 -0
  111. package/dist/capabilities/codecs.d.ts +72 -0
  112. package/dist/capabilities/codecs.d.ts.map +1 -0
  113. package/dist/capabilities/codecs.js +153 -0
  114. package/dist/capabilities/codecs.js.map +1 -0
  115. package/dist/capabilities/index.d.ts +7 -0
  116. package/dist/capabilities/index.d.ts.map +1 -0
  117. package/dist/capabilities/index.js +8 -0
  118. package/dist/capabilities/index.js.map +1 -0
  119. package/dist/capabilities/types.d.ts +77 -0
  120. package/dist/capabilities/types.d.ts.map +1 -0
  121. package/dist/capabilities/types.js +5 -0
  122. package/dist/capabilities/types.js.map +1 -0
  123. package/dist/core/AudioData.d.ts +36 -0
  124. package/dist/core/AudioData.d.ts.map +1 -0
  125. package/dist/core/AudioData.js +229 -0
  126. package/dist/core/AudioData.js.map +1 -0
  127. package/dist/core/EncodedAudioChunk.d.ts +26 -0
  128. package/dist/core/EncodedAudioChunk.d.ts.map +1 -0
  129. package/dist/core/EncodedAudioChunk.js +58 -0
  130. package/dist/core/EncodedAudioChunk.js.map +1 -0
  131. package/dist/core/EncodedVideoChunk.d.ts +23 -0
  132. package/dist/core/EncodedVideoChunk.d.ts.map +1 -0
  133. package/dist/core/EncodedVideoChunk.js +55 -0
  134. package/dist/core/EncodedVideoChunk.js.map +1 -0
  135. package/dist/core/VideoFrame.d.ts +61 -0
  136. package/dist/core/VideoFrame.d.ts.map +1 -0
  137. package/dist/core/VideoFrame.js +385 -0
  138. package/dist/core/VideoFrame.js.map +1 -0
  139. package/dist/core/index.d.ts +8 -0
  140. package/dist/core/index.d.ts.map +1 -0
  141. package/dist/core/index.js +8 -0
  142. package/dist/core/index.js.map +1 -0
  143. package/dist/debug-h264.d.ts +5 -0
  144. package/dist/debug-h264.d.ts.map +1 -0
  145. package/dist/debug-h264.js +103 -0
  146. package/dist/debug-h264.js.map +1 -0
  147. package/dist/decoders/AudioDecoder.d.ts +57 -0
  148. package/dist/decoders/AudioDecoder.d.ts.map +1 -0
  149. package/dist/decoders/AudioDecoder.js +333 -0
  150. package/dist/decoders/AudioDecoder.js.map +1 -0
  151. package/dist/decoders/ImageDecoder.d.ts +111 -0
  152. package/dist/decoders/ImageDecoder.d.ts.map +1 -0
  153. package/dist/decoders/ImageDecoder.js +686 -0
  154. package/dist/decoders/ImageDecoder.js.map +1 -0
  155. package/dist/decoders/VideoDecoder.d.ts +70 -0
  156. package/dist/decoders/VideoDecoder.d.ts.map +1 -0
  157. package/dist/decoders/VideoDecoder.js +410 -0
  158. package/dist/decoders/VideoDecoder.js.map +1 -0
  159. package/dist/decoders/index.d.ts +8 -0
  160. package/dist/decoders/index.d.ts.map +1 -0
  161. package/dist/decoders/index.js +7 -0
  162. package/dist/decoders/index.js.map +1 -0
  163. package/dist/demos/demo-audio-opus.d.ts +5 -0
  164. package/dist/demos/demo-audio-opus.d.ts.map +1 -0
  165. package/dist/demos/demo-audio-opus.js +107 -0
  166. package/dist/demos/demo-audio-opus.js.map +1 -0
  167. package/dist/demos/demo-audio.d.ts +10 -0
  168. package/dist/demos/demo-audio.d.ts.map +1 -0
  169. package/dist/demos/demo-audio.js +135 -0
  170. package/dist/demos/demo-audio.js.map +1 -0
  171. package/dist/demos/demo-conversion.d.ts +13 -0
  172. package/dist/demos/demo-conversion.d.ts.map +1 -0
  173. package/dist/demos/demo-conversion.js +301 -0
  174. package/dist/demos/demo-conversion.js.map +1 -0
  175. package/dist/demos/demo-h264.d.ts +7 -0
  176. package/dist/demos/demo-h264.d.ts.map +1 -0
  177. package/dist/demos/demo-h264.js +134 -0
  178. package/dist/demos/demo-h264.js.map +1 -0
  179. package/dist/demos/demo-hwaccel-conversion.d.ts +8 -0
  180. package/dist/demos/demo-hwaccel-conversion.d.ts.map +1 -0
  181. package/dist/demos/demo-hwaccel-conversion.js +161 -0
  182. package/dist/demos/demo-hwaccel-conversion.js.map +1 -0
  183. package/dist/demos/demo-hwaccel.d.ts +7 -0
  184. package/dist/demos/demo-hwaccel.d.ts.map +1 -0
  185. package/dist/demos/demo-hwaccel.js +51 -0
  186. package/dist/demos/demo-hwaccel.js.map +1 -0
  187. package/dist/demos/demo-image.d.ts +12 -0
  188. package/dist/demos/demo-image.d.ts.map +1 -0
  189. package/dist/demos/demo-image.js +178 -0
  190. package/dist/demos/demo-image.js.map +1 -0
  191. package/dist/demos/demo-mediabunny.d.ts +7 -0
  192. package/dist/demos/demo-mediabunny.d.ts.map +1 -0
  193. package/dist/demos/demo-mediabunny.js +78 -0
  194. package/dist/demos/demo-mediabunny.js.map +1 -0
  195. package/dist/demos/demo-pipeline.d.ts +8 -0
  196. package/dist/demos/demo-pipeline.d.ts.map +1 -0
  197. package/dist/demos/demo-pipeline.js +83 -0
  198. package/dist/demos/demo-pipeline.js.map +1 -0
  199. package/dist/demos/demo-samples.d.ts +9 -0
  200. package/dist/demos/demo-samples.d.ts.map +1 -0
  201. package/dist/demos/demo-samples.js +413 -0
  202. package/dist/demos/demo-samples.js.map +1 -0
  203. package/dist/demos/demo-streaming.d.ts +8 -0
  204. package/dist/demos/demo-streaming.d.ts.map +1 -0
  205. package/dist/demos/demo-streaming.js +299 -0
  206. package/dist/demos/demo-streaming.js.map +1 -0
  207. package/dist/demos/demo-webcodecs.d.ts +8 -0
  208. package/dist/demos/demo-webcodecs.d.ts.map +1 -0
  209. package/dist/demos/demo-webcodecs.js +316 -0
  210. package/dist/demos/demo-webcodecs.js.map +1 -0
  211. package/dist/demos/demo.d.ts +10 -0
  212. package/dist/demos/demo.d.ts.map +1 -0
  213. package/dist/demos/demo.js +123 -0
  214. package/dist/demos/demo.js.map +1 -0
  215. package/dist/encoders/AudioEncoder.d.ts +69 -0
  216. package/dist/encoders/AudioEncoder.d.ts.map +1 -0
  217. package/dist/encoders/AudioEncoder.js +425 -0
  218. package/dist/encoders/AudioEncoder.js.map +1 -0
  219. package/dist/encoders/VideoEncoder.d.ts +80 -0
  220. package/dist/encoders/VideoEncoder.d.ts.map +1 -0
  221. package/dist/encoders/VideoEncoder.js +386 -0
  222. package/dist/encoders/VideoEncoder.js.map +1 -0
  223. package/dist/encoders/codecs/av1.d.ts +31 -0
  224. package/dist/encoders/codecs/av1.d.ts.map +1 -0
  225. package/dist/encoders/codecs/av1.js +66 -0
  226. package/dist/encoders/codecs/av1.js.map +1 -0
  227. package/dist/encoders/codecs/h264.d.ts +28 -0
  228. package/dist/encoders/codecs/h264.d.ts.map +1 -0
  229. package/dist/encoders/codecs/h264.js +95 -0
  230. package/dist/encoders/codecs/h264.js.map +1 -0
  231. package/dist/encoders/codecs/hevc.d.ts +28 -0
  232. package/dist/encoders/codecs/hevc.d.ts.map +1 -0
  233. package/dist/encoders/codecs/hevc.js +73 -0
  234. package/dist/encoders/codecs/hevc.js.map +1 -0
  235. package/dist/encoders/codecs/index.d.ts +19 -0
  236. package/dist/encoders/codecs/index.d.ts.map +1 -0
  237. package/dist/encoders/codecs/index.js +60 -0
  238. package/dist/encoders/codecs/index.js.map +1 -0
  239. package/dist/encoders/codecs/vp9.d.ts +29 -0
  240. package/dist/encoders/codecs/vp9.d.ts.map +1 -0
  241. package/dist/encoders/codecs/vp9.js +58 -0
  242. package/dist/encoders/codecs/vp9.js.map +1 -0
  243. package/dist/encoders/index.d.ts +8 -0
  244. package/dist/encoders/index.d.ts.map +1 -0
  245. package/dist/encoders/index.js +8 -0
  246. package/dist/encoders/index.js.map +1 -0
  247. package/dist/ffmpeg/FFmpegProcess.d.ts +111 -0
  248. package/dist/ffmpeg/FFmpegProcess.d.ts.map +1 -0
  249. package/dist/ffmpeg/FFmpegProcess.js +543 -0
  250. package/dist/ffmpeg/FFmpegProcess.js.map +1 -0
  251. package/dist/ffmpeg/audio-codecs.d.ts +59 -0
  252. package/dist/ffmpeg/audio-codecs.d.ts.map +1 -0
  253. package/dist/ffmpeg/audio-codecs.js +99 -0
  254. package/dist/ffmpeg/audio-codecs.js.map +1 -0
  255. package/dist/ffmpeg/formats.d.ts +42 -0
  256. package/dist/ffmpeg/formats.d.ts.map +1 -0
  257. package/dist/ffmpeg/formats.js +147 -0
  258. package/dist/ffmpeg/formats.js.map +1 -0
  259. package/dist/ffmpeg/index.d.ts +9 -0
  260. package/dist/ffmpeg/index.d.ts.map +1 -0
  261. package/dist/ffmpeg/index.js +13 -0
  262. package/dist/ffmpeg/index.js.map +1 -0
  263. package/dist/ffmpeg/parsers/annexb.d.ts +88 -0
  264. package/dist/ffmpeg/parsers/annexb.d.ts.map +1 -0
  265. package/dist/ffmpeg/parsers/annexb.js +201 -0
  266. package/dist/ffmpeg/parsers/annexb.js.map +1 -0
  267. package/dist/ffmpeg/parsers/index.d.ts +6 -0
  268. package/dist/ffmpeg/parsers/index.d.ts.map +1 -0
  269. package/dist/ffmpeg/parsers/index.js +8 -0
  270. package/dist/ffmpeg/parsers/index.js.map +1 -0
  271. package/dist/ffmpeg/parsers/ivf.d.ts +54 -0
  272. package/dist/ffmpeg/parsers/ivf.d.ts.map +1 -0
  273. package/dist/ffmpeg/parsers/ivf.js +109 -0
  274. package/dist/ffmpeg/parsers/ivf.js.map +1 -0
  275. package/dist/ffmpeg/types.d.ts +85 -0
  276. package/dist/ffmpeg/types.d.ts.map +1 -0
  277. package/dist/ffmpeg/types.js +8 -0
  278. package/dist/ffmpeg/types.js.map +1 -0
  279. package/dist/formats/audio-formats.d.ts +61 -0
  280. package/dist/formats/audio-formats.d.ts.map +1 -0
  281. package/dist/formats/audio-formats.js +113 -0
  282. package/dist/formats/audio-formats.js.map +1 -0
  283. package/dist/formats/color-space.d.ts +35 -0
  284. package/dist/formats/color-space.d.ts.map +1 -0
  285. package/dist/formats/color-space.js +62 -0
  286. package/dist/formats/color-space.js.map +1 -0
  287. package/dist/formats/conversions/frame-converter.d.ts +42 -0
  288. package/dist/formats/conversions/frame-converter.d.ts.map +1 -0
  289. package/dist/formats/conversions/frame-converter.js +244 -0
  290. package/dist/formats/conversions/frame-converter.js.map +1 -0
  291. package/dist/formats/conversions/index.d.ts +8 -0
  292. package/dist/formats/conversions/index.d.ts.map +1 -0
  293. package/dist/formats/conversions/index.js +10 -0
  294. package/dist/formats/conversions/index.js.map +1 -0
  295. package/dist/formats/index.d.ts +9 -0
  296. package/dist/formats/index.d.ts.map +1 -0
  297. package/dist/formats/index.js +14 -0
  298. package/dist/formats/index.js.map +1 -0
  299. package/dist/formats/parsers/index.d.ts +5 -0
  300. package/dist/formats/parsers/index.d.ts.map +1 -0
  301. package/dist/formats/parsers/index.js +5 -0
  302. package/dist/formats/parsers/index.js.map +1 -0
  303. package/dist/formats/parsers/webp.d.ts +16 -0
  304. package/dist/formats/parsers/webp.d.ts.map +1 -0
  305. package/dist/formats/parsers/webp.js +116 -0
  306. package/dist/formats/parsers/webp.js.map +1 -0
  307. package/dist/formats/pixel-formats.d.ts +41 -0
  308. package/dist/formats/pixel-formats.d.ts.map +1 -0
  309. package/dist/formats/pixel-formats.js +113 -0
  310. package/dist/formats/pixel-formats.js.map +1 -0
  311. package/dist/hardware/HardwareAcceleration.d.ts +6 -0
  312. package/dist/hardware/HardwareAcceleration.d.ts.map +1 -0
  313. package/dist/hardware/HardwareAcceleration.js +6 -0
  314. package/dist/hardware/HardwareAcceleration.js.map +1 -0
  315. package/dist/hardware/decoder-args.d.ts +25 -0
  316. package/dist/hardware/decoder-args.d.ts.map +1 -0
  317. package/dist/hardware/decoder-args.js +84 -0
  318. package/dist/hardware/decoder-args.js.map +1 -0
  319. package/dist/hardware/detection.d.ts +39 -0
  320. package/dist/hardware/detection.d.ts.map +1 -0
  321. package/dist/hardware/detection.js +178 -0
  322. package/dist/hardware/detection.js.map +1 -0
  323. package/dist/hardware/encoder-args.d.ts +38 -0
  324. package/dist/hardware/encoder-args.d.ts.map +1 -0
  325. package/dist/hardware/encoder-args.js +177 -0
  326. package/dist/hardware/encoder-args.js.map +1 -0
  327. package/dist/hardware/index.d.ts +12 -0
  328. package/dist/hardware/index.d.ts.map +1 -0
  329. package/dist/hardware/index.js +14 -0
  330. package/dist/hardware/index.js.map +1 -0
  331. package/dist/hardware/types.d.ts +29 -0
  332. package/dist/hardware/types.d.ts.map +1 -0
  333. package/dist/hardware/types.js +58 -0
  334. package/dist/hardware/types.js.map +1 -0
  335. package/dist/index.d.ts +44 -0
  336. package/dist/index.d.ts.map +1 -0
  337. package/dist/index.js +37 -0
  338. package/dist/index.js.map +1 -0
  339. package/dist/mediabunny/FFmpegAudioDecoder.d.ts +37 -0
  340. package/dist/mediabunny/FFmpegAudioDecoder.d.ts.map +1 -0
  341. package/dist/mediabunny/FFmpegAudioDecoder.js +254 -0
  342. package/dist/mediabunny/FFmpegAudioDecoder.js.map +1 -0
  343. package/dist/mediabunny/FFmpegAudioEncoder.d.ts +77 -0
  344. package/dist/mediabunny/FFmpegAudioEncoder.d.ts.map +1 -0
  345. package/dist/mediabunny/FFmpegAudioEncoder.js +484 -0
  346. package/dist/mediabunny/FFmpegAudioEncoder.js.map +1 -0
  347. package/dist/mediabunny/FFmpegVideoDecoder.d.ts +58 -0
  348. package/dist/mediabunny/FFmpegVideoDecoder.d.ts.map +1 -0
  349. package/dist/mediabunny/FFmpegVideoDecoder.js +366 -0
  350. package/dist/mediabunny/FFmpegVideoDecoder.js.map +1 -0
  351. package/dist/mediabunny/FFmpegVideoEncoder.d.ts +77 -0
  352. package/dist/mediabunny/FFmpegVideoEncoder.d.ts.map +1 -0
  353. package/dist/mediabunny/FFmpegVideoEncoder.js +551 -0
  354. package/dist/mediabunny/FFmpegVideoEncoder.js.map +1 -0
  355. package/dist/mediabunny/index.d.ts +21 -0
  356. package/dist/mediabunny/index.d.ts.map +1 -0
  357. package/dist/mediabunny/index.js +33 -0
  358. package/dist/mediabunny/index.js.map +1 -0
  359. package/dist/polyfill.d.ts +27 -0
  360. package/dist/polyfill.d.ts.map +1 -0
  361. package/dist/polyfill.js +78 -0
  362. package/dist/polyfill.js.map +1 -0
  363. package/dist/polyfills/CanvasRenderingContext2DPolyfill.d.ts +72 -0
  364. package/dist/polyfills/CanvasRenderingContext2DPolyfill.d.ts.map +1 -0
  365. package/dist/polyfills/CanvasRenderingContext2DPolyfill.js +293 -0
  366. package/dist/polyfills/CanvasRenderingContext2DPolyfill.js.map +1 -0
  367. package/dist/polyfills/ImageDataPolyfill.d.ts +12 -0
  368. package/dist/polyfills/ImageDataPolyfill.d.ts.map +1 -0
  369. package/dist/polyfills/ImageDataPolyfill.js +22 -0
  370. package/dist/polyfills/ImageDataPolyfill.js.map +1 -0
  371. package/dist/polyfills/OffscreenCanvas.d.ts +15 -0
  372. package/dist/polyfills/OffscreenCanvas.d.ts.map +1 -0
  373. package/dist/polyfills/OffscreenCanvas.js +35 -0
  374. package/dist/polyfills/OffscreenCanvas.js.map +1 -0
  375. package/dist/polyfills/OffscreenCanvasPolyfill.d.ts +16 -0
  376. package/dist/polyfills/OffscreenCanvasPolyfill.d.ts.map +1 -0
  377. package/dist/polyfills/OffscreenCanvasPolyfill.js +46 -0
  378. package/dist/polyfills/OffscreenCanvasPolyfill.js.map +1 -0
  379. package/dist/polyfills/VideoFramePolyfill.d.ts +44 -0
  380. package/dist/polyfills/VideoFramePolyfill.d.ts.map +1 -0
  381. package/dist/polyfills/VideoFramePolyfill.js +98 -0
  382. package/dist/polyfills/VideoFramePolyfill.js.map +1 -0
  383. package/dist/tools/generate-capabilities-profile.d.ts +2 -0
  384. package/dist/tools/generate-capabilities-profile.d.ts.map +1 -0
  385. package/dist/tools/generate-capabilities-profile.js +63 -0
  386. package/dist/tools/generate-capabilities-profile.js.map +1 -0
  387. package/dist/types/audio.d.ts +26 -0
  388. package/dist/types/audio.d.ts.map +1 -0
  389. package/dist/types/audio.js +5 -0
  390. package/dist/types/audio.js.map +1 -0
  391. package/dist/types/common.d.ts +68 -0
  392. package/dist/types/common.d.ts.map +1 -0
  393. package/dist/types/common.js +70 -0
  394. package/dist/types/common.js.map +1 -0
  395. package/dist/types/geometry.d.ts +35 -0
  396. package/dist/types/geometry.d.ts.map +1 -0
  397. package/dist/types/geometry.js +34 -0
  398. package/dist/types/geometry.js.map +1 -0
  399. package/dist/types/index.d.ts +8 -0
  400. package/dist/types/index.d.ts.map +1 -0
  401. package/dist/types/index.js +8 -0
  402. package/dist/types/index.js.map +1 -0
  403. package/dist/types/video.d.ts +43 -0
  404. package/dist/types/video.d.ts.map +1 -0
  405. package/dist/types/video.js +5 -0
  406. package/dist/types/video.js.map +1 -0
  407. package/dist/types.d.ts +6 -0
  408. package/dist/types.d.ts.map +1 -0
  409. package/dist/types.js +6 -0
  410. package/dist/types.js.map +1 -0
  411. package/dist/utils/aac.d.ts +26 -0
  412. package/dist/utils/aac.d.ts.map +1 -0
  413. package/dist/utils/aac.js +129 -0
  414. package/dist/utils/aac.js.map +1 -0
  415. package/dist/utils/avc.d.ts +39 -0
  416. package/dist/utils/avc.d.ts.map +1 -0
  417. package/dist/utils/avc.js +225 -0
  418. package/dist/utils/avc.js.map +1 -0
  419. package/dist/utils/buffer.d.ts +25 -0
  420. package/dist/utils/buffer.d.ts.map +1 -0
  421. package/dist/utils/buffer.js +73 -0
  422. package/dist/utils/buffer.js.map +1 -0
  423. package/dist/utils/hevc.d.ts +27 -0
  424. package/dist/utils/hevc.d.ts.map +1 -0
  425. package/dist/utils/hevc.js +239 -0
  426. package/dist/utils/hevc.js.map +1 -0
  427. package/dist/utils/index.d.ts +11 -0
  428. package/dist/utils/index.d.ts.map +1 -0
  429. package/dist/utils/index.js +16 -0
  430. package/dist/utils/index.js.map +1 -0
  431. package/dist/utils/logger.d.ts +55 -0
  432. package/dist/utils/logger.d.ts.map +1 -0
  433. package/dist/utils/logger.js +110 -0
  434. package/dist/utils/logger.js.map +1 -0
  435. package/dist/utils/type-guards.d.ts +50 -0
  436. package/dist/utils/type-guards.d.ts.map +1 -0
  437. package/dist/utils/type-guards.js +49 -0
  438. package/dist/utils/type-guards.js.map +1 -0
  439. package/dist/utils/validation.d.ts +32 -0
  440. package/dist/utils/validation.d.ts.map +1 -0
  441. package/dist/utils/validation.js +66 -0
  442. package/dist/utils/validation.js.map +1 -0
  443. package/docs/api.md +506 -0
  444. package/docs/codecs.md +382 -0
  445. package/docs/configuration.md +442 -0
  446. package/examples/README.md +100 -0
  447. package/examples/audio-encoding.ts +85 -0
  448. package/examples/hardware-decoding.ts +245 -0
  449. package/examples/hardware-encoding.ts +231 -0
  450. package/examples/image-decoding.ts +145 -0
  451. package/examples/streaming.ts +151 -0
  452. package/examples/transparent-video.ts +162 -0
  453. package/examples/video-decoding.ts +107 -0
  454. package/examples/video-encoding.ts +93 -0
  455. package/package.json +105 -0
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Demo: Opus audio encoding and decoding with WebCodecs API
3
+ */
4
+ import { AudioData, AudioEncoder, AudioDecoder, } from '../index.js';
5
+ async function main() {
6
+ console.log('WebCodecs Opus Audio Demo');
7
+ console.log('=========================\n');
8
+ // Opus requires 48kHz
9
+ const sampleRate = 48000;
10
+ const numberOfChannels = 2;
11
+ const duration = 1; // 1 second
12
+ const numberOfFrames = sampleRate * duration;
13
+ const codec = 'opus';
14
+ // Check encoder support
15
+ const encoderSupport = await AudioEncoder.isConfigSupported({
16
+ codec,
17
+ sampleRate,
18
+ numberOfChannels,
19
+ bitrate: 64000,
20
+ });
21
+ console.log(`Encoder support for ${codec}: ${encoderSupport.supported}`);
22
+ // Check decoder support
23
+ const decoderSupport = await AudioDecoder.isConfigSupported({
24
+ codec,
25
+ sampleRate,
26
+ numberOfChannels,
27
+ });
28
+ console.log(`Decoder support for ${codec}: ${decoderSupport.supported}\n`);
29
+ // Storage
30
+ const encodedChunks = [];
31
+ const decodedSamples = [];
32
+ // Create encoder
33
+ const encoder = new AudioEncoder({
34
+ output: (chunk, metadata) => {
35
+ console.log(`Encoded chunk: type=${chunk.type}, bytes=${chunk.byteLength}`);
36
+ encodedChunks.push(chunk);
37
+ },
38
+ error: (err) => {
39
+ console.error('Encoder error:', err);
40
+ },
41
+ });
42
+ encoder.configure({
43
+ codec,
44
+ sampleRate,
45
+ numberOfChannels,
46
+ bitrate: 64000,
47
+ });
48
+ console.log(`Generating ${duration} second of audio...`);
49
+ // Generate stereo sine wave
50
+ const frequency = 440;
51
+ const audioBuffer = new Float32Array(numberOfFrames * numberOfChannels);
52
+ for (let frame = 0; frame < numberOfFrames; frame++) {
53
+ const t = frame / sampleRate;
54
+ const sample = Math.sin(2 * Math.PI * frequency * t) * 0.5;
55
+ audioBuffer[frame * 2] = sample;
56
+ audioBuffer[frame * 2 + 1] = sample;
57
+ }
58
+ const audioData = new AudioData({
59
+ format: 'f32',
60
+ sampleRate,
61
+ numberOfChannels,
62
+ numberOfFrames,
63
+ timestamp: 0,
64
+ data: audioBuffer,
65
+ });
66
+ console.log(`Created AudioData: ${audioData.numberOfFrames} frames`);
67
+ console.log('\nEncoding...');
68
+ encoder.encode(audioData);
69
+ audioData.close();
70
+ await encoder.flush();
71
+ console.log(`Encoded ${encodedChunks.length} chunks\n`);
72
+ // Decode
73
+ console.log('Decoding...');
74
+ const decoder = new AudioDecoder({
75
+ output: (data) => {
76
+ decodedSamples.push(data);
77
+ },
78
+ error: (err) => {
79
+ console.error('Decoder error:', err);
80
+ },
81
+ });
82
+ decoder.configure({
83
+ codec,
84
+ sampleRate,
85
+ numberOfChannels,
86
+ });
87
+ for (const chunk of encodedChunks) {
88
+ decoder.decode(chunk);
89
+ }
90
+ await decoder.flush();
91
+ const totalDecodedFrames = decodedSamples.reduce((sum, data) => sum + data.numberOfFrames, 0);
92
+ console.log(`\nDecoded ${decodedSamples.length} AudioData objects`);
93
+ console.log(`Total decoded frames: ${totalDecodedFrames}`);
94
+ const inputDuration = (numberOfFrames / sampleRate) * 1000;
95
+ const outputDuration = (totalDecodedFrames / sampleRate) * 1000;
96
+ console.log(`\nInput: ${inputDuration.toFixed(2)}ms`);
97
+ console.log(`Output: ${outputDuration.toFixed(2)}ms`);
98
+ if (Math.abs(inputDuration - outputDuration) < 100) {
99
+ console.log('\nSUCCESS: Opus audio round-trip completed!');
100
+ }
101
+ encoder.close();
102
+ decoder.close();
103
+ decodedSamples.forEach((d) => d.close());
104
+ console.log('\nDemo complete!');
105
+ }
106
+ main().catch(console.error);
107
+ //# sourceMappingURL=demo-audio-opus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-audio-opus.js","sourceRoot":"","sources":["../../src/demos/demo-audio-opus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Demo: Audio encoding and decoding with WebCodecs API in Node.js
3
+ *
4
+ * This demo shows how to:
5
+ * 1. Create AudioData from raw PCM samples
6
+ * 2. Encode audio to AAC
7
+ * 3. Decode encoded chunks back to AudioData
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=demo-audio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-audio.d.ts","sourceRoot":"","sources":["../../src/demos/demo-audio.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Demo: Audio encoding and decoding with WebCodecs API in Node.js
3
+ *
4
+ * This demo shows how to:
5
+ * 1. Create AudioData from raw PCM samples
6
+ * 2. Encode audio to AAC
7
+ * 3. Decode encoded chunks back to AudioData
8
+ */
9
+ import { AudioData, AudioEncoder, AudioDecoder, } from '../index.js';
10
+ async function main() {
11
+ console.log('WebCodecs Audio Demo');
12
+ console.log('====================\n');
13
+ // Configuration
14
+ const sampleRate = 44100;
15
+ const numberOfChannels = 2;
16
+ const duration = 1; // 1 second
17
+ const numberOfFrames = sampleRate * duration;
18
+ const codec = 'aac';
19
+ // Check encoder support
20
+ const encoderSupport = await AudioEncoder.isConfigSupported({
21
+ codec,
22
+ sampleRate,
23
+ numberOfChannels,
24
+ bitrate: 128000,
25
+ });
26
+ console.log(`Encoder support for ${codec}: ${encoderSupport.supported}`);
27
+ // Check decoder support
28
+ const decoderSupport = await AudioDecoder.isConfigSupported({
29
+ codec,
30
+ sampleRate,
31
+ numberOfChannels,
32
+ });
33
+ console.log(`Decoder support for ${codec}: ${decoderSupport.supported}\n`);
34
+ // Storage for encoded chunks and decoded data
35
+ const encodedChunks = [];
36
+ const decodedSamples = [];
37
+ // Create encoder
38
+ const encoder = new AudioEncoder({
39
+ output: (chunk, metadata) => {
40
+ console.log(`Encoded chunk: type=${chunk.type}, timestamp=${chunk.timestamp}, bytes=${chunk.byteLength}`);
41
+ if (metadata?.decoderConfig) {
42
+ console.log(` Decoder config: ${metadata.decoderConfig.codec}`);
43
+ }
44
+ encodedChunks.push(chunk);
45
+ },
46
+ error: (err) => {
47
+ console.error('Encoder error:', err);
48
+ },
49
+ });
50
+ // Configure encoder
51
+ encoder.configure({
52
+ codec,
53
+ sampleRate,
54
+ numberOfChannels,
55
+ bitrate: 128000,
56
+ });
57
+ console.log('Encoder state:', encoder.state);
58
+ console.log(`\nGenerating ${duration} second of audio (${numberOfFrames} frames)...`);
59
+ // Generate audio data (sine wave)
60
+ const frequency = 440; // A4 note
61
+ const audioBuffer = new Float32Array(numberOfFrames * numberOfChannels);
62
+ for (let frame = 0; frame < numberOfFrames; frame++) {
63
+ const t = frame / sampleRate;
64
+ const sample = Math.sin(2 * Math.PI * frequency * t) * 0.5;
65
+ // Interleaved stereo
66
+ audioBuffer[frame * 2] = sample; // Left
67
+ audioBuffer[frame * 2 + 1] = sample; // Right
68
+ }
69
+ // Create AudioData
70
+ const audioData = new AudioData({
71
+ format: 'f32',
72
+ sampleRate,
73
+ numberOfChannels,
74
+ numberOfFrames,
75
+ timestamp: 0,
76
+ data: audioBuffer,
77
+ });
78
+ console.log(`Created AudioData: ${audioData.numberOfFrames} frames, ${audioData.duration}us duration`);
79
+ // Encode
80
+ console.log('\nEncoding...');
81
+ encoder.encode(audioData);
82
+ audioData.close();
83
+ // Flush encoder
84
+ console.log('Flushing encoder...');
85
+ await encoder.flush();
86
+ console.log(`Encoded ${encodedChunks.length} chunks\n`);
87
+ // Now decode the chunks
88
+ console.log('Creating decoder...');
89
+ const decoder = new AudioDecoder({
90
+ output: (data) => {
91
+ console.log(`Decoded audio: ${data.numberOfFrames} frames, ${data.sampleRate}Hz, ${data.numberOfChannels}ch`);
92
+ decodedSamples.push(data);
93
+ },
94
+ error: (err) => {
95
+ console.error('Decoder error:', err);
96
+ },
97
+ });
98
+ // Configure decoder
99
+ decoder.configure({
100
+ codec,
101
+ sampleRate,
102
+ numberOfChannels,
103
+ });
104
+ console.log('Decoder state:', decoder.state);
105
+ console.log(`\nDecoding ${encodedChunks.length} chunks...`);
106
+ // Decode all chunks
107
+ for (const chunk of encodedChunks) {
108
+ decoder.decode(chunk);
109
+ }
110
+ // Flush decoder
111
+ console.log('Flushing decoder...');
112
+ await decoder.flush();
113
+ // Calculate total decoded frames
114
+ const totalDecodedFrames = decodedSamples.reduce((sum, data) => sum + data.numberOfFrames, 0);
115
+ console.log(`\nDecoded ${decodedSamples.length} AudioData objects`);
116
+ console.log(`Total decoded frames: ${totalDecodedFrames}`);
117
+ // Compare input/output
118
+ const inputDuration = (numberOfFrames / sampleRate) * 1000;
119
+ const outputDuration = (totalDecodedFrames / sampleRate) * 1000;
120
+ console.log(`\nInput duration: ${inputDuration.toFixed(2)}ms`);
121
+ console.log(`Output duration: ${outputDuration.toFixed(2)}ms`);
122
+ if (Math.abs(inputDuration - outputDuration) < 100) {
123
+ console.log('\nSUCCESS: Audio round-trip completed!');
124
+ }
125
+ else {
126
+ console.log('\nWARNING: Duration mismatch (may be due to codec padding)');
127
+ }
128
+ // Cleanup
129
+ encoder.close();
130
+ decoder.close();
131
+ decodedSamples.forEach((d) => d.close());
132
+ console.log('\nDemo complete!');
133
+ }
134
+ main().catch(console.error);
135
+ //# sourceMappingURL=demo-audio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-audio.js","sourceRoot":"","sources":["../../src/demos/demo-audio.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Demo: Real File Conversion with Mediabunny + WebCodecs
3
+ *
4
+ * This demo shows how to:
5
+ * 1. Use WebCodecs API (VideoEncoder, AudioEncoder, etc.) with Mediabunny
6
+ * 2. Convert MP4 to WebM with progress tracking
7
+ * 3. Handle video resizing, codec conversion, and audio transcoding
8
+ *
9
+ * The WebCodecs polyfill makes VideoFrame, AudioData, EncodedVideoChunk, etc.
10
+ * available globally, so Mediabunny uses our FFmpeg-backed implementations.
11
+ */
12
+ import '../polyfill.js';
13
+ //# sourceMappingURL=demo-conversion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-conversion.d.ts","sourceRoot":"","sources":["../../src/demos/demo-conversion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAqBH,OAAO,gBAAgB,CAAC"}
@@ -0,0 +1,301 @@
1
+ /**
2
+ * Demo: Real File Conversion with Mediabunny + WebCodecs
3
+ *
4
+ * This demo shows how to:
5
+ * 1. Use WebCodecs API (VideoEncoder, AudioEncoder, etc.) with Mediabunny
6
+ * 2. Convert MP4 to WebM with progress tracking
7
+ * 3. Handle video resizing, codec conversion, and audio transcoding
8
+ *
9
+ * The WebCodecs polyfill makes VideoFrame, AudioData, EncodedVideoChunk, etc.
10
+ * available globally, so Mediabunny uses our FFmpeg-backed implementations.
11
+ */
12
+ import * as fs from 'fs';
13
+ import * as path from 'path';
14
+ import { execSync } from 'child_process';
15
+ import { ReadableStream, WritableStream, TransformStream } from 'stream/web';
16
+ // Polyfill Web Streams for Node.js < 18.x or environments without them
17
+ if (typeof globalThis.WritableStream === 'undefined') {
18
+ globalThis.WritableStream = WritableStream;
19
+ }
20
+ if (typeof globalThis.ReadableStream === 'undefined') {
21
+ globalThis.ReadableStream = ReadableStream;
22
+ }
23
+ if (typeof globalThis.TransformStream === 'undefined') {
24
+ globalThis.TransformStream = TransformStream;
25
+ }
26
+ // Install WebCodecs polyfill - this provides VideoFrame, AudioData, EncodedVideoChunk, etc.
27
+ // Mediabunny will use these global classes for encoding/decoding
28
+ // The side-effect import ensures auto-install happens before any other imports
29
+ import '../polyfill.js';
30
+ // Mediabunny imports
31
+ import { Input, Output, Conversion, FilePathSource, FilePathTarget, WebMOutputFormat, ALL_FORMATS, } from 'mediabunny';
32
+ // Register our FFmpeg-based encoders/decoders
33
+ import { registerFFmpegCoders } from '../mediabunny/index.js';
34
+ // Register FFmpeg coders before using Mediabunny
35
+ registerFFmpegCoders();
36
+ const testDir = '/tmp/webcodecs-test-conversion';
37
+ /**
38
+ * Create a sample video file for testing
39
+ */
40
+ async function createSampleVideo() {
41
+ // Create test directory
42
+ if (!fs.existsSync(testDir)) {
43
+ fs.mkdirSync(testDir, { recursive: true });
44
+ }
45
+ const inputPath = path.join(testDir, 'sample.mp4');
46
+ console.log('Creating sample video...');
47
+ // Create a 5-second test video with testsrc and sine wave audio
48
+ // 640x480, 30fps, H.264 video + AAC audio
49
+ execSync(`ffmpeg -y ` +
50
+ `-f lavfi -i "testsrc=duration=5:size=640x480:rate=30" ` +
51
+ `-f lavfi -i "sine=frequency=440:duration=5" ` +
52
+ `-c:v libx264 -preset ultrafast -c:a aac -b:a 128k ` +
53
+ `-pix_fmt yuv420p ` +
54
+ `"${inputPath}" 2>/dev/null`);
55
+ const stats = fs.statSync(inputPath);
56
+ console.log(` Created: ${inputPath}`);
57
+ console.log(` Size: ${(stats.size / 1024).toFixed(1)} KB`);
58
+ return inputPath;
59
+ }
60
+ /**
61
+ * Get file info using ffprobe
62
+ */
63
+ function getFileInfo(filePath) {
64
+ const output = execSync(`ffprobe -v quiet -print_format json -show_format -show_streams "${filePath}"`, { encoding: 'utf-8' });
65
+ const info = JSON.parse(output);
66
+ const videoStream = info.streams?.find((s) => s.codec_type === 'video');
67
+ const audioStream = info.streams?.find((s) => s.codec_type === 'audio');
68
+ return {
69
+ duration: parseFloat(info.format?.duration || '0'),
70
+ videoCodec: videoStream?.codec_name || 'unknown',
71
+ audioCodec: audioStream?.codec_name || 'unknown',
72
+ width: videoStream?.width || 0,
73
+ height: videoStream?.height || 0,
74
+ };
75
+ }
76
+ /**
77
+ * Demo 1: Basic MP4 to WebM conversion
78
+ */
79
+ async function demo1_BasicConversion(inputPath) {
80
+ console.log('\n=== Demo 1: Basic MP4 to WebM Conversion ===\n');
81
+ const outputPath = path.join(testDir, 'output_basic.webm');
82
+ // Create input from file
83
+ const input = new Input({
84
+ formats: ALL_FORMATS,
85
+ source: new FilePathSource(inputPath),
86
+ });
87
+ // Create output with WebM format
88
+ const output = new Output({
89
+ format: new WebMOutputFormat(),
90
+ target: new FilePathTarget(outputPath),
91
+ });
92
+ // Initialize conversion
93
+ const conversion = await Conversion.init({
94
+ input,
95
+ output,
96
+ showWarnings: false,
97
+ });
98
+ console.log('Conversion initialized:');
99
+ console.log(` Is valid: ${conversion.isValid}`);
100
+ console.log(` Utilized tracks: ${conversion.utilizedTracks.length}`);
101
+ console.log(` Discarded tracks: ${conversion.discardedTracks.length}`);
102
+ if (conversion.discardedTracks.length > 0) {
103
+ for (const { track, reason } of conversion.discardedTracks) {
104
+ console.log(` - ${track.type}: ${reason}`);
105
+ }
106
+ }
107
+ // Add progress tracking
108
+ let lastProgress = 0;
109
+ conversion.onProgress = (progress) => {
110
+ const percent = Math.floor(progress * 100);
111
+ if (percent > lastProgress) {
112
+ process.stdout.write(`\r Converting: ${percent}%`);
113
+ lastProgress = percent;
114
+ }
115
+ };
116
+ // Execute conversion
117
+ console.log(' Converting: 0%');
118
+ await conversion.execute();
119
+ console.log('\n Done!');
120
+ // Verify output
121
+ const inputInfo = getFileInfo(inputPath);
122
+ const outputInfo = getFileInfo(outputPath);
123
+ console.log('\n Input file:');
124
+ console.log(` Codec: ${inputInfo.videoCodec}/${inputInfo.audioCodec}`);
125
+ console.log(` Size: ${inputInfo.width}x${inputInfo.height}`);
126
+ console.log(` Duration: ${inputInfo.duration.toFixed(2)}s`);
127
+ console.log('\n Output file:');
128
+ console.log(` Codec: ${outputInfo.videoCodec}/${outputInfo.audioCodec}`);
129
+ console.log(` Size: ${outputInfo.width}x${outputInfo.height}`);
130
+ console.log(` Duration: ${outputInfo.duration.toFixed(2)}s`);
131
+ const outputStats = fs.statSync(outputPath);
132
+ console.log(` File size: ${(outputStats.size / 1024).toFixed(1)} KB`);
133
+ // Clean up
134
+ input.dispose();
135
+ }
136
+ /**
137
+ * Demo 2: Conversion with resizing (using OffscreenCanvas polyfill)
138
+ */
139
+ async function demo2_ResizedConversion(inputPath) {
140
+ console.log('\n=== Demo 2: Conversion with Resizing (640x480 -> 320x240) ===\n');
141
+ const outputPath = path.join(testDir, 'output_resized.webm');
142
+ const input = new Input({
143
+ formats: ALL_FORMATS,
144
+ source: new FilePathSource(inputPath),
145
+ });
146
+ const output = new Output({
147
+ format: new WebMOutputFormat(),
148
+ target: new FilePathTarget(outputPath),
149
+ });
150
+ const conversion = await Conversion.init({
151
+ input,
152
+ output,
153
+ video: {
154
+ width: 320,
155
+ height: 240,
156
+ fit: 'fill',
157
+ },
158
+ showWarnings: false,
159
+ });
160
+ console.log(` Is valid: ${conversion.isValid}`);
161
+ console.log(` Utilized tracks: ${conversion.utilizedTracks.length}`);
162
+ // Progress tracking
163
+ let lastProgress = 0;
164
+ conversion.onProgress = (progress) => {
165
+ const percent = Math.floor(progress * 100);
166
+ if (percent > lastProgress) {
167
+ process.stdout.write(`\r Converting: ${percent}%`);
168
+ lastProgress = percent;
169
+ }
170
+ };
171
+ console.log(' Converting: 0%');
172
+ await conversion.execute();
173
+ console.log('\n Done!');
174
+ // Verify output
175
+ const outputInfo = getFileInfo(outputPath);
176
+ console.log(`\n Output size: ${outputInfo.width}x${outputInfo.height}`);
177
+ console.log(` Duration: ${outputInfo.duration.toFixed(2)}s`);
178
+ const outputStats = fs.statSync(outputPath);
179
+ console.log(` File size: ${(outputStats.size / 1024).toFixed(1)} KB`);
180
+ input.dispose();
181
+ }
182
+ /**
183
+ * Demo 3: Conversion with trimming
184
+ */
185
+ async function demo3_TrimmedConversion(inputPath) {
186
+ console.log('\n=== Demo 3: Conversion with Trimming (1s to 3s) ===\n');
187
+ const outputPath = path.join(testDir, 'output_trimmed.webm');
188
+ const input = new Input({
189
+ formats: ALL_FORMATS,
190
+ source: new FilePathSource(inputPath),
191
+ });
192
+ const output = new Output({
193
+ format: new WebMOutputFormat(),
194
+ target: new FilePathTarget(outputPath),
195
+ });
196
+ const conversion = await Conversion.init({
197
+ input,
198
+ output,
199
+ trim: {
200
+ start: 1, // Start at 1 second
201
+ end: 3, // End at 3 seconds
202
+ },
203
+ showWarnings: false,
204
+ });
205
+ console.log(` Is valid: ${conversion.isValid}`);
206
+ // Progress tracking
207
+ let lastProgress = 0;
208
+ conversion.onProgress = (progress) => {
209
+ const percent = Math.floor(progress * 100);
210
+ if (percent > lastProgress) {
211
+ process.stdout.write(`\r Converting: ${percent}%`);
212
+ lastProgress = percent;
213
+ }
214
+ };
215
+ console.log(' Converting: 0%');
216
+ await conversion.execute();
217
+ console.log('\n Done!');
218
+ // Verify output
219
+ const outputInfo = getFileInfo(outputPath);
220
+ console.log(`\n Output duration: ${outputInfo.duration.toFixed(2)}s (expected ~2s)`);
221
+ const outputStats = fs.statSync(outputPath);
222
+ console.log(` File size: ${(outputStats.size / 1024).toFixed(1)} KB`);
223
+ input.dispose();
224
+ }
225
+ /**
226
+ * Demo 4: Audio-only extraction
227
+ */
228
+ async function demo4_AudioOnlyConversion(inputPath) {
229
+ console.log('\n=== Demo 4: Audio-Only Extraction ===\n');
230
+ const outputPath = path.join(testDir, 'output_audio.webm');
231
+ const input = new Input({
232
+ formats: ALL_FORMATS,
233
+ source: new FilePathSource(inputPath),
234
+ });
235
+ const output = new Output({
236
+ format: new WebMOutputFormat(),
237
+ target: new FilePathTarget(outputPath),
238
+ });
239
+ const conversion = await Conversion.init({
240
+ input,
241
+ output,
242
+ video: {
243
+ discard: true, // Discard video track
244
+ },
245
+ showWarnings: false,
246
+ });
247
+ console.log(` Is valid: ${conversion.isValid}`);
248
+ console.log(` Utilized tracks: ${conversion.utilizedTracks.length}`);
249
+ // Progress tracking
250
+ let lastProgress = 0;
251
+ conversion.onProgress = (progress) => {
252
+ const percent = Math.floor(progress * 100);
253
+ if (percent > lastProgress) {
254
+ process.stdout.write(`\r Converting: ${percent}%`);
255
+ lastProgress = percent;
256
+ }
257
+ };
258
+ console.log(' Converting: 0%');
259
+ await conversion.execute();
260
+ console.log('\n Done!');
261
+ // Verify output
262
+ const outputInfo = getFileInfo(outputPath);
263
+ console.log(`\n Audio codec: ${outputInfo.audioCodec}`);
264
+ console.log(` Duration: ${outputInfo.duration.toFixed(2)}s`);
265
+ const outputStats = fs.statSync(outputPath);
266
+ console.log(` File size: ${(outputStats.size / 1024).toFixed(1)} KB`);
267
+ input.dispose();
268
+ }
269
+ /**
270
+ * Main entry point
271
+ */
272
+ async function main() {
273
+ console.log('╔═══════════════════════════════════════════════════════════════╗');
274
+ console.log('║ Mediabunny + FFmpeg Real File Conversion Demo ║');
275
+ console.log('╚═══════════════════════════════════════════════════════════════╝\n');
276
+ console.log('This demo uses the WebCodecs FFmpeg backend with Mediabunny');
277
+ console.log('to perform real file conversions.\n');
278
+ try {
279
+ // Create sample video
280
+ const inputPath = await createSampleVideo();
281
+ // Run demos
282
+ await demo1_BasicConversion(inputPath);
283
+ await demo2_ResizedConversion(inputPath);
284
+ await demo3_TrimmedConversion(inputPath);
285
+ await demo4_AudioOnlyConversion(inputPath);
286
+ console.log('\n╔═══════════════════════════════════════════════════════════════╗');
287
+ console.log('║ All demos completed! ║');
288
+ console.log('╚═══════════════════════════════════════════════════════════════╝\n');
289
+ console.log('Output files:');
290
+ console.log(` ${testDir}/output_basic.webm`);
291
+ console.log(` ${testDir}/output_resized.webm`);
292
+ console.log(` ${testDir}/output_trimmed.webm`);
293
+ console.log(` ${testDir}/output_audio.webm`);
294
+ }
295
+ catch (error) {
296
+ console.error('\nError:', error);
297
+ process.exit(1);
298
+ }
299
+ }
300
+ main().catch(console.error);
301
+ //# sourceMappingURL=demo-conversion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-conversion.js","sourceRoot":"","sources":["../../src/demos/demo-conversion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Demo: H.264 (AVC) encoding with WebCodecs API in Node.js
3
+ *
4
+ * This demo tests the H.264 Annex B parsing implementation.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=demo-h264.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-h264.d.ts","sourceRoot":"","sources":["../../src/demos/demo-h264.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}