larkup 0.1.46 → 0.1.47

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 (241) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +12 -12
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/required-server-files.js +1 -1
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/server/app/_global-error.html +1 -1
  8. package/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/_not-found.html +1 -1
  16. package/.next/server/app/_not-found.rsc +16 -16
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +16 -16
  18. package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  19. package/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
  20. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  21. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  23. package/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
  24. package/.next/server/app/analytics.html +1 -1
  25. package/.next/server/app/analytics.rsc +17 -17
  26. package/.next/server/app/analytics.segments/_full.segment.rsc +17 -17
  27. package/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
  28. package/.next/server/app/analytics.segments/_index.segment.rsc +11 -11
  29. package/.next/server/app/analytics.segments/_tree.segment.rsc +1 -1
  30. package/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +3 -3
  31. package/.next/server/app/analytics.segments/analytics.segment.rsc +3 -3
  32. package/.next/server/app/api/chat/route.js +9 -9
  33. package/.next/server/app/api/chat/route.js.nft.json +1 -1
  34. package/.next/server/app/api/deploy/ssh/route.js +2 -2
  35. package/.next/server/app/api/deploy/ssh/route.js.nft.json +1 -1
  36. package/.next/server/app/api/doc-editor/edit/route.js +2 -2
  37. package/.next/server/app/api/doc-editor/export/route.js +2 -2
  38. package/.next/server/app/api/doc-editor/extract-text/route.js +2 -2
  39. package/.next/server/app/api/doc-editor/parse/route.js +1 -1
  40. package/.next/server/app/api/doc-editor/restore/route.js +2 -2
  41. package/.next/server/app/api/document/sign/route.js +3 -3
  42. package/.next/server/app/api/marketplace/[toolId]/route.js.nft.json +1 -1
  43. package/.next/server/app/api/marketplace/route.js.nft.json +1 -1
  44. package/.next/server/app/api/media/process/route.js.nft.json +1 -1
  45. package/.next/server/app/api/media/route.js.nft.json +1 -1
  46. package/.next/server/app/api/parse-file/route.js +2 -2
  47. package/.next/server/app/api/server/download/route.js +1 -1
  48. package/.next/server/app/api/server/generate/route.js +2 -2
  49. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  50. package/.next/server/app/chat.html +1 -1
  51. package/.next/server/app/chat.rsc +17 -17
  52. package/.next/server/app/chat.segments/_full.segment.rsc +17 -17
  53. package/.next/server/app/chat.segments/_head.segment.rsc +4 -4
  54. package/.next/server/app/chat.segments/_index.segment.rsc +11 -11
  55. package/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
  56. package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +3 -3
  57. package/.next/server/app/chat.segments/chat.segment.rsc +3 -3
  58. package/.next/server/app/data/page_client-reference-manifest.js +1 -1
  59. package/.next/server/app/data.html +1 -1
  60. package/.next/server/app/data.rsc +17 -17
  61. package/.next/server/app/data.segments/_full.segment.rsc +17 -17
  62. package/.next/server/app/data.segments/_head.segment.rsc +4 -4
  63. package/.next/server/app/data.segments/_index.segment.rsc +11 -11
  64. package/.next/server/app/data.segments/_tree.segment.rsc +1 -1
  65. package/.next/server/app/data.segments/data/__PAGE__.segment.rsc +3 -3
  66. package/.next/server/app/data.segments/data.segment.rsc +3 -3
  67. package/.next/server/app/index.html +1 -1
  68. package/.next/server/app/index.rsc +16 -16
  69. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  70. package/.next/server/app/index.segments/_full.segment.rsc +16 -16
  71. package/.next/server/app/index.segments/_head.segment.rsc +4 -4
  72. package/.next/server/app/index.segments/_index.segment.rsc +11 -11
  73. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  74. package/.next/server/app/page_client-reference-manifest.js +1 -1
  75. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  76. package/.next/server/app/settings.html +1 -1
  77. package/.next/server/app/settings.rsc +18 -18
  78. package/.next/server/app/settings.segments/_full.segment.rsc +18 -18
  79. package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  80. package/.next/server/app/settings.segments/_index.segment.rsc +11 -11
  81. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  82. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  83. package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  84. package/.next/server/chunks/[root-of-the-server]__05707i3._.js +1 -1
  85. package/.next/server/chunks/[root-of-the-server]__0vmcld0._.js +3 -0
  86. package/.next/{standalone/apps/web/.next/server/chunks/[root-of-the-server]__08f60c7._.js → server/chunks/[root-of-the-server]__1e8p5bd._.js} +2 -2
  87. package/.next/server/chunks/[root-of-the-server]__1ks-3_h._.js +3 -0
  88. package/.next/server/chunks/[root-of-the-server]__1lhfkyh._.js +1 -1
  89. package/.next/server/chunks/packages_marketplace_src_125_g2p._.js +1 -1
  90. package/.next/server/chunks/packages_scraper_src_0kkcv_v._.js +1 -1
  91. package/.next/server/chunks/packages_tools_video-audio_dist_ffmpeg-spawn_0by2bau.js +3 -0
  92. package/.next/server/chunks/ssr/_1yqlx1m._.js +1 -1
  93. package/.next/server/middleware-build-manifest.js +3 -3
  94. package/.next/server/pages/404.html +1 -1
  95. package/.next/server/pages/500.html +1 -1
  96. package/.next/standalone/apps/web/.next/BUILD_ID +1 -1
  97. package/.next/standalone/apps/web/.next/build-manifest.json +3 -3
  98. package/.next/standalone/apps/web/.next/required-server-files.json +1 -1
  99. package/.next/standalone/apps/web/.next/server/app/_global-error.html +1 -1
  100. package/.next/standalone/apps/web/.next/server/app/_global-error.rsc +1 -1
  101. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  102. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  103. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  104. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  105. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  106. package/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  107. package/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
  108. package/.next/standalone/apps/web/.next/server/app/_not-found.rsc +16 -16
  109. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_full.segment.rsc +16 -16
  110. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  111. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
  112. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  113. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  114. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  115. package/.next/standalone/apps/web/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
  116. package/.next/standalone/apps/web/.next/server/app/analytics.html +1 -1
  117. package/.next/standalone/apps/web/.next/server/app/analytics.rsc +17 -17
  118. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_full.segment.rsc +17 -17
  119. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
  120. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_index.segment.rsc +11 -11
  121. package/.next/standalone/apps/web/.next/server/app/analytics.segments/_tree.segment.rsc +1 -1
  122. package/.next/standalone/apps/web/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +3 -3
  123. package/.next/standalone/apps/web/.next/server/app/analytics.segments/analytics.segment.rsc +3 -3
  124. package/.next/standalone/apps/web/.next/server/app/api/chat/route.js +9 -9
  125. package/.next/standalone/apps/web/.next/server/app/api/chat/route.js.nft.json +1 -1
  126. package/.next/standalone/apps/web/.next/server/app/api/deploy/ssh/route.js +2 -2
  127. package/.next/standalone/apps/web/.next/server/app/api/deploy/ssh/route.js.nft.json +1 -1
  128. package/.next/standalone/apps/web/.next/server/app/api/doc-editor/edit/route.js +2 -2
  129. package/.next/standalone/apps/web/.next/server/app/api/doc-editor/export/route.js +2 -2
  130. package/.next/standalone/apps/web/.next/server/app/api/doc-editor/extract-text/route.js +2 -2
  131. package/.next/standalone/apps/web/.next/server/app/api/doc-editor/parse/route.js +1 -1
  132. package/.next/standalone/apps/web/.next/server/app/api/doc-editor/restore/route.js +2 -2
  133. package/.next/standalone/apps/web/.next/server/app/api/document/sign/route.js +3 -3
  134. package/.next/standalone/apps/web/.next/server/app/api/marketplace/[toolId]/route.js.nft.json +1 -1
  135. package/.next/standalone/apps/web/.next/server/app/api/marketplace/route.js.nft.json +1 -1
  136. package/.next/standalone/apps/web/.next/server/app/api/media/process/route.js.nft.json +1 -1
  137. package/.next/standalone/apps/web/.next/server/app/api/media/route.js.nft.json +1 -1
  138. package/.next/standalone/apps/web/.next/server/app/api/parse-file/route.js +2 -2
  139. package/.next/standalone/apps/web/.next/server/app/api/server/download/route.js +1 -1
  140. package/.next/standalone/apps/web/.next/server/app/api/server/generate/route.js +2 -2
  141. package/.next/standalone/apps/web/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  142. package/.next/standalone/apps/web/.next/server/app/chat.html +1 -1
  143. package/.next/standalone/apps/web/.next/server/app/chat.rsc +17 -17
  144. package/.next/standalone/apps/web/.next/server/app/chat.segments/_full.segment.rsc +17 -17
  145. package/.next/standalone/apps/web/.next/server/app/chat.segments/_head.segment.rsc +4 -4
  146. package/.next/standalone/apps/web/.next/server/app/chat.segments/_index.segment.rsc +11 -11
  147. package/.next/standalone/apps/web/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
  148. package/.next/standalone/apps/web/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +3 -3
  149. package/.next/standalone/apps/web/.next/server/app/chat.segments/chat.segment.rsc +3 -3
  150. package/.next/standalone/apps/web/.next/server/app/data/page_client-reference-manifest.js +1 -1
  151. package/.next/standalone/apps/web/.next/server/app/data.html +1 -1
  152. package/.next/standalone/apps/web/.next/server/app/data.rsc +17 -17
  153. package/.next/standalone/apps/web/.next/server/app/data.segments/_full.segment.rsc +17 -17
  154. package/.next/standalone/apps/web/.next/server/app/data.segments/_head.segment.rsc +4 -4
  155. package/.next/standalone/apps/web/.next/server/app/data.segments/_index.segment.rsc +11 -11
  156. package/.next/standalone/apps/web/.next/server/app/data.segments/_tree.segment.rsc +1 -1
  157. package/.next/standalone/apps/web/.next/server/app/data.segments/data/__PAGE__.segment.rsc +3 -3
  158. package/.next/standalone/apps/web/.next/server/app/data.segments/data.segment.rsc +3 -3
  159. package/.next/standalone/apps/web/.next/server/app/index.html +1 -1
  160. package/.next/standalone/apps/web/.next/server/app/index.rsc +16 -16
  161. package/.next/standalone/apps/web/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  162. package/.next/standalone/apps/web/.next/server/app/index.segments/_full.segment.rsc +16 -16
  163. package/.next/standalone/apps/web/.next/server/app/index.segments/_head.segment.rsc +4 -4
  164. package/.next/standalone/apps/web/.next/server/app/index.segments/_index.segment.rsc +11 -11
  165. package/.next/standalone/apps/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  166. package/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  167. package/.next/standalone/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  168. package/.next/standalone/apps/web/.next/server/app/settings.html +1 -1
  169. package/.next/standalone/apps/web/.next/server/app/settings.rsc +18 -18
  170. package/.next/standalone/apps/web/.next/server/app/settings.segments/_full.segment.rsc +18 -18
  171. package/.next/standalone/apps/web/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  172. package/.next/standalone/apps/web/.next/server/app/settings.segments/_index.segment.rsc +11 -11
  173. package/.next/standalone/apps/web/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  174. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
  175. package/.next/standalone/apps/web/.next/server/app/settings.segments/settings.segment.rsc +3 -3
  176. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__05707i3._.js +1 -1
  177. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0vmcld0._.js +3 -0
  178. package/.next/{server/chunks/[root-of-the-server]__08f60c7._.js → standalone/apps/web/.next/server/chunks/[root-of-the-server]__1e8p5bd._.js} +2 -2
  179. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__1ks-3_h._.js +3 -0
  180. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__1lhfkyh._.js +1 -1
  181. package/.next/standalone/apps/web/.next/server/chunks/packages_marketplace_src_125_g2p._.js +1 -1
  182. package/.next/standalone/apps/web/.next/server/chunks/packages_scraper_src_0kkcv_v._.js +1 -1
  183. package/.next/standalone/apps/web/.next/server/chunks/packages_tools_video-audio_dist_ffmpeg-spawn_0by2bau.js +3 -0
  184. package/.next/standalone/apps/web/.next/server/chunks/ssr/_1yqlx1m._.js +1 -1
  185. package/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +3 -3
  186. package/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
  187. package/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
  188. package/.next/standalone/apps/web/.next/static/chunks/{0wy4vhj2gft06.js → 2azppfcsqga3r.js} +1 -1
  189. package/.next/standalone/apps/web/CHANGELOG.md +9 -0
  190. package/.next/standalone/apps/web/components/update-banner.tsx +2 -2
  191. package/.next/standalone/apps/web/package.json +1 -1
  192. package/.next/standalone/apps/web/server.js +1 -1
  193. package/.next/standalone/packages/tools/video-audio/CHANGELOG.md +6 -0
  194. package/.next/standalone/packages/tools/video-audio/dist/audio-processor.js +30 -32
  195. package/.next/standalone/packages/tools/video-audio/dist/ffmpeg-spawn.js +127 -0
  196. package/.next/standalone/packages/tools/video-audio/dist/video-processor.js +95 -113
  197. package/.next/standalone/packages/tools/video-audio/package.json +2 -7
  198. package/.next/standalone/packages/tools/video-audio/src/audio-processor.ts +30 -31
  199. package/.next/standalone/packages/tools/video-audio/src/ffmpeg-spawn.ts +176 -0
  200. package/.next/standalone/packages/tools/video-audio/src/video-processor.ts +88 -116
  201. package/.next/static/chunks/{0wy4vhj2gft06.js → 2azppfcsqga3r.js} +1 -1
  202. package/CHANGELOG.md +9 -0
  203. package/LICENSE +176 -0
  204. package/components/update-banner.tsx +2 -2
  205. package/package.json +4 -4
  206. package/.next/server/chunks/[externals]__1_tvo45._.js +0 -3
  207. package/.next/server/chunks/[root-of-the-server]__010rwkn._.js +0 -3
  208. package/.next/server/chunks/[root-of-the-server]__0xbvdcw._.js +0 -3
  209. package/.next/server/chunks/node_modules__pnpm_0ddqx71._.js +0 -3
  210. package/.next/standalone/apps/web/.next/server/chunks/[externals]__1_tvo45._.js +0 -3
  211. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__010rwkn._.js +0 -3
  212. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0xbvdcw._.js +0 -3
  213. package/.next/standalone/apps/web/.next/server/chunks/node_modules__pnpm_0ddqx71._.js +0 -3
  214. package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/capabilities.js +0 -665
  215. package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/ffprobe.js +0 -261
  216. package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/fluent-ffmpeg.js +0 -226
  217. package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/options/audio.js +0 -178
  218. package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/options/custom.js +0 -212
  219. package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/options/inputs.js +0 -178
  220. package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/options/misc.js +0 -41
  221. package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/options/output.js +0 -162
  222. package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/options/video.js +0 -184
  223. package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/options/videosize.js +0 -291
  224. package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/presets/divx.js +0 -14
  225. package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/presets/flashvideo.js +0 -16
  226. package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/presets/podcast.js +0 -16
  227. package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/processor.js +0 -662
  228. package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/recipes.js +0 -456
  229. package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/utils.js +0 -455
  230. package/.next/standalone/node_modules/.pnpm/which@1.3.1/node_modules/which/CHANGELOG.md +0 -152
  231. package/.next/standalone/node_modules/.pnpm/which@1.3.1/node_modules/which/LICENSE +0 -15
  232. package/.next/standalone/node_modules/.pnpm/which@1.3.1/node_modules/which/README.md +0 -51
  233. package/.next/standalone/node_modules/.pnpm/which@1.3.1/node_modules/which/bin/which +0 -52
  234. package/.next/standalone/node_modules/.pnpm/which@1.3.1/node_modules/which/package.json +0 -30
  235. package/.next/standalone/node_modules/.pnpm/which@1.3.1/node_modules/which/which.js +0 -135
  236. /package/.next/standalone/apps/web/.next/static/{HU74sZ8oKr0VlhdDfm98x → PM7-3u8cSkShjD80zaJ4l}/_buildManifest.js +0 -0
  237. /package/.next/standalone/apps/web/.next/static/{HU74sZ8oKr0VlhdDfm98x → PM7-3u8cSkShjD80zaJ4l}/_clientMiddlewareManifest.js +0 -0
  238. /package/.next/standalone/apps/web/.next/static/{HU74sZ8oKr0VlhdDfm98x → PM7-3u8cSkShjD80zaJ4l}/_ssgManifest.js +0 -0
  239. /package/.next/static/{HU74sZ8oKr0VlhdDfm98x → PM7-3u8cSkShjD80zaJ4l}/_buildManifest.js +0 -0
  240. /package/.next/static/{HU74sZ8oKr0VlhdDfm98x → PM7-3u8cSkShjD80zaJ4l}/_clientMiddlewareManifest.js +0 -0
  241. /package/.next/static/{HU74sZ8oKr0VlhdDfm98x → PM7-3u8cSkShjD80zaJ4l}/_ssgManifest.js +0 -0
