{"_id":"@altrepo/ffmpeg-kit","_rev":"3-9ae404c0359d4aac1f070d7a8c17c9a3","name":"@altrepo/ffmpeg-kit","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@altrepo/ffmpeg-kit","version":"0.1.0","keywords":["ffmpeg","ffmpeg.wasm","wasm","browser","video","audio"],"license":"MIT","_id":"@altrepo/ffmpeg-kit@0.1.0","maintainers":[{"name":"altrepo","email":"void@altrepo.net"}],"bin":{"altrepo-ffmpeg":"bin/altrepo-ffmpeg.js"},"dist":{"shasum":"a9221b6ed0b48281913704939b784f133955fcee","tarball":"https://registry.npmjs.org/@altrepo/ffmpeg-kit/-/ffmpeg-kit-0.1.0.tgz","fileCount":12,"integrity":"sha512-paDmio2wU59xfGsKlt6u8ohWpqCcfNa+tw+soSRWwov0LV7GxxWWqRPjLU85AlnXLwIUQ2IE4UcjvpsLZnXr3A==","signatures":[{"sig":"MEYCIQCzfEpPNEm6lET8opa2Bk0wbaoWMurH89ZJV/N9WguT6QIhAKvUkqGV8oGujIk54Yr6p3UL3mFyDBAqr+4tC3hSOqLF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24711381},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js","./manifest":"./src/manifest.js","./assets/legacy-0.11/*":"./assets/legacy-0.11/*"},"gitHead":"a3da07debc1dd56efa6de8e07895b77f2ba3db24","scripts":{"test":"node test/run-tests.js"},"_npmUser":{"name":"altrepo","email":"void@altrepo.net"},"_npmVersion":"11.14.1","description":"Known-compatible browser ffmpeg.wasm assets with copy and doctor commands.","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ffmpeg-kit_0.1.0_1781512152622_0.967905057612928","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@altrepo/ffmpeg-kit","version":"0.1.1","keywords":["ffmpeg","ffmpeg.wasm","wasm","browser","video","audio"],"license":"MIT","_id":"@altrepo/ffmpeg-kit@0.1.1","maintainers":[{"name":"altrepo","email":"void@altrepo.net"}],"bin":{"altrepo-ffmpeg":"bin/altrepo-ffmpeg.js"},"dist":{"shasum":"b05c0e9faa3483f3c0a8d463b2592ec6612edc1f","tarball":"https://registry.npmjs.org/@altrepo/ffmpeg-kit/-/ffmpeg-kit-0.1.1.tgz","fileCount":12,"integrity":"sha512-K4XOzUk8x1SS8PAzrp5s1OqCTQytdlzmTaHQY+5rYw0Y2RH6UmAt/1BNvDnso1tNa1sKMmaYDmzryrRRLTiYvg==","signatures":[{"sig":"MEQCIAI5ap4Pty0B0Vo2PD8ElaCRdWe6BmUnKioTAGa/LP+eAiAKRH6bYqdtRNhjquhUm1+Oqv2qfMAm/qk1RNZ1jMCM5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24711379},"type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js","./manifest":"./src/manifest.js","./assets/legacy-0.11/*":"./assets/legacy-0.11/*"},"gitHead":"a3da07debc1dd56efa6de8e07895b77f2ba3db24","scripts":{"test":"node test/run-tests.js"},"_npmUser":{"name":"altrepo","email":"void@altrepo.net"},"_npmVersion":"11.14.1","description":"Known-compatible browser ffmpeg.wasm assets with copy and doctor commands.","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ffmpeg-kit_0.1.1_1781512207092_0.41351572084849475","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@altrepo/ffmpeg-kit","version":"0.2.0","description":"Known-compatible browser ffmpeg.wasm assets with copy and doctor commands.","type":"module","license":"MIT","bin":{"altrepo-ffmpeg":"bin/altrepo-ffmpeg.js"},"exports":{".":"./src/index.js","./manifest":"./src/manifest.js","./assets/legacy-0.11/*":"./assets/legacy-0.11/*","./assets/modern-0.12-st/*":"./assets/modern-0.12-st/*","./assets/modern-0.12-mt/*":"./assets/modern-0.12-mt/*"},"scripts":{"test":"node test/run-tests.js"},"keywords":["ffmpeg","ffmpeg.wasm","wasm","browser","video","audio"],"engines":{"node":">=18"},"gitHead":"ef6af84b8fd7660fd6d94df415c6353fdbf543f1","_id":"@altrepo/ffmpeg-kit@0.2.0","_nodeVersion":"24.11.1","_npmVersion":"11.14.1","dist":{"integrity":"sha512-CZo2s/PCC9knACSMC7Rzof/6Tr2BJngN1Zu4yOhLURbEch6lDkZkbF98JwmVQh/ddidTWuwFMxsBcBzc94wQaQ==","shasum":"8967d059c7a59fdfa1ca2f6c7104b771a3c55733","tarball":"https://registry.npmjs.org/@altrepo/ffmpeg-kit/-/ffmpeg-kit-0.2.0.tgz","fileCount":24,"unpackedSize":89925510,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGNbdL6uv1VXsMQEkA945n7ZkbsLsNa+SLwm6L0oLpdUAiBk/RPYRG8lU4UaHZA5ytdHRHzN4KcLhadgPnyALx09Lw=="}]},"_npmUser":{"name":"altrepo","email":"void@altrepo.net"},"directories":{},"maintainers":[{"name":"altrepo","email":"void@altrepo.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ffmpeg-kit_0.2.0_1781514204759_0.2466319051441539"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-15T08:29:12.456Z","modified":"2026-06-15T09:03:25.380Z","0.1.0":"2026-06-15T08:29:13.047Z","0.1.1":"2026-06-15T08:30:07.373Z","0.2.0":"2026-06-15T09:03:25.285Z"},"license":"MIT","keywords":["ffmpeg","ffmpeg.wasm","wasm","browser","video","audio"],"description":"Known-compatible browser ffmpeg.wasm assets with copy and doctor commands.","maintainers":[{"name":"altrepo","email":"void@altrepo.net"}],"readme":"# @altrepo/ffmpeg-kit\r\n\r\nKnown-compatible browser `ffmpeg.wasm` assets with a small CLI for copying and checking them.\r\n\r\nTest the package idea in the [MP4 to MP3 Converter web version](https://altrepo.net/convert/mp4-to-mp3/).\r\n\r\nRepository: [AltRepoYT/altrepo-ffmpeg-kit](https://github.com/AltRepoYT/altrepo-ffmpeg-kit)\r\n\r\nThis package starts with the legacy browser API because many static apps still expect:\r\n\r\n```js\r\nwindow.FFmpeg.createFFmpeg\r\nwindow.FFmpeg.fetchFile\r\n```\r\n\r\nThe included bundle pins compatible files together:\r\n\r\n- `@ffmpeg/ffmpeg@0.11.6`\r\n- `@ffmpeg/core@0.11.0`\r\n\r\n## Install\r\n\r\n```bash\r\nnpm install @altrepo/ffmpeg-kit\r\n```\r\n\r\n## Copy Assets\r\n\r\n```bash\r\nnpx altrepo-ffmpeg init public/vendor/ffmpeg\r\n```\r\n\r\nOptions:\r\n- `--bundle modern-0.12-mt` (Multi-threaded v0.12, fastest but requires COOP/COEP headers)\r\n- `--bundle modern-0.12-st` (Single-threaded v0.12, works everywhere)\r\n- `--bundle legacy-0.11` (Default)\r\n- `--force` to replace existing files.\r\n- `--types` to also copy a TypeScript definition file (`ffmpeg-legacy.d.ts`) when using the legacy bundle.\r\n\r\n## Check Assets\r\n\r\n```bash\r\nnpx altrepo-ffmpeg doctor public/vendor/ffmpeg [--bundle modern-0.12-mt]\r\n```\r\n\r\nThe doctor command checks that required files exist, are plausible sizes, and that the wrapper/core expose the expected symbols.\r\n\r\n## Local Development Server\r\n\r\nTesting multi-threaded `ffmpeg.wasm` requires strict `Cross-Origin-Opener-Policy` and `Cross-Origin-Embedder-Policy` headers. You can spin up a local server that automatically injects these headers:\r\n\r\n```bash\r\nnpx altrepo-ffmpeg serve public/ --port 8080\r\n```\r\n\r\n## Bundler Configuration\r\n\r\nIf your bundler (like Vite or Webpack) is trying to bundle the `ffmpeg` files and breaking them, you can view config snippets to exclude them:\r\n\r\n```bash\r\nnpx altrepo-ffmpeg config vite\r\n```\r\n\r\n## Plain HTML\r\n\r\nLoad the wrapper before your app code:\r\n\r\n```html\r\n<script src=\"/vendor/ffmpeg/ffmpeg.min.js\" defer></script>\r\n<script src=\"/js/app.js\" defer></script>\r\n```\r\n\r\nThen initialize with local core files:\r\n\r\n```js\r\nconst { createFFmpeg, fetchFile } = window.FFmpeg;\r\n\r\nconst ffmpeg = createFFmpeg({\r\n  log: true,\r\n  corePath: \"/vendor/ffmpeg/ffmpeg-core.js\"\r\n});\r\n```\r\n\r\n## Why This Exists\r\n\r\n`ffmpeg.wasm` is powerful, but browser setup is easy to get wrong. The wrapper, core JS, WASM binary, worker, companion chunks, and API version all have to match. This package makes that boring on purpose.\r\n","readmeFilename":"README.md"}