larkup 0.1.45 → 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/{041vy184s-7sh.js → 2azppfcsqga3r.js} +1 -1
  189. package/.next/standalone/apps/web/CHANGELOG.md +18 -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/{041vy184s-7sh.js → 2azppfcsqga3r.js} +1 -1
  202. package/CHANGELOG.md +18 -0
  203. package/LICENSE +176 -0
  204. package/components/update-banner.tsx +2 -2
  205. package/package.json +6 -6
  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/{IHAOZOY0iJJ_cMmT7-lqT → PM7-3u8cSkShjD80zaJ4l}/_buildManifest.js +0 -0
  237. /package/.next/standalone/apps/web/.next/static/{IHAOZOY0iJJ_cMmT7-lqT → PM7-3u8cSkShjD80zaJ4l}/_clientMiddlewareManifest.js +0 -0
  238. /package/.next/standalone/apps/web/.next/static/{IHAOZOY0iJJ_cMmT7-lqT → PM7-3u8cSkShjD80zaJ4l}/_ssgManifest.js +0 -0
  239. /package/.next/static/{IHAOZOY0iJJ_cMmT7-lqT → PM7-3u8cSkShjD80zaJ4l}/_buildManifest.js +0 -0
  240. /package/.next/static/{IHAOZOY0iJJ_cMmT7-lqT → PM7-3u8cSkShjD80zaJ4l}/_clientMiddlewareManifest.js +0 -0
  241. /package/.next/static/{IHAOZOY0iJJ_cMmT7-lqT → PM7-3u8cSkShjD80zaJ4l}/_ssgManifest.js +0 -0