@@ -1,212 +0,0 @@
1
- /*jshint node:true*/
2
- 'use strict';
3
-
4
- var utils = require('../utils');
5
-
6
-
7
- /*
8
- *! Custom options methods
9
- */
10
-
11
- module.exports = function(proto) {
12
- /**
13
- * Add custom input option(s)
14
- *
15
- * When passing a single string or an array, each string containing two
16
- * words is split (eg. inputOptions('-option value') is supported) for
17
- * compatibility reasons. This is not the case when passing more than
18
- * one argument.
19
- *
20
- * @example
21
- * command.inputOptions('option1');
22
- *
23
- * @example
24
- * command.inputOptions('option1', 'option2');
25
- *
26
- * @example
27
- * command.inputOptions(['option1', 'option2']);
28
- *
29
- * @method FfmpegCommand#inputOptions
30
- * @category Custom options
31
- * @aliases addInputOption,addInputOptions,withInputOption,withInputOptions,inputOption
32
- *
33
- * @param {...String} options option string(s) or string array
34
- * @return FfmpegCommand
35
- */
36
- proto.addInputOption =
37
- proto.addInputOptions =
38
- proto.withInputOption =
39
- proto.withInputOptions =
40
- proto.inputOption =
41
- proto.inputOptions = function(options) {
42
- if (!this._currentInput) {
43
- throw new Error('No input specified');
44
- }
45
-
46
- var doSplit = true;
47
-
48
- if (arguments.length > 1) {
49
- options = [].slice.call(arguments);
50
- doSplit = false;
51
- }
52
-
53
- if (!Array.isArray(options)) {
54
- options = [options];
55
- }
56
-
57
- this._currentInput.options(options.reduce(function(options, option) {
58
- var split = String(option).split(' ');
59
-
60
- if (doSplit && split.length === 2) {
61
- options.push(split[0], split[1]);
62
- } else {
63
- options.push(option);
64
- }
65
-
66
- return options;
67
- }, []));
68
- return this;
69
- };
70
-
71
-
72
- /**
73
- * Add custom output option(s)
74
- *
75
- * @example
76
- * command.outputOptions('option1');
77
- *
78
- * @example
79
- * command.outputOptions('option1', 'option2');
80
- *
81
- * @example
82
- * command.outputOptions(['option1', 'option2']);
83
- *
84
- * @method FfmpegCommand#outputOptions
85
- * @category Custom options
86
- * @aliases addOutputOption,addOutputOptions,addOption,addOptions,withOutputOption,withOutputOptions,withOption,withOptions,outputOption
87
- *
88
- * @param {...String} options option string(s) or string array
89
- * @return FfmpegCommand
90
- */
91
- proto.addOutputOption =
92
- proto.addOutputOptions =
93
- proto.addOption =
94
- proto.addOptions =
95
- proto.withOutputOption =
96
- proto.withOutputOptions =
97
- proto.withOption =
98
- proto.withOptions =
99
- proto.outputOption =
100
- proto.outputOptions = function(options) {
101
- var doSplit = true;
102
-
103
- if (arguments.length > 1) {
104
- options = [].slice.call(arguments);
105
- doSplit = false;
106
- }
107
-
108
- if (!Array.isArray(options)) {
109
- options = [options];
110
- }
111
-
112
- this._currentOutput.options(options.reduce(function(options, option) {
113
- var split = String(option).split(' ');
114
-
115
- if (doSplit && split.length === 2) {
116
- options.push(split[0], split[1]);
117
- } else {
118
- options.push(option);
119
- }
120
-
121
- return options;
122
- }, []));
123
- return this;
124
- };
125
-
126
-
127
- /**
128
- * Specify a complex filtergraph
129
- *
130
- * Calling this method will override any previously set filtergraph, but you can set
131
- * as many filters as needed in one call.
132
- *
133
- * @example <caption>Overlay an image over a video (using a filtergraph string)</caption>
134
- * ffmpeg()
135
- * .input('video.avi')
136
- * .input('image.png')
137
- * .complexFilter('[0:v][1:v]overlay[out]', ['out']);
138
- *
139
- * @example <caption>Overlay an image over a video (using a filter array)</caption>
140
- * ffmpeg()
141
- * .input('video.avi')
142
- * .input('image.png')
143
- * .complexFilter([{
144
- * filter: 'overlay',
145
- * inputs: ['0:v', '1:v'],
146
- * outputs: ['out']
147
- * }], ['out']);
148
- *
149
- * @example <caption>Split video into RGB channels and output a 3x1 video with channels side to side</caption>
150
- * ffmpeg()
151
- * .input('video.avi')
152
- * .complexFilter([
153
- * // Duplicate video stream 3 times into streams a, b, and c
154
- * { filter: 'split', options: '3', outputs: ['a', 'b', 'c'] },
155
- *
156
- * // Create stream 'red' by cancelling green and blue channels from stream 'a'
157
- * { filter: 'lutrgb', options: { g: 0, b: 0 }, inputs: 'a', outputs: 'red' },
158
- *
159
- * // Create stream 'green' by cancelling red and blue channels from stream 'b'
160
- * { filter: 'lutrgb', options: { r: 0, b: 0 }, inputs: 'b', outputs: 'green' },
161
- *
162
- * // Create stream 'blue' by cancelling red and green channels from stream 'c'
163
- * { filter: 'lutrgb', options: { r: 0, g: 0 }, inputs: 'c', outputs: 'blue' },
164
- *
165
- * // Pad stream 'red' to 3x width, keeping the video on the left, and name output 'padded'
166
- * { filter: 'pad', options: { w: 'iw*3', h: 'ih' }, inputs: 'red', outputs: 'padded' },
167
- *
168
- * // Overlay 'green' onto 'padded', moving it to the center, and name output 'redgreen'
169
- * { filter: 'overlay', options: { x: 'w', y: 0 }, inputs: ['padded', 'green'], outputs: 'redgreen'},
170
- *
171
- * // Overlay 'blue' onto 'redgreen', moving it to the right
172
- * { filter: 'overlay', options: { x: '2*w', y: 0 }, inputs: ['redgreen', 'blue']},
173
- * ]);
174
- *
175
- * @method FfmpegCommand#complexFilter
176
- * @category Custom options
177
- * @aliases filterGraph
178
- *
179
- * @param {String|Array} spec filtergraph string or array of filter specification
180
- * objects, each having the following properties:
181
- * @param {String} spec.filter filter name
182
- * @param {String|Array} [spec.inputs] (array of) input stream specifier(s) for the filter,
183
- * defaults to ffmpeg automatically choosing the first unused matching streams
184
- * @param {String|Array} [spec.outputs] (array of) output stream specifier(s) for the filter,
185
- * defaults to ffmpeg automatically assigning the output to the output file
186
- * @param {Object|String|Array} [spec.options] filter options, can be omitted to not set any options
187
- * @param {Array} [map] (array of) stream specifier(s) from the graph to include in
188
- * ffmpeg output, defaults to ffmpeg automatically choosing the first matching streams.
189
- * @return FfmpegCommand
190
- */
191
- proto.filterGraph =
192
- proto.complexFilter = function(spec, map) {
193
- this._complexFilters.clear();
194
-
195
- if (!Array.isArray(spec)) {
196
- spec = [spec];
197
- }
198
-
199
- this._complexFilters('-filter_complex', utils.makeFilterStrings(spec).join(';'));
200
-
201
- if (Array.isArray(map)) {
202
- var self = this;
203
- map.forEach(function(streamSpec) {
204
- self._complexFilters('-map', streamSpec.replace(utils.streamRegexp, '[$1]'));
205
- });
206
- } else if (typeof map === 'string') {
207
- this._complexFilters('-map', map.replace(utils.streamRegexp, '[$1]'));
208
- }
209
-
210
- return this;
211
- };
212
- };
@@ -1,178 +0,0 @@
1
- /*jshint node:true*/
2
- 'use strict';
3
-
4
- var utils = require('../utils');
5
-
6
- /*
7
- *! Input-related methods
8
- */
9
-
10
- module.exports = function(proto) {
11
- /**
12
- * Add an input to command
13
- *
14
- * Also switches "current input", that is the input that will be affected
15
- * by subsequent input-related methods.
16
- *
17
- * Note: only one stream input is supported for now.
18
- *
19
- * @method FfmpegCommand#input
20
- * @category Input
21
- * @aliases mergeAdd,addInput
22
- *
23
- * @param {String|Readable} source input file path or readable stream
24
- * @return FfmpegCommand
25
- */
26
- proto.mergeAdd =
27
- proto.addInput =
28
- proto.input = function(source) {
29
- var isFile = false;
30
- var isStream = false;
31
-
32
- if (typeof source !== 'string') {
33
- if (!('readable' in source) || !(source.readable)) {
34
- throw new Error('Invalid input');
35
- }
36
-
37
- var hasInputStream = this._inputs.some(function(input) {
38
- return input.isStream;
39
- });
40
-
41
- if (hasInputStream) {
42
- throw new Error('Only one input stream is supported');
43
- }
44
-
45
- isStream = true;
46
- source.pause();
47
- } else {
48
- var protocol = source.match(/^([a-z]{2,}):/i);
49
- isFile = !protocol || protocol[0] === 'file';
50
- }
51
-
52
- this._inputs.push(this._currentInput = {
53
- source: source,
54
- isFile: isFile,
55
- isStream: isStream,
56
- options: utils.args()
57
- });
58
-
59
- return this;
60
- };
61
-
62
-
63
- /**
64
- * Specify input format for the last specified input
65
- *
66
- * @method FfmpegCommand#inputFormat
67
- * @category Input
68
- * @aliases withInputFormat,fromFormat
69
- *
70
- * @param {String} format input format
71
- * @return FfmpegCommand
72
- */
73
- proto.withInputFormat =
74
- proto.inputFormat =
75
- proto.fromFormat = function(format) {
76
- if (!this._currentInput) {
77
- throw new Error('No input specified');
78
- }
79
-
80
- this._currentInput.options('-f', format);
81
- return this;
82
- };
83
-
84
-
85
- /**
86
- * Specify input FPS for the last specified input
87
- * (only valid for raw video formats)
88
- *
89
- * @method FfmpegCommand#inputFps
90
- * @category Input
91
- * @aliases withInputFps,withInputFPS,withFpsInput,withFPSInput,inputFPS,inputFps,fpsInput
92
- *
93
- * @param {Number} fps input FPS
94
- * @return FfmpegCommand
95
- */
96
- proto.withInputFps =
97
- proto.withInputFPS =
98
- proto.withFpsInput =
99
- proto.withFPSInput =
100
- proto.inputFPS =
101
- proto.inputFps =
102
- proto.fpsInput =
103
- proto.FPSInput = function(fps) {
104
- if (!this._currentInput) {
105
- throw new Error('No input specified');
106
- }
107
-
108
- this._currentInput.options('-r', fps);
109
- return this;
110
- };
111
-
112
-
113
- /**
114
- * Use native framerate for the last specified input
115
- *
116
- * @method FfmpegCommand#native
117
- * @category Input
118
- * @aliases nativeFramerate,withNativeFramerate
119
- *
120
- * @return FfmmegCommand
121
- */
122
- proto.nativeFramerate =
123
- proto.withNativeFramerate =
124
- proto.native = function() {
125
- if (!this._currentInput) {
126
- throw new Error('No input specified');
127
- }
128
-
129
- this._currentInput.options('-re');
130
- return this;
131
- };
132
-
133
-
134
- /**
135
- * Specify input seek time for the last specified input
136
- *
137
- * @method FfmpegCommand#seekInput
138
- * @category Input
139
- * @aliases setStartTime,seekTo
140
- *
141
- * @param {String|Number} seek seek time in seconds or as a '[hh:[mm:]]ss[.xxx]' string
142
- * @return FfmpegCommand
143
- */
144
- proto.setStartTime =
145
- proto.seekInput = function(seek) {
146
- if (!this._currentInput) {
147
- throw new Error('No input specified');
148
- }
149
-
150
- this._currentInput.options('-ss', seek);
151
-
152
- return this;
153
- };
154
-
155
-
156
- /**
157
- * Loop over the last specified input
158
- *
159
- * @method FfmpegCommand#loop
160
- * @category Input
161
- *
162
- * @param {String|Number} [duration] loop duration in seconds or as a '[[hh:]mm:]ss[.xxx]' string
163
- * @return FfmpegCommand
164
- */
165
- proto.loop = function(duration) {
166
- if (!this._currentInput) {
167
- throw new Error('No input specified');
168
- }
169
-
170
- this._currentInput.options('-loop', '1');
171
-
172
- if (typeof duration !== 'undefined') {
173
- this.duration(duration);
174
- }
175
-
176
- return this;
177
- };
178
- };
@@ -1,41 +0,0 @@
1
- /*jshint node:true*/
2
- 'use strict';
3
-
4
- var path = require('path');
5
-
6
- /*
7
- *! Miscellaneous methods
8
- */
9
-
10
- module.exports = function(proto) {
11
- /**
12
- * Use preset
13
- *
14
- * @method FfmpegCommand#preset
15
- * @category Miscellaneous
16
- * @aliases usingPreset
17
- *
18
- * @param {String|Function} preset preset name or preset function
19
- */
20
- proto.usingPreset =
21
- proto.preset = function(preset) {
22
- if (typeof preset === 'function') {
23
- preset(this);
24
- } else {
25
- try {
26
- var modulePath = path.join(this.options.presets, preset);
27
- var module = require(modulePath);
28
-
29
- if (typeof module.load === 'function') {
30
- module.load(this);
31
- } else {
32
- throw new Error('preset ' + modulePath + ' has no load() function');
33
- }
34
- } catch (err) {
35
- throw new Error('preset ' + modulePath + ' could not be loaded: ' + err.message);
36
- }
37
- }
38
-
39
- return this;
40
- };
41
- };
@@ -1,162 +0,0 @@
1
- /*jshint node:true*/
2
- 'use strict';
3
-
4
- var utils = require('../utils');
5
-
6
-
7
- /*
8
- *! Output-related methods
9
- */
10
-
11
- module.exports = function(proto) {
12
- /**
13
- * Add output
14
- *
15
- * @method FfmpegCommand#output
16
- * @category Output
17
- * @aliases addOutput
18
- *
19
- * @param {String|Writable} target target file path or writable stream
20
- * @param {Object} [pipeopts={}] pipe options (only applies to streams)
21
- * @return FfmpegCommand
22
- */
23
- proto.addOutput =
24
- proto.output = function(target, pipeopts) {
25
- var isFile = false;
26
-
27
- if (!target && this._currentOutput) {
28
- // No target is only allowed when called from constructor
29
- throw new Error('Invalid output');
30
- }
31
-
32
- if (target && typeof target !== 'string') {
33
- if (!('writable' in target) || !(target.writable)) {
34
- throw new Error('Invalid output');
35
- }
36
- } else if (typeof target === 'string') {
37
- var protocol = target.match(/^([a-z]{2,}):/i);
38
- isFile = !protocol || protocol[0] === 'file';
39
- }
40
-
41
- if (target && !('target' in this._currentOutput)) {
42
- // For backwards compatibility, set target for first output
43
- this._currentOutput.target = target;
44
- this._currentOutput.isFile = isFile;
45
- this._currentOutput.pipeopts = pipeopts || {};
46
- } else {
47
- if (target && typeof target !== 'string') {
48
- var hasOutputStream = this._outputs.some(function(output) {
49
- return typeof output.target !== 'string';
50
- });
51
-
52
- if (hasOutputStream) {
53
- throw new Error('Only one output stream is supported');
54
- }
55
- }
56
-
57
- this._outputs.push(this._currentOutput = {
58
- target: target,
59
- isFile: isFile,
60
- flags: {},
61
- pipeopts: pipeopts || {}
62
- });
63
-
64
- var self = this;
65
- ['audio', 'audioFilters', 'video', 'videoFilters', 'sizeFilters', 'options'].forEach(function(key) {
66
- self._currentOutput[key] = utils.args();
67
- });
68
-
69
- if (!target) {
70
- // Call from constructor: remove target key
71
- delete this._currentOutput.target;
72
- }
73
- }
74
-
75
- return this;
76
- };
77
-
78
-
79
- /**
80
- * Specify output seek time
81
- *
82
- * @method FfmpegCommand#seek
83
- * @category Input
84
- * @aliases seekOutput
85
- *
86
- * @param {String|Number} seek seek time in seconds or as a '[hh:[mm:]]ss[.xxx]' string
87
- * @return FfmpegCommand
88
- */
89
- proto.seekOutput =
90
- proto.seek = function(seek) {
91
- this._currentOutput.options('-ss', seek);
92
- return this;
93
- };
94
-
95
-
96
- /**
97
- * Set output duration
98
- *
99
- * @method FfmpegCommand#duration
100
- * @category Output
101
- * @aliases withDuration,setDuration
102
- *
103
- * @param {String|Number} duration duration in seconds or as a '[[hh:]mm:]ss[.xxx]' string
104
- * @return FfmpegCommand
105
- */
106
- proto.withDuration =
107
- proto.setDuration =
108
- proto.duration = function(duration) {
109
- this._currentOutput.options('-t', duration);
110
- return this;
111
- };
112
-
113
-
114
- /**
115
- * Set output format
116
- *
117
- * @method FfmpegCommand#format
118
- * @category Output
119
- * @aliases toFormat,withOutputFormat,outputFormat
120
- *
121
- * @param {String} format output format name
122
- * @return FfmpegCommand
123
- */
124
- proto.toFormat =
125
- proto.withOutputFormat =
126
- proto.outputFormat =
127
- proto.format = function(format) {
128
- this._currentOutput.options('-f', format);
129
- return this;
130
- };
131
-
132
-
133
- /**
134
- * Add stream mapping to output
135
- *
136
- * @method FfmpegCommand#map
137
- * @category Output
138
- *
139
- * @param {String} spec stream specification string, with optional square brackets
140
- * @return FfmpegCommand
141
- */
142
- proto.map = function(spec) {
143
- this._currentOutput.options('-map', spec.replace(utils.streamRegexp, '[$1]'));
144
- return this;
145
- };
146
-
147
-
148
- /**
149
- * Run flvtool2/flvmeta on output
150
- *
151
- * @method FfmpegCommand#flvmeta
152
- * @category Output
153
- * @aliases updateFlvMetadata
154
- *
155
- * @return FfmpegCommand
156
- */
157
- proto.updateFlvMetadata =
158
- proto.flvmeta = function() {
159
- this._currentOutput.flags.flvmeta = true;
160
- return this;
161
- };
162
- };