{"_id":"ffmpeg","_rev":"57-6c250c01a9211e5660ae1ded51caafad","name":"ffmpeg","dist-tags":{"latest":"1.1.3"},"versions":{"0.0.1":{"name":"ffmpeg","version":"0.0.1","author":{"name":"Damiano Ciarla","email":"damiano.ciarl@gmail.com"},"_id":"ffmpeg@0.0.1","maintainers":[{"name":"damiano.ciarla","email":"damiano.ciarla@gmail.com"}],"dist":{"shasum":"f5cf560da3f00eaf00ea58e61332f90d5dfe72e3","tarball":"https://registry.npmjs.org/ffmpeg/-/ffmpeg-0.0.1.tgz","integrity":"sha512-dkWB1U8djhxG0jkFeUbo107lqbaR5x2jlJS0DUOsZQc0ynDzuf/IAsuemvUYvQAV85/3yGAz1nzOSIBgKLECfQ==","signatures":[{"sig":"MEQCIFyUHHuYLkdis5LiAiuE4XV+B4UOj7I4PcFaD0NJDZ/BAiAfXCt3rClBVbLW0gVArzKg7M7c3oAdBnur0Ane2mEK/w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","repository":{"url":"https://github.com/damianociarla/node-ffmpeg.git","type":"git"},"description":"Utility for managing video streams using ffmpeg","directories":{},"dependencies":{"when":">= 0.0.1"}},"0.0.2":{"name":"ffmpeg","version":"0.0.2","author":{"name":"Damiano Ciarla","email":"damiano.ciarl@gmail.com"},"_id":"ffmpeg@0.0.2","maintainers":[{"name":"damiano.ciarla","email":"damiano.ciarla@gmail.com"}],"dist":{"shasum":"2bbe1435a1c867beb0faa111b2a2fa1c34f78851","tarball":"https://registry.npmjs.org/ffmpeg/-/ffmpeg-0.0.2.tgz","integrity":"sha512-NC2/8dAmo/ssw5OI50RH7yPfBGiYF1TMq4ejkpwb6huwclPftR/oVMGlvnCXsHJV7e3NShc0g31R7jjFwQgfKg==","signatures":[{"sig":"MEUCIF9P4154dtG9IfLQcQK+BGxByAvLfAEYOOxJzGBa76rVAiEAqcBOtYn13zgf/OjLFtD41gPdhBatkvgHrDrcCgEQuko=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","repository":{"url":"https://github.com/damianociarla/node-ffmpeg.git","type":"git"},"description":"Utility for managing video streams using ffmpeg","directories":{},"dependencies":{"when":">= 0.0.1"}},"0.0.3":{"name":"ffmpeg","version":"0.0.3","author":{"name":"Damiano Ciarla","email":"damiano.ciarl@gmail.com"},"_id":"ffmpeg@0.0.3","maintainers":[{"name":"damiano.ciarla","email":"damiano.ciarla@gmail.com"}],"dist":{"shasum":"dae3773e9ea61fff30b4c02b6b21b4ed6b9ec563","tarball":"https://registry.npmjs.org/ffmpeg/-/ffmpeg-0.0.3.tgz","integrity":"sha512-6r7pRAC5OGd7lbaMeCf8whyf4fnruFAFkJo/vnXVjvLuMwa78i5I+eOZkbFTfDIR9Fv9qFl8uLzaBfocYkMltg==","signatures":[{"sig":"MEUCICDKpwh8PtWQ5uxEMR2sZx4kwG0+/IsfKX2Stl5RiLPQAiEAoXNoRSMWjkjqxddu5uwnitZhrHuFmUKEiiVNyuQyNuY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","repository":{"url":"https://github.com/damianociarla/node-ffmpeg.git","type":"git"},"description":"Utility for managing video streams using ffmpeg","directories":{},"dependencies":{"when":">= 0.0.1"}},"0.0.4":{"name":"ffmpeg","version":"0.0.4","author":{"name":"Damiano Ciarla","email":"damiano.ciarl@gmail.com"},"_id":"ffmpeg@0.0.4","maintainers":[{"name":"damiano.ciarla","email":"damiano.ciarla@gmail.com"}],"dist":{"shasum":"1c460df8e7da5127f62ceef4bfa06c59c89630cb","tarball":"https://registry.npmjs.org/ffmpeg/-/ffmpeg-0.0.4.tgz","integrity":"sha512-3TgWUJJlZGQn+crJFyhsO/oNeRRnGTy6GhgS98oUCIfZrOW5haPPV7DUfOm3xJcHr5q3TJpjk2GudPutrNisRA==","signatures":[{"sig":"MEUCIBJLiRWUuzxlQ5WAUb2gWZwSTknIziHXDl78NR45dnVsAiEA1OWYVk6Uk4aNdpO4iG9I1kTrYEXu3ca9G+FP1M4wYqs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","repository":{"url":"https://github.com/damianociarla/node-ffmpeg.git","type":"git"},"description":"Utility for managing video streams using ffmpeg","directories":{},"dependencies":{"when":">= 0.0.1"}},"1.0.0":{"name":"ffmpeg","version":"1.0.0","keywords":["ffmpeg","ffprobe","video","audio","transcoding","typescript"],"author":{"name":"Damiano Ciarla","email":"damiano.ciarla@gmail.com"},"license":"MIT","_id":"ffmpeg@1.0.0","maintainers":[{"name":"damiano.ciarla","email":"damiano.ciarla@gmail.com"}],"homepage":"https://damianociarla.github.io/node-ffmpeg/","bugs":{"url":"https://github.com/damianociarla/node-ffmpeg/issues"},"dist":{"shasum":"9e6c34b520e14e9c048ef247ae2dccab3f1157b0","tarball":"https://registry.npmjs.org/ffmpeg/-/ffmpeg-1.0.0.tgz","fileCount":13,"integrity":"sha512-0ZCSVJAO03Jle8KVIVZaz5SVu2sm7zOKZ6MP3MDRhY7du5sdt23BEUvv/UyYs9hs4ZeDfI8YYdFm2oQ+suXg2A==","signatures":[{"sig":"MEUCIQCAa7l60BjbkPzmaChL6IvvNpjnNV957rQ+gkY6UHit4wIgfdIktWDD7rfQ4k+K9Nj48/A/LvT1pMeTT/M3i3eKQ/Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":241519},"main":"./index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"9e81dcf578c5d88c1303d3400816cc61b0353eeb","scripts":{"lint":"eslint . && tsc --noEmit","test":"vitest run --coverage","build":"tsup","check":"npm run format:check && npm run lint && npm test && npm run build && npm run docs:build && npm run pack:check","clean":"rimraf dist coverage","format":"prettier --write .","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","pack:check":"node test/cjs-smoke.cjs && npm pack --dry-run","test:watch":"vitest","docs:preview":"vitepress preview docs","format:check":"prettier --check .","prepublishOnly":"npm run check","test:integration":"FFMPEG_INTEGRATION=1 vitest run test/real-ffmpeg.test.ts"},"_npmUser":{"name":"damiano.ciarla","email":"damiano.ciarla@gmail.com"},"overrides":{"vite":"6.4.3","esbuild":"0.28.1"},"repository":{"url":"git+https://github.com/damianociarla/node-ffmpeg.git","type":"git"},"_npmVersion":"11.17.0","description":"A modern, typed Node.js API for processing media with FFmpeg","directories":{},"_nodeVersion":"24.11.1","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.3":false},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.1","eslint":"10.8.1","rimraf":"6.1.3","vitest":"4.1.11","prettier":"3.9.6","vitepress":"1.6.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.2.0","typescript-eslint":"8.67.0","@vitest/coverage-v8":"4.1.11"},"_npmOperationalInternal":{"tmp":"tmp/ffmpeg_1.0.0_1787208288447_0.9250858887350948","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"ffmpeg","version":"1.0.1","keywords":["ffmpeg","ffprobe","video","audio","transcoding","typescript"],"author":{"name":"Damiano Ciarla","email":"damiano.ciarla@gmail.com"},"license":"MIT","_id":"ffmpeg@1.0.1","maintainers":[{"name":"damiano.ciarla","email":"damiano.ciarla@gmail.com"}],"homepage":"https://damianociarla.github.io/node-ffmpeg/","bugs":{"url":"https://github.com/damianociarla/node-ffmpeg/issues"},"dist":{"shasum":"859ffadb9df405c94f68fef804c3e4428e09c288","tarball":"https://registry.npmjs.org/ffmpeg/-/ffmpeg-1.0.1.tgz","fileCount":14,"integrity":"sha512-uOGlesWJ/0y4N2li4bmihUQ/7WGzn6r1qtKoPNP47ZxmG4KyJs0DyL/yXRn/FBKDDv0ojBb/ORHghfqMh5RrmA==","signatures":[{"sig":"MEQCIGuFXUI78+umRF4nMiUrxekpLTpvKP+JBn3rC//3IrI0AiAR5V7tXBVjxmiWotiR61CvWLbj4ZvYzD68DsKZZj6vdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDpFTDGsNNfpa9w65/6go6Y3A6ozvdvHyrMSN5ZKtU4SAiAYwFA0kFBPTZ5xkGSqnSNb4E7qoBmO0o/TNzo2U51j3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/ffmpeg@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":299161},"main":"./index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"b49e0945ec0a7947cbd5e91fd0cfdf18d4cfdde0","scripts":{"lint":"eslint . && tsc --noEmit","test":"vitest run --coverage","build":"tsup","check":"npm run format:check && npm run lint && npm test && npm run build && npm run docs:build && npm run pack:check","clean":"rimraf dist coverage","format":"prettier --write .","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","pack:check":"node test/cjs-smoke.cjs && npm pack --dry-run","test:watch":"vitest","docs:preview":"vitepress preview docs","format:check":"prettier --check .","prepublishOnly":"npm run check","test:integration":"node test/run-integration.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:08ccefc4-57da-4b11-a63d-dd2c3a9e8f6a"}},"overrides":{"vite":"6.4.3","esbuild":"0.28.1"},"repository":{"url":"git+https://github.com/damianociarla/node-ffmpeg.git","type":"git"},"_npmVersion":"11.17.0","description":"A modern, typed Node.js API for processing media with FFmpeg","directories":{},"_nodeVersion":"24.19.0","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.3":false},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.1","eslint":"10.8.1","rimraf":"6.1.3","vitest":"4.1.11","prettier":"3.9.6","vitepress":"1.6.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.2.0","typescript-eslint":"8.67.0","@vitest/coverage-v8":"4.1.11"},"_npmOperationalInternal":{"tmp":"tmp/ffmpeg_1.0.1_1787307899978_0.3362508833152915","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"ffmpeg","version":"1.0.2","keywords":["ffmpeg","ffprobe","video","audio","transcoding","typescript"],"author":{"name":"Damiano Ciarla","email":"damiano.ciarla@gmail.com"},"license":"MIT","_id":"ffmpeg@1.0.2","maintainers":[{"name":"damiano.ciarla","email":"damiano.ciarla@gmail.com"}],"homepage":"https://damianociarla.github.io/node-ffmpeg/","bugs":{"url":"https://github.com/damianociarla/node-ffmpeg/issues"},"dist":{"shasum":"0cd181bbcf024e0911279d1a88a78b748dc2366f","tarball":"https://registry.npmjs.org/ffmpeg/-/ffmpeg-1.0.2.tgz","fileCount":14,"integrity":"sha512-/k0HsVCq33CqEVTAuB3SF9666mdnjTAdgWYdbf6tovN2rz5Tp3yFirBSUo+EKWGb4Q10Xg1QQguLm2wVFiZDoQ==","signatures":[{"sig":"MEUCICJRGa6ScOlrZZYQieOvqWSW4GnfWopUuVCZS9VWJLHuAiEAwMjjJmjKWST59HKcfPzqNHUfapPrGHhFbjjWvDsGS1A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCzlUm6lSXK0rz8S2l02q8qcEhnjj1SHOdvkl1EO/qQ4wIhAOdyNT5OrYqAMwXrcEV/XlAr4mPVqpiD0Knmc0EQBb7K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/ffmpeg@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":334474},"main":"./index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"fc3e14a007c233d37601cfd444e0a7aadf79aa70","scripts":{"lint":"eslint . && tsc --noEmit","test":"vitest run --coverage","build":"tsup","check":"npm run format:check && npm run lint && npm test && npm run build && npm run docs:build && npm run pack:check","clean":"rimraf dist coverage","format":"prettier --write .","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","pack:check":"node test/cjs-smoke.cjs && npm pack --dry-run","test:watch":"vitest","docs:preview":"vitepress preview docs","format:check":"prettier --check .","prepublishOnly":"npm run check","test:integration":"node test/run-integration.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:08ccefc4-57da-4b11-a63d-dd2c3a9e8f6a"}},"overrides":{"vite":"6.4.3","esbuild":"0.28.1"},"repository":{"url":"git+https://github.com/damianociarla/node-ffmpeg.git","type":"git"},"_npmVersion":"11.17.0","description":"A modern, typed Node.js API for processing media with FFmpeg","directories":{},"_nodeVersion":"24.19.0","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.3":false},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.1","eslint":"10.8.1","rimraf":"6.1.3","vitest":"4.1.11","prettier":"3.9.6","vitepress":"1.6.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.2.0","typescript-eslint":"8.67.0","@vitest/coverage-v8":"4.1.11"},"_npmOperationalInternal":{"tmp":"tmp/ffmpeg_1.0.2_1787311811050_0.44995366968042516","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"ffmpeg","version":"1.0.3","keywords":["ffmpeg","ffprobe","video","audio","transcoding","typescript"],"author":{"name":"Damiano Ciarla","email":"damiano.ciarla@gmail.com"},"license":"MIT","_id":"ffmpeg@1.0.3","maintainers":[{"name":"damiano.ciarla","email":"damiano.ciarla@gmail.com"}],"homepage":"https://damianociarla.github.io/node-ffmpeg/","bugs":{"url":"https://github.com/damianociarla/node-ffmpeg/issues"},"dist":{"shasum":"c84e7b9903353129377ac1ce480dc24608e58d23","tarball":"https://registry.npmjs.org/ffmpeg/-/ffmpeg-1.0.3.tgz","fileCount":14,"integrity":"sha512-jj9GJ8nsiKxmDOgT3/DzU+yJU3N6MNrIBHwTJeGXLDouY5f7doyI7R+l+SbE8TskMlFV/h34uKipj5F92cIG6g==","signatures":[{"sig":"MEUCIQDgSKovECADZ6lhnW36ZA0dt3fnkd6QVszPU4R9kBnnMAIgJfV9oPYHs6Z3N8q1YghFSLIbiUUiQWRDi43TBBzPWGU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCRdgcEuORN6IjWP/uVt/4c8P/0bopyTEN3jYRTA10ahgIgIeWe4YS/BjoEchXzrWfZ9r+x+rbhf1HrDCk5pnk9s2M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/ffmpeg@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":345715},"main":"./index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"69b7293b29765a88ebd984f1b6772db44ed45762","scripts":{"lint":"eslint . && tsc --noEmit","test":"vitest run --coverage","build":"tsup","check":"npm run format:check && npm run lint && npm test && npm run build && npm run docs:build && npm run pack:check","clean":"rimraf dist coverage","format":"prettier --write .","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","pack:check":"node test/cjs-smoke.cjs && npm pack --dry-run","test:watch":"vitest","docs:preview":"vitepress preview docs","format:check":"prettier --check .","prepublishOnly":"npm run check","test:integration":"node test/run-integration.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:08ccefc4-57da-4b11-a63d-dd2c3a9e8f6a"}},"overrides":{"vite":"6.4.3","esbuild":"0.28.1"},"repository":{"url":"git+https://github.com/damianociarla/node-ffmpeg.git","type":"git"},"_npmVersion":"11.17.0","description":"A modern, typed Node.js API for processing media with FFmpeg","directories":{},"_nodeVersion":"24.19.0","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.3":false},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.1","eslint":"10.8.1","rimraf":"6.1.3","vitest":"4.1.11","prettier":"3.9.6","vitepress":"1.6.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.2.0","typescript-eslint":"8.67.0","@vitest/coverage-v8":"4.1.11"},"_npmOperationalInternal":{"tmp":"tmp/ffmpeg_1.0.3_1787320693159_0.3561264709742804","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"ffmpeg","version":"1.1.0","keywords":["ffmpeg","ffprobe","video","audio","transcoding","typescript"],"author":{"name":"Damiano Ciarla","email":"damiano.ciarla@gmail.com"},"license":"MIT","_id":"ffmpeg@1.1.0","maintainers":[{"name":"damiano.ciarla","email":"damiano.ciarla@gmail.com"}],"homepage":"https://damianociarla.github.io/node-ffmpeg/","bugs":{"url":"https://github.com/damianociarla/node-ffmpeg/issues"},"dist":{"shasum":"b7db80c8b437ce7df1a9211b756a79a3fabe189a","tarball":"https://registry.npmjs.org/ffmpeg/-/ffmpeg-1.1.0.tgz","fileCount":14,"integrity":"sha512-W+mW1Gynj4f8v4c/n+r+FrSkh6xqLKDVMjQ0RSr6drphLee6eh4hHIxNVWHfYuefJHuX9FZawtrKRbjUCTcveQ==","signatures":[{"sig":"MEUCIBALMRDGWNMukuzOUQKNJGqzaqp3IEIdAwQpXUnqzAqEAiEA/v6apQs99zbq7a7BrEA6TqyfG1yfl4k/0aHIpJQUgNc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGN0wCnfCItz4TewuPlgfopUd0ACmkO8rIAIpzJF/rBrAiEAy82UBaNaeEg0+1V/fma8J7HNBJPLpD7eWszpiEAbG78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/ffmpeg@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":353557},"main":"./index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"827410f49789cd3949fbd1f84ad35f79fbc15f6f","scripts":{"lint":"eslint . && tsc --noEmit","test":"vitest run --coverage","build":"tsup","check":"npm run format:check && npm run lint && npm test && npm run build && npm run docs:build && npm run pack:check","clean":"rimraf dist coverage","format":"prettier --write .","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","pack:check":"node test/cjs-smoke.cjs && npm pack --dry-run","test:watch":"vitest","docs:preview":"vitepress preview docs","format:check":"prettier --check .","prepublishOnly":"npm run check","test:integration":"node test/run-integration.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:08ccefc4-57da-4b11-a63d-dd2c3a9e8f6a"}},"overrides":{"vite":"6.4.3","esbuild":"0.28.1"},"repository":{"url":"git+https://github.com/damianociarla/node-ffmpeg.git","type":"git"},"_npmVersion":"11.17.0","description":"A modern, typed Node.js API for processing media with FFmpeg","directories":{},"_nodeVersion":"24.19.0","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.3":false},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.1","eslint":"10.8.1","rimraf":"6.1.3","vitest":"4.1.11","prettier":"3.9.6","vitepress":"1.6.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.2.0","typescript-eslint":"8.67.0","@vitest/coverage-v8":"4.1.11"},"_npmOperationalInternal":{"tmp":"tmp/ffmpeg_1.1.0_1787328358879_0.013278200850822097","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"ffmpeg","version":"1.1.1","keywords":["ffmpeg","ffprobe","video","audio","transcoding","typescript"],"author":{"name":"Damiano Ciarla","email":"damiano.ciarla@gmail.com"},"license":"MIT","_id":"ffmpeg@1.1.1","maintainers":[{"name":"damiano.ciarla","email":"damiano.ciarla@gmail.com"}],"homepage":"https://damianociarla.github.io/node-ffmpeg/","bugs":{"url":"https://github.com/damianociarla/node-ffmpeg/issues"},"dist":{"shasum":"23954bbc6c7b3fabb847a98b39fd791736556798","tarball":"https://registry.npmjs.org/ffmpeg/-/ffmpeg-1.1.1.tgz","fileCount":14,"integrity":"sha512-rkMw2drn0F4dSaOHSC6QiGjqxYo4BuZxZACUEog8og69e04j/SDbm+3E4NhbW5mqMVpNKo5czWanjKZQbmLx1A==","signatures":[{"sig":"MEUCIQDLLi9gsatYx7SJ8TQBv5tiZsfUz1QJeKbyHlRWESZ9jQIgVSaNb1A+rPNWG6CyEd3o/ns3o600xyjDYwmqFTQ7bDg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICGQt4EFLG3w39aFYjocMhRz0Pv84fPh5uWWESGJBn9tAiBW21Wxp9p7DhO+Hz84PbJ6yeEOOwqNxolrqPaWpmgFVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/ffmpeg@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":354544},"main":"./index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"93ca65efff7e433c2edd3cc0e73119c65d58bc61","scripts":{"lint":"eslint . && tsc --noEmit","test":"vitest run --coverage","build":"tsup","check":"npm run format:check && npm run lint && npm test && npm run build && npm run docs:build && npm run test:visual && npm run pack:check","clean":"rimraf dist coverage","format":"prettier --write .","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","pack:check":"node test/cjs-smoke.cjs && npm pack --dry-run && node test/package-types.mjs","test:watch":"vitest","test:visual":"playwright test","docs:preview":"vitepress preview docs","format:check":"prettier --check .","prepublishOnly":"npm run check","test:integration":"node test/run-integration.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:08ccefc4-57da-4b11-a63d-dd2c3a9e8f6a"}},"overrides":{"vite":"6.4.3","esbuild":"0.28.1"},"repository":{"url":"git+https://github.com/damianociarla/node-ffmpeg.git","type":"git"},"_npmVersion":"11.17.0","description":"A modern, typed Node.js API for processing media with FFmpeg","directories":{},"_nodeVersion":"24.19.0","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.3":false},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.1","eslint":"10.8.1","rimraf":"6.1.3","vitest":"4.1.11","prettier":"3.9.6","vitepress":"1.6.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.2.0","@playwright/test":"1.62.1","typescript-eslint":"8.67.0","@vitest/coverage-v8":"4.1.11"},"_npmOperationalInternal":{"tmp":"tmp/ffmpeg_1.1.1_1787333241186_0.8048620073043886","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"ffmpeg","version":"1.1.2","keywords":["ffmpeg","ffprobe","video","audio","transcoding","typescript"],"author":{"name":"Damiano Ciarla","email":"damiano.ciarla@gmail.com"},"license":"MIT","_id":"ffmpeg@1.1.2","maintainers":[{"name":"damiano.ciarla","email":"damiano.ciarla@gmail.com"}],"homepage":"https://damianociarla.github.io/node-ffmpeg/","bugs":{"url":"https://github.com/damianociarla/node-ffmpeg/issues"},"dist":{"shasum":"46f38fa2b81b86f68d58805ad3ae18bdf0d3f50c","tarball":"https://registry.npmjs.org/ffmpeg/-/ffmpeg-1.1.2.tgz","fileCount":14,"integrity":"sha512-ftq2YQN9vQfN0VwSH8nu8ViYVsrwvFRqOQ7AP0ldY/PxTwOnxoL05oR7tdqa7o7Bv0pKMW7QZ0WcT3CtFNHxQw==","signatures":[{"sig":"MEYCIQDTMVD9eEPtFer9E+HL7vj5Ci0RJxDrHsuOPX3mVnUefgIhAPrIBlr6PD2UBz2a3jGXTC6PKNOLNA4yn/1I2tGfknRi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDs8F1trfXPZkxSvPCq6lCwoTIVfztHmrxci2vcNeQsEwIhANJLYNm2ox4EBku7aMi5p9O3kYHhLAj8lf00jZuMEP4B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/ffmpeg@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":355396},"main":"./index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"5ed842b180915d90c175f60504e301c1f23a59bd","scripts":{"lint":"eslint . && tsc --noEmit","test":"vitest run --coverage","build":"tsup","check":"npm run format:check && npm run lint && npm test && npm run build && npm run docs:build && npm run test:visual && npm run pack:check","clean":"rimraf dist coverage","format":"prettier --write .","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","pack:check":"node test/cjs-smoke.cjs && npm pack --dry-run && node test/package-types.mjs","test:watch":"vitest","test:visual":"playwright test","docs:preview":"vitepress preview docs","format:check":"prettier --check .","prepublishOnly":"npm run check","test:integration":"node test/run-integration.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:08ccefc4-57da-4b11-a63d-dd2c3a9e8f6a"}},"overrides":{"vite":"6.4.3","esbuild":"0.28.1"},"repository":{"url":"git+https://github.com/damianociarla/node-ffmpeg.git","type":"git"},"_npmVersion":"11.17.0","description":"A modern, typed Node.js API for processing media with FFmpeg","directories":{},"_nodeVersion":"24.19.0","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.3":false},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.1","eslint":"10.8.1","rimraf":"6.1.3","vitest":"4.1.11","prettier":"3.9.6","vitepress":"1.6.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.2.0","@playwright/test":"1.62.1","typescript-eslint":"8.67.0","@vitest/coverage-v8":"4.1.11"},"_npmOperationalInternal":{"tmp":"tmp/ffmpeg_1.1.2_1787341573254_0.9592602928954401","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"_id":"ffmpeg@1.1.3","bugs":{"url":"https://github.com/damianociarla/node-ffmpeg/issues"},"dist":{"shasum":"60ef9ff8f79dbeabd909a29582fc2224734ecd7a","tarball":"https://registry.npmjs.org/ffmpeg/-/ffmpeg-1.1.3.tgz","fileCount":14,"integrity":"sha512-9JbfhKD7H7DVd30EUJVVQdyIa5LIk6flASr7N1w4PMrnh34aTqHyQwFN1HJxdNECmcPUDQbOifSyWVtDhjS9Ag==","signatures":[{"sig":"MEYCIQC0rbJPypF2/x9epJjet/Jds7UfENS/9yuf2Ok3WyZJvwIhAOckcUBwGLQKvEwCrh6Bso6JmcsVmEyBnZrIyvyhl6hN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICgfULtTbYpY3wWNgvdye7oVvMlJSdEXDarIrCwqOLWTAiBRj/BBXKh6oGPErlXd6bonpbgh4pn0H7B2+/8pZktfXA=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/ffmpeg@1.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":356018},"main":"./index.cjs","name":"ffmpeg","type":"module","types":"./dist/index.d.ts","author":{"name":"Damiano Ciarla","email":"damiano.ciarla@gmail.com"},"module":"./dist/index.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./index.cjs"},"./package.json":"./package.json"},"gitHead":"d5c7f7bb2ccdcc5149aaf35192a669def181ab08","license":"MIT","scripts":{"lint":"eslint . && tsc --noEmit","test":"vitest run --coverage","build":"tsup","check":"npm run format:check && npm run lint && npm test && npm run build && npm run docs:build && npm run test:visual && npm run pack:check","clean":"rimraf dist coverage","format":"prettier --write .","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","pack:check":"node test/cjs-smoke.cjs && npm pack --dry-run && node test/package-types.mjs","test:watch":"vitest","test:visual":"playwright test","docs:preview":"vitepress preview docs","format:check":"prettier --check .","prepublishOnly":"npm run check","test:integration":"node test/run-integration.mjs"},"version":"1.1.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:08ccefc4-57da-4b11-a63d-dd2c3a9e8f6a"}},"homepage":"https://damianociarla.github.io/node-ffmpeg/","keywords":["ffmpeg","ffprobe","video","audio","transcoding","typescript"],"overrides":{"vite":"6.4.3","esbuild":"0.28.1"},"repository":{"url":"git+https://github.com/damianociarla/node-ffmpeg.git","type":"git"},"_npmVersion":"11.17.0","description":"A modern, typed Node.js API for processing media with FFmpeg","directories":{},"maintainers":[{"name":"damiano.ciarla","email":"damiano.ciarla@gmail.com"}],"_nodeVersion":"24.19.0","allowScripts":{"esbuild@0.28.1":true,"fsevents@2.3.2":false,"fsevents@2.3.3":false},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.1","eslint":"10.8.1","rimraf":"6.1.3","vitest":"4.1.11","prettier":"3.9.6","vitepress":"1.6.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.2.0","@playwright/test":"1.62.1","typescript-eslint":"8.67.0","@vitest/coverage-v8":"4.1.11"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ffmpeg_1.1.3_1787342842414_0.6703157339330064"}}},"time":{"created":"2012-12-04T08:49:06.290Z","modified":"2026-08-21T20:07:23.893Z","0.0.1":"2012-12-04T08:49:08.496Z","0.0.2":"2012-12-05T10:39:55.974Z","0.0.3":"2013-01-16T14:17:40.379Z","0.0.4":"2013-01-16T14:18:49.708Z","1.0.0":"2026-08-20T06:44:48.576Z","1.0.1":"2026-08-21T10:25:00.131Z","1.0.2":"2026-08-21T11:30:11.164Z","1.0.3":"2026-08-21T13:58:13.245Z","1.1.0":"2026-08-21T16:05:58.974Z","1.1.1":"2026-08-21T17:27:21.267Z","1.1.2":"2026-08-21T19:46:13.365Z","1.1.3":"2026-08-21T20:07:22.547Z"},"bugs":{"url":"https://github.com/damianociarla/node-ffmpeg/issues"},"author":{"name":"Damiano Ciarla","email":"damiano.ciarla@gmail.com"},"license":"MIT","homepage":"https://damianociarla.github.io/node-ffmpeg/","keywords":["ffmpeg","ffprobe","video","audio","transcoding","typescript"],"repository":{"url":"git+https://github.com/damianociarla/node-ffmpeg.git","type":"git"},"description":"A modern, typed Node.js API for processing media with FFmpeg","maintainers":[{"name":"damiano.ciarla","email":"damiano.ciarla@gmail.com"}],"readme":"# node-ffmpeg\n\n[Documentation](https://damianociarla.github.io/node-ffmpeg/) · [API reference](https://damianociarla.github.io/node-ffmpeg/api/video) · [Migration guide](https://damianociarla.github.io/node-ffmpeg/guide/migration)\n\nA small, typed Node.js wrapper around the FFmpeg and ffprobe command-line tools. It keeps the\noriginal `ffmpeg` package API—Promise or callback construction, chainable setters, conversion,\nframe extraction, audio extraction, and watermarks—while using modern Node.js primitives.\n\n## Requirements\n\n- Node.js 24 or newer\n- `ffmpeg` and `ffprobe` on `PATH`, or explicit executable paths\n\nThe package intentionally does not download binaries. This keeps installation small and lets the\napplication choose the FFmpeg build and codecs it needs.\n\n```sh\nnpm install ffmpeg\n```\n\n## Quick start\n\n```ts\nimport ffmpeg from 'ffmpeg';\n\nconst video = await ffmpeg('/media/input.mp4');\n\nvideo.on('progress', ({ percent, time }) => {\n  console.log(percent === undefined ? `${time}s` : `${percent.toFixed(1)}% (${time}s)`);\n});\n\nawait video\n  .setVideoCodec('libx264')\n  .setVideoBitRate(2_000)\n  .setAudioCodec('aac')\n  .setAudioBitRate(192)\n  .setVideoSize('1280x?', true, true, 'black')\n  .save('/media/output.mp4');\n```\n\nCommonJS remains callable, as in `0.0.4`:\n\n```js\nconst ffmpeg = require('ffmpeg');\nconst video = await new ffmpeg('/media/input.mp4');\nawait video.setVideoCodec('copy').setAudioCodec('copy').save('/media/copy.mp4');\n```\n\nThe legacy callback API also remains available:\n\n```js\nnew ffmpeg('/media/input.mp4', (error, video) => {\n  if (error) return console.error(error);\n  video.save('/media/output.mp4', (saveError, output) => {\n    if (saveError) console.error(saveError);\n    else console.log(output);\n  });\n});\n```\n\nFor new TypeScript code, the named factory is the clearest form:\n\n```ts\nimport { create } from 'ffmpeg';\n\nconst video = await create('/media/input.mp4', {\n  timeout: 120_000,\n  overwrite: true,\n});\n```\n\nFor services that process several files with one fixed FFmpeg installation, inspect capabilities\nonce with an isolated client:\n\n```ts\nimport { createClient } from 'ffmpeg';\n\nconst client = await createClient({ overwrite: true, timeout: 120_000 });\nconst video = await client.open('/media/input.mp4');\n```\n\nClient executable paths, environment, and working directory are snapshotted at creation. Per-open\nsettings may adjust timeout, buffering, overwrite behavior, encoding, and cancellation without\ninvalidating the cached capabilities.\n\n## Executable paths\n\nSet paths globally for legacy applications:\n\n```ts\nffmpeg.bin = '/opt/ffmpeg/bin/ffmpeg';\nffmpeg.ffprobeBin = '/opt/ffmpeg/bin/ffprobe';\n```\n\nOr per operation:\n\n```ts\nawait ffmpeg('/media/input.mp4', {\n  ffmpegPath: '/opt/ffmpeg/bin/ffmpeg',\n  ffprobePath: '/opt/ffmpeg/bin/ffprobe',\n});\n```\n\nWhen an absolute `ffmpegPath` is supplied and `ffprobePath` is omitted, a sibling `ffprobe`\nexecutable is inferred. Hierarchical URLs such as HTTP, HTTPS, and RTSP are accepted as inputs when\nsupported by the installed FFmpeg build. Non-hierarchical virtual inputs, stdin (`-`), and Node.js\nstreams are not supported as primary inputs because initialization probes the source first.\n\n## Settings\n\n| Setting       | Default   | Meaning                                                  |\n| ------------- | --------- | -------------------------------------------------------- |\n| `encoding`    | `utf8`    | Process output encoding                                  |\n| `timeout`     | `0`       | Maximum operation time in milliseconds; `0` disables it  |\n| `maxBuffer`   | 16 MiB    | Conversion output tail and maximum complete probe output |\n| `overwrite`   | `false`   | Use `-y`; otherwise `-n` prevents interactive hangs      |\n| `ffmpegPath`  | `ffmpeg`  | FFmpeg executable                                        |\n| `ffprobePath` | `ffprobe` | ffprobe executable                                       |\n| `signal`      | —         | `AbortSignal` used to cancel an operation                |\n| `cwd`, `env`  | inherited | Child-process working directory and environment          |\n\nLong-running conversions retain only the most recent `maxBuffer` bytes of stdout and stderr. Probe\nand configuration output must remain complete: if stdout exceeds the limit, the operation fails with\nerror `119` instead of parsing a truncated document.\n\n## API\n\nAll setters are chainable:\n\n- Video: `setDisableVideo`, `setVideoFormat`, `setVideoCodec`, `setVideoBitRate`,\n  `setVideoFrameRate`, `setVideoStartTime`, `setVideoDuration`, `setVideoAspectRatio`,\n  `setVideoSize`, `setVideoQuality`\n- Audio: `setDisableAudio`, `setAudioCodec`, `setAudioFrequency`, `setAudioChannels`,\n  `setAudioBitRate`, `setAudioQuality`\n- General: `setMetadata`, `setThreads`, `setWatermark`, `addInput`, `addCommand`,\n  `addOutputOption`, `addFilterComplex`, `getCommand`\n- Execution: `save`, `fnExtractSoundToMP3`, `fnExtractFrameToJPG`, `fnAddWatermark`\n\n`copy` is accepted by both codec setters. Repeated custom options such as multiple `-map` or\n`-metadata` entries are supported.\n\nTerminal methods consume the current fluent options at invocation. Their validation and process\nerrors always arrive through Promise rejection or the optional callback. Input/settings validation\nperformed by `ffmpeg()`, `new ffmpeg()`, `create()` and `client.open()` remains synchronous, as do\nsetters and `getCommand()`. Concurrent operations on one `Video` use isolated option snapshots. Their\nshared lifecycle events may interleave, but every event includes an immutable operation context for\ncorrelation.\n\n### Metadata\n\n`video.metadata` preserves the original package shape (`duration`, `video`, `audio`, and common\ntags) and adds the complete ffprobe response at `video.metadata.raw`. Available formats and\nencoders are exposed at `video.info_configuration`.\n\n### Progress and lifecycle events\n\n```ts\nvideo.on('start', (command) => console.log(command));\nvideo.on('progress', (progress, operation) => {\n  console.log(operation.operationId, operation.destination, progress.percent);\n});\nvideo.on('stderr', (chunk) => process.stderr.write(chunk));\nvideo.on('end', (result) => console.log(result.code));\nvideo.on('error', (error) => console.error(error)); // optional\n```\n\nAn `error` listener is optional: failed Promise operations reject normally instead of causing an\nunhandled EventEmitter error.\n\n### Frame extraction\n\n```ts\nconst files = await video.fnExtractFrameToJPG('/media/frames', {\n  start_time: '00:00:10',\n  every_n_seconds: 5,\n  number: 10,\n  size: '640x?',\n  quality: 2,\n  file_name: 'preview_%s',\n});\n```\n\nOnly one of `every_n_frames`, `every_n_seconds`, or `every_n_percentage` may be set. Returned paths\nare limited to files matching the extraction pattern, rather than every file in the directory.\n\n### Custom FFmpeg options\n\n```ts\nawait video\n  .addCommand('-movflags', '+faststart')\n  .addCommand('-map', '0:v:0')\n  .addCommand('-map', '0:a:0?')\n  .save('/media/output.mp4');\n```\n\nArguments are passed directly to `spawn` with `shell: false`; do not add shell quotes.\nCustom input, command, output-option, and filter methods are trusted escape hatches and must not\nreceive unvalidated user strings. Output destinations beginning with `-` are rejected; use an\nexplicit `./-name.ext` or absolute path when the filename intentionally starts with a dash.\n\n## Migrating from 0.0.4\n\n- Node.js 24+ and ffprobe are now required.\n- Native Promises replace `when`; normal `await` and `.then()` usage is unchanged.\n- Errors are `FfmpegError` instances with the historical numeric `code` and `msg` fields.\n- Watermark compass positions now follow their conventional meaning (for example, `NE` is\n  top-right). This fixes the old east/west inversion.\n- Bitrates use modern stream-specific flags (`-b:v` and `-b:a`); numeric values are interpreted as\n  kbit/s.\n- Existing outputs are protected with `-n`. Set `overwrite: true` to use `-y`.\n- The project publishes both ESM and CommonJS and includes its own TypeScript declarations;\n  `@types/ffmpeg` is no longer needed.\n\nSee [AUDIT.md](AUDIT.md) for the code and issue audit and [CHANGELOG.md](CHANGELOG.md) for the\nrelease summary.\n\n## Security\n\nFFmpeg processes untrusted and highly complex media. Keep the system FFmpeg build patched, apply\nresource limits appropriate to your service, and see [SECURITY.md](SECURITY.md) before accepting\nuntrusted input.\n\n## License\n\nMIT © Damiano Ciarla\n","readmeFilename":"README.md","users":{"emomoh":true,"hintss":true,"lenarc":true,"nuwaio":true,"asaupup":true,"ayoungh":true,"jerrywu":true,"jamie452":true,"roadlabs":true,"daveatdog":true,"eric.chen":true,"myjustify":true,"rocket0191":true,"stephenhuh":true,"zombieleet":true,"fengmiaosen":true,"iaincollins":true,"droopytersen":true,"nickeltobias":true,"meadowcottage":true,"damiano.ciarla":true,"marcobiedermann":true,"chirag_purohit71085":true}}