@@ -1,184 +0,0 @@
1
- /*jshint node:true*/
2
- 'use strict';
3
-
4
- var utils = require('../utils');
5
-
6
-
7
- /*
8
- *! Video-related methods
9
- */
10
-
11
- module.exports = function(proto) {
12
- /**
13
- * Disable video in the output
14
- *
15
- * @method FfmpegCommand#noVideo
16
- * @category Video
17
- * @aliases withNoVideo
18
- *
19
- * @return FfmpegCommand
20
- */
21
- proto.withNoVideo =
22
- proto.noVideo = function() {
23
- this._currentOutput.video.clear();
24
- this._currentOutput.videoFilters.clear();
25
- this._currentOutput.video('-vn');
26
-
27
- return this;
28
- };
29
-
30
-
31
- /**
32
- * Specify video codec
33
- *
34
- * @method FfmpegCommand#videoCodec
35
- * @category Video
36
- * @aliases withVideoCodec
37
- *
38
- * @param {String} codec video codec name
39
- * @return FfmpegCommand
40
- */
41
- proto.withVideoCodec =
42
- proto.videoCodec = function(codec) {
43
- this._currentOutput.video('-vcodec', codec);
44
- return this;
45
- };
46
-
47
-
48
- /**
49
- * Specify video bitrate
50
- *
51
- * @method FfmpegCommand#videoBitrate
52
- * @category Video
53
- * @aliases withVideoBitrate
54
- *
55
- * @param {String|Number} bitrate video bitrate in kbps (with an optional 'k' suffix)
56
- * @param {Boolean} [constant=false] enforce constant bitrate
57
- * @return FfmpegCommand
58
- */
59
- proto.withVideoBitrate =
60
- proto.videoBitrate = function(bitrate, constant) {
61
- bitrate = ('' + bitrate).replace(/k?$/, 'k');
62
-
63
- this._currentOutput.video('-b:v', bitrate);
64
- if (constant) {
65
- this._currentOutput.video(
66
- '-maxrate', bitrate,
67
- '-minrate', bitrate,
68
- '-bufsize', '3M'
69
- );
70
- }
71
-
72
- return this;
73
- };
74
-
75
-
76
- /**
77
- * Specify custom video filter(s)
78
- *
79
- * Can be called both with one or many filters, or a filter array.
80
- *
81
- * @example
82
- * command.videoFilters('filter1');
83
- *
84
- * @example
85
- * command.videoFilters('filter1', 'filter2=param1=value1:param2=value2');
86
- *
87
- * @example
88
- * command.videoFilters(['filter1', 'filter2']);
89
- *
90
- * @example
91
- * command.videoFilters([
92
- * {
93
- * filter: 'filter1'
94
- * },
95
- * {
96
- * filter: 'filter2',
97
- * options: 'param=value:param=value'
98
- * }
99
- * ]);
100
- *
101
- * @example
102
- * command.videoFilters(
103
- * {
104
- * filter: 'filter1',
105
- * options: ['value1', 'value2']
106
- * },
107
- * {
108
- * filter: 'filter2',
109
- * options: { param1: 'value1', param2: 'value2' }
110
- * }
111
- * );
112
- *
113
- * @method FfmpegCommand#videoFilters
114
- * @category Video
115
- * @aliases withVideoFilter,withVideoFilters,videoFilter
116
- *
117
- * @param {...String|String[]|Object[]} filters video filter strings, string array or
118
- * filter specification array, each with the following properties:
119
- * @param {String} filters.filter filter name
120
- * @param {String|String[]|Object} [filters.options] filter option string, array, or object
121
- * @return FfmpegCommand
122
- */
123
- proto.withVideoFilter =
124
- proto.withVideoFilters =
125
- proto.videoFilter =
126
- proto.videoFilters = function(filters) {
127
- if (arguments.length > 1) {
128
- filters = [].slice.call(arguments);
129
- }
130
-
131
- if (!Array.isArray(filters)) {
132
- filters = [filters];
133
- }
134
-
135
- this._currentOutput.videoFilters(utils.makeFilterStrings(filters));
136
-
137
- return this;
138
- };
139
-
140
-
141
- /**
142
- * Specify output FPS
143
- *
144
- * @method FfmpegCommand#fps
145
- * @category Video
146
- * @aliases withOutputFps,withOutputFPS,withFpsOutput,withFPSOutput,withFps,withFPS,outputFPS,outputFps,fpsOutput,FPSOutput,FPS
147
- *
148
- * @param {Number} fps output FPS
149
- * @return FfmpegCommand
150
- */
151
- proto.withOutputFps =
152
- proto.withOutputFPS =
153
- proto.withFpsOutput =
154
- proto.withFPSOutput =
155
- proto.withFps =
156
- proto.withFPS =
157
- proto.outputFPS =
158
- proto.outputFps =
159
- proto.fpsOutput =
160
- proto.FPSOutput =
161
- proto.fps =
162
- proto.FPS = function(fps) {
163
- this._currentOutput.video('-r', fps);
164
- return this;
165
- };
166
-
167
-
168
- /**
169
- * Only transcode a certain number of frames
170
- *
171
- * @method FfmpegCommand#frames
172
- * @category Video
173
- * @aliases takeFrames,withFrames
174
- *
175
- * @param {Number} frames frame count
176
- * @return FfmpegCommand
177
- */
178
- proto.takeFrames =
179
- proto.withFrames =
180
- proto.frames = function(frames) {
181
- this._currentOutput.video('-vframes', frames);
182
- return this;
183
- };
184
- };
@@ -1,291 +0,0 @@
1
- /*jshint node:true*/
2
- 'use strict';
3
-
4
- /*
5
- *! Size helpers
6
- */
7
-
8
-
9
- /**
10
- * Return filters to pad video to width*height,
11
- *
12
- * @param {Number} width output width
13
- * @param {Number} height output height
14
- * @param {Number} aspect video aspect ratio (without padding)
15
- * @param {Number} color padding color
16
- * @return scale/pad filters
17
- * @private
18
- */
19
- function getScalePadFilters(width, height, aspect, color) {
20
- /*
21
- let a be the input aspect ratio, A be the requested aspect ratio
22
-
23
- if a > A, padding is done on top and bottom
24
- if a < A, padding is done on left and right
25
- */
26
-
27
- return [
28
- /*
29
- In both cases, we first have to scale the input to match the requested size.
30
- When using computed width/height, we truncate them to multiples of 2
31
- */
32
- {
33
- filter: 'scale',
34
- options: {
35
- w: 'if(gt(a,' + aspect + '),' + width + ',trunc(' + height + '*a/2)*2)',
36
- h: 'if(lt(a,' + aspect + '),' + height + ',trunc(' + width + '/a/2)*2)'
37
- }
38
- },
39
-
40
- /*
41
- Then we pad the scaled input to match the target size
42
- (here iw and ih refer to the padding input, i.e the scaled output)
43
- */
44
-
45
- {
46
- filter: 'pad',
47
- options: {
48
- w: width,
49
- h: height,
50
- x: 'if(gt(a,' + aspect + '),0,(' + width + '-iw)/2)',
51
- y: 'if(lt(a,' + aspect + '),0,(' + height + '-ih)/2)',
52
- color: color
53
- }
54
- }
55
- ];
56
- }
57
-
58
-
59
- /**
60
- * Recompute size filters
61
- *
62
- * @param {Object} output
63
- * @param {String} key newly-added parameter name ('size', 'aspect' or 'pad')
64
- * @param {String} value newly-added parameter value
65
- * @return filter string array
66
- * @private
67
- */
68
- function createSizeFilters(output, key, value) {
69
- // Store parameters
70
- var data = output.sizeData = output.sizeData || {};
71
- data[key] = value;
72
-
73
- if (!('size' in data)) {
74
- // No size requested, keep original size
75
- return [];
76
- }
77
-
78
- // Try to match the different size string formats
79
- var fixedSize = data.size.match(/([0-9]+)x([0-9]+)/);
80
- var fixedWidth = data.size.match(/([0-9]+)x\?/);
81
- var fixedHeight = data.size.match(/\?x([0-9]+)/);
82
- var percentRatio = data.size.match(/\b([0-9]{1,3})%/);
83
- var width, height, aspect;
84
-
85
- if (percentRatio) {
86
- var ratio = Number(percentRatio[1]) / 100;
87
- return [{
88
- filter: 'scale',
89
- options: {
90
- w: 'trunc(iw*' + ratio + '/2)*2',
91
- h: 'trunc(ih*' + ratio + '/2)*2'
92
- }
93
- }];
94
- } else if (fixedSize) {
95
- // Round target size to multiples of 2
96
- width = Math.round(Number(fixedSize[1]) / 2) * 2;
97
- height = Math.round(Number(fixedSize[2]) / 2) * 2;
98
-
99
- aspect = width / height;
100
-
101
- if (data.pad) {
102
- return getScalePadFilters(width, height, aspect, data.pad);
103
- } else {
104
- // No autopad requested, rescale to target size
105
- return [{ filter: 'scale', options: { w: width, h: height }}];
106
- }
107
- } else if (fixedWidth || fixedHeight) {
108
- if ('aspect' in data) {
109
- // Specified aspect ratio
110
- width = fixedWidth ? fixedWidth[1] : Math.round(Number(fixedHeight[1]) * data.aspect);
111
- height = fixedHeight ? fixedHeight[1] : Math.round(Number(fixedWidth[1]) / data.aspect);
112
-
113
- // Round to multiples of 2
114
- width = Math.round(width / 2) * 2;
115
- height = Math.round(height / 2) * 2;
116
-
117
- if (data.pad) {
118
- return getScalePadFilters(width, height, data.aspect, data.pad);
119
- } else {
120
- // No autopad requested, rescale to target size
121
- return [{ filter: 'scale', options: { w: width, h: height }}];
122
- }
123
- } else {
124
- // Keep input aspect ratio
125
-
126
- if (fixedWidth) {
127
- return [{
128
- filter: 'scale',
129
- options: {
130
- w: Math.round(Number(fixedWidth[1]) / 2) * 2,
131
- h: 'trunc(ow/a/2)*2'
132
- }
133
- }];
134
- } else {
135
- return [{
136
- filter: 'scale',
137
- options: {
138
- w: 'trunc(oh*a/2)*2',
139
- h: Math.round(Number(fixedHeight[1]) / 2) * 2
140
- }
141
- }];
142
- }
143
- }
144
- } else {
145
- throw new Error('Invalid size specified: ' + data.size);
146
- }
147
- }
148
-
149
-
150
- /*
151
- *! Video size-related methods
152
- */
153
-
154
- module.exports = function(proto) {
155
- /**
156
- * Keep display aspect ratio
157
- *
158
- * This method is useful when converting an input with non-square pixels to an output format
159
- * that does not support non-square pixels. It rescales the input so that the display aspect
160
- * ratio is the same.
161
- *
162
- * @method FfmpegCommand#keepDAR
163
- * @category Video size
164
- * @aliases keepPixelAspect,keepDisplayAspect,keepDisplayAspectRatio
165
- *
166
- * @return FfmpegCommand
167
- */
168
- proto.keepPixelAspect = // Only for compatibility, this is not about keeping _pixel_ aspect ratio
169
- proto.keepDisplayAspect =
170
- proto.keepDisplayAspectRatio =
171
- proto.keepDAR = function() {
172
- return this.videoFilters([
173
- {
174
- filter: 'scale',
175
- options: {
176
- w: 'if(gt(sar,1),iw*sar,iw)',
177
- h: 'if(lt(sar,1),ih/sar,ih)'
178
- }
179
- },
180
- {
181
- filter: 'setsar',
182
- options: '1'
183
- }
184
- ]);
185
- };
186
-
187
-
188
- /**
189
- * Set output size
190
- *
191
- * The 'size' parameter can have one of 4 forms:
192
- * - 'X%': rescale to xx % of the original size
193
- * - 'WxH': specify width and height
194
- * - 'Wx?': specify width and compute height from input aspect ratio
195
- * - '?xH': specify height and compute width from input aspect ratio
196
- *
197
- * Note: both dimensions will be truncated to multiples of 2.
198
- *
199
- * @method FfmpegCommand#size
200
- * @category Video size
201
- * @aliases withSize,setSize
202
- *
203
- * @param {String} size size string, eg. '33%', '320x240', '320x?', '?x240'
204
- * @return FfmpegCommand
205
- */
206
- proto.withSize =
207
- proto.setSize =
208
- proto.size = function(size) {
209
- var filters = createSizeFilters(this._currentOutput, 'size', size);
210
-
211
- this._currentOutput.sizeFilters.clear();
212
- this._currentOutput.sizeFilters(filters);
213
-
214
- return this;
215
- };
216
-
217
-
218
- /**
219
- * Set output aspect ratio
220
- *
221
- * @method FfmpegCommand#aspect
222
- * @category Video size
223
- * @aliases withAspect,withAspectRatio,setAspect,setAspectRatio,aspectRatio
224
- *
225
- * @param {String|Number} aspect aspect ratio (number or 'X:Y' string)
226
- * @return FfmpegCommand
227
- */
228
- proto.withAspect =
229
- proto.withAspectRatio =
230
- proto.setAspect =
231
- proto.setAspectRatio =
232
- proto.aspect =
233
- proto.aspectRatio = function(aspect) {
234
- var a = Number(aspect);
235
- if (isNaN(a)) {
236
- var match = aspect.match(/^(\d+):(\d+)$/);
237
- if (match) {
238
- a = Number(match[1]) / Number(match[2]);
239
- } else {
240
- throw new Error('Invalid aspect ratio: ' + aspect);
241
- }
242
- }
243
-
244
- var filters = createSizeFilters(this._currentOutput, 'aspect', a);
245
-
246
- this._currentOutput.sizeFilters.clear();
247
- this._currentOutput.sizeFilters(filters);
248
-
249
- return this;
250
- };
251
-
252
-
253
- /**
254
- * Enable auto-padding the output
255
- *
256
- * @method FfmpegCommand#autopad
257
- * @category Video size
258
- * @aliases applyAutopadding,applyAutoPadding,applyAutopad,applyAutoPad,withAutopadding,withAutoPadding,withAutopad,withAutoPad,autoPad
259
- *
260
- * @param {Boolean} [pad=true] enable/disable auto-padding
261
- * @param {String} [color='black'] pad color
262
- */
263
- proto.applyAutopadding =
264
- proto.applyAutoPadding =
265
- proto.applyAutopad =
266
- proto.applyAutoPad =
267
- proto.withAutopadding =
268
- proto.withAutoPadding =
269
- proto.withAutopad =
270
- proto.withAutoPad =
271
- proto.autoPad =
272
- proto.autopad = function(pad, color) {
273
- // Allow autopad(color)
274
- if (typeof pad === 'string') {
275
- color = pad;
276
- pad = true;
277
- }
278
-
279
- // Allow autopad() and autopad(undefined, color)
280
- if (typeof pad === 'undefined') {
281
- pad = true;
282
- }
283
-
284
- var filters = createSizeFilters(this._currentOutput, 'pad', pad ? color || 'black' : false);
285
-
286
- this._currentOutput.sizeFilters.clear();
287
- this._currentOutput.sizeFilters(filters);
288
-
289
- return this;
290
- };
291
- };
@@ -1,14 +0,0 @@
1
- /*jshint node:true */
2
- 'use strict';
3
-
4
- exports.load = function(ffmpeg) {
5
- ffmpeg
6
- .format('avi')
7
- .videoBitrate('1024k')
8
- .videoCodec('mpeg4')
9
- .size('720x?')
10
- .audioBitrate('128k')
11
- .audioChannels(2)
12
- .audioCodec('libmp3lame')
13
- .outputOptions(['-vtag DIVX']);
14
- };
@@ -1,16 +0,0 @@
1
- /*jshint node:true */
2
- 'use strict';
3
-
4
- exports.load = function(ffmpeg) {
5
- ffmpeg
6
- .format('flv')
7
- .flvmeta()
8
- .size('320x?')
9
- .videoBitrate('512k')
10
- .videoCodec('libx264')
11
- .fps(24)
12
- .audioBitrate('96k')
13
- .audioCodec('aac')
14
- .audioFrequency(22050)
15
- .audioChannels(2);
16
- };
@@ -1,16 +0,0 @@
1
- /*jshint node:true */
2
- 'use strict';
3
-
4
- exports.load = function(ffmpeg) {
5
- ffmpeg
6
- .format('m4v')
7
- .videoBitrate('512k')
8
- .videoCodec('libx264')
9
- .size('320x176')
10
- .audioBitrate('128k')
11
- .audioCodec('aac')
12
- .audioChannels(1)
13
- .outputOptions(['-flags', '+loop', '-cmp', '+chroma', '-partitions','+parti4x4+partp8x8+partb8x8', '-flags2',
14
- '+mixed_refs', '-me_method umh', '-subq 5', '-bufsize 2M', '-rc_eq \'blurCplx^(1-qComp)\'',
15
- '-qcomp 0.6', '-qmin 10', '-qmax 51', '-qdiff 4', '-level 13' ]);
16
- };