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.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +12 -12
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +16 -16
- package/.next/server/app/_not-found.segments/_full.segment.rsc +16 -16
- package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
- package/.next/server/app/analytics.html +1 -1
- package/.next/server/app/analytics.rsc +17 -17
- package/.next/server/app/analytics.segments/_full.segment.rsc +17 -17
- package/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
- package/.next/server/app/analytics.segments/_index.segment.rsc +11 -11
- package/.next/server/app/analytics.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/analytics.segments/analytics.segment.rsc +3 -3
- package/.next/server/app/api/chat/route.js +9 -9
- package/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/.next/server/app/api/deploy/ssh/route.js +2 -2
- package/.next/server/app/api/deploy/ssh/route.js.nft.json +1 -1
- package/.next/server/app/api/doc-editor/edit/route.js +2 -2
- package/.next/server/app/api/doc-editor/export/route.js +2 -2
- package/.next/server/app/api/doc-editor/extract-text/route.js +2 -2
- package/.next/server/app/api/doc-editor/parse/route.js +1 -1
- package/.next/server/app/api/doc-editor/restore/route.js +2 -2
- package/.next/server/app/api/document/sign/route.js +3 -3
- package/.next/server/app/api/marketplace/[toolId]/route.js.nft.json +1 -1
- package/.next/server/app/api/marketplace/route.js.nft.json +1 -1
- package/.next/server/app/api/media/process/route.js.nft.json +1 -1
- package/.next/server/app/api/media/route.js.nft.json +1 -1
- package/.next/server/app/api/parse-file/route.js +2 -2
- package/.next/server/app/api/server/download/route.js +1 -1
- package/.next/server/app/api/server/generate/route.js +2 -2
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +17 -17
- package/.next/server/app/chat.segments/_full.segment.rsc +17 -17
- package/.next/server/app/chat.segments/_head.segment.rsc +4 -4
- package/.next/server/app/chat.segments/_index.segment.rsc +11 -11
- package/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/chat.segments/chat.segment.rsc +3 -3
- package/.next/server/app/data/page_client-reference-manifest.js +1 -1
- package/.next/server/app/data.html +1 -1
- package/.next/server/app/data.rsc +17 -17
- package/.next/server/app/data.segments/_full.segment.rsc +17 -17
- package/.next/server/app/data.segments/_head.segment.rsc +4 -4
- package/.next/server/app/data.segments/_index.segment.rsc +11 -11
- package/.next/server/app/data.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/data.segments/data/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/data.segments/data.segment.rsc +3 -3
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +16 -16
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +16 -16
- package/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/server/app/index.segments/_index.segment.rsc +11 -11
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +18 -18
- package/.next/server/app/settings.segments/_full.segment.rsc +18 -18
- package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_index.segment.rsc +11 -11
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
- package/.next/server/chunks/[root-of-the-server]__05707i3._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0vmcld0._.js +3 -0
- package/.next/{standalone/apps/web/.next/server/chunks/[root-of-the-server]__08f60c7._.js → server/chunks/[root-of-the-server]__1e8p5bd._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1ks-3_h._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1lhfkyh._.js +1 -1
- package/.next/server/chunks/packages_marketplace_src_125_g2p._.js +1 -1
- package/.next/server/chunks/packages_scraper_src_0kkcv_v._.js +1 -1
- package/.next/server/chunks/packages_tools_video-audio_dist_ffmpeg-spawn_0by2bau.js +3 -0
- package/.next/server/chunks/ssr/_1yqlx1m._.js +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/standalone/apps/web/.next/BUILD_ID +1 -1
- package/.next/standalone/apps/web/.next/build-manifest.json +3 -3
- package/.next/standalone/apps/web/.next/required-server-files.json +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.rsc +16 -16
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_full.segment.rsc +16 -16
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/app/analytics.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/analytics.rsc +17 -17
- package/.next/standalone/apps/web/.next/server/app/analytics.segments/_full.segment.rsc +17 -17
- package/.next/standalone/apps/web/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
- package/.next/standalone/apps/web/.next/server/app/analytics.segments/_index.segment.rsc +11 -11
- package/.next/standalone/apps/web/.next/server/app/analytics.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/apps/web/.next/server/app/analytics.segments/analytics.segment.rsc +3 -3
- package/.next/standalone/apps/web/.next/server/app/api/chat/route.js +9 -9
- package/.next/standalone/apps/web/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/.next/standalone/apps/web/.next/server/app/api/deploy/ssh/route.js +2 -2
- package/.next/standalone/apps/web/.next/server/app/api/deploy/ssh/route.js.nft.json +1 -1
- package/.next/standalone/apps/web/.next/server/app/api/doc-editor/edit/route.js +2 -2
- package/.next/standalone/apps/web/.next/server/app/api/doc-editor/export/route.js +2 -2
- package/.next/standalone/apps/web/.next/server/app/api/doc-editor/extract-text/route.js +2 -2
- package/.next/standalone/apps/web/.next/server/app/api/doc-editor/parse/route.js +1 -1
- package/.next/standalone/apps/web/.next/server/app/api/doc-editor/restore/route.js +2 -2
- package/.next/standalone/apps/web/.next/server/app/api/document/sign/route.js +3 -3
- package/.next/standalone/apps/web/.next/server/app/api/marketplace/[toolId]/route.js.nft.json +1 -1
- package/.next/standalone/apps/web/.next/server/app/api/marketplace/route.js.nft.json +1 -1
- package/.next/standalone/apps/web/.next/server/app/api/media/process/route.js.nft.json +1 -1
- package/.next/standalone/apps/web/.next/server/app/api/media/route.js.nft.json +1 -1
- package/.next/standalone/apps/web/.next/server/app/api/parse-file/route.js +2 -2
- package/.next/standalone/apps/web/.next/server/app/api/server/download/route.js +1 -1
- package/.next/standalone/apps/web/.next/server/app/api/server/generate/route.js +2 -2
- package/.next/standalone/apps/web/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/app/chat.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/chat.rsc +17 -17
- package/.next/standalone/apps/web/.next/server/app/chat.segments/_full.segment.rsc +17 -17
- package/.next/standalone/apps/web/.next/server/app/chat.segments/_head.segment.rsc +4 -4
- package/.next/standalone/apps/web/.next/server/app/chat.segments/_index.segment.rsc +11 -11
- package/.next/standalone/apps/web/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/apps/web/.next/server/app/chat.segments/chat.segment.rsc +3 -3
- package/.next/standalone/apps/web/.next/server/app/data/page_client-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/app/data.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/data.rsc +17 -17
- package/.next/standalone/apps/web/.next/server/app/data.segments/_full.segment.rsc +17 -17
- package/.next/standalone/apps/web/.next/server/app/data.segments/_head.segment.rsc +4 -4
- package/.next/standalone/apps/web/.next/server/app/data.segments/_index.segment.rsc +11 -11
- package/.next/standalone/apps/web/.next/server/app/data.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/data.segments/data/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/apps/web/.next/server/app/data.segments/data.segment.rsc +3 -3
- package/.next/standalone/apps/web/.next/server/app/index.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.rsc +16 -16
- package/.next/standalone/apps/web/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/index.segments/_full.segment.rsc +16 -16
- package/.next/standalone/apps/web/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/standalone/apps/web/.next/server/app/index.segments/_index.segment.rsc +11 -11
- package/.next/standalone/apps/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.rsc +18 -18
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_full.segment.rsc +18 -18
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_index.segment.rsc +11 -11
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/standalone/apps/web/.next/server/app/settings.segments/settings.segment.rsc +3 -3
- package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__05707i3._.js +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0vmcld0._.js +3 -0
- package/.next/{server/chunks/[root-of-the-server]__08f60c7._.js → standalone/apps/web/.next/server/chunks/[root-of-the-server]__1e8p5bd._.js} +2 -2
- package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__1ks-3_h._.js +3 -0
- package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__1lhfkyh._.js +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/packages_marketplace_src_125_g2p._.js +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/packages_scraper_src_0kkcv_v._.js +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/packages_tools_video-audio_dist_ffmpeg-spawn_0by2bau.js +3 -0
- package/.next/standalone/apps/web/.next/server/chunks/ssr/_1yqlx1m._.js +1 -1
- package/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
- package/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
- package/.next/standalone/apps/web/.next/static/chunks/{0wy4vhj2gft06.js → 2azppfcsqga3r.js} +1 -1
- package/.next/standalone/apps/web/CHANGELOG.md +9 -0
- package/.next/standalone/apps/web/components/update-banner.tsx +2 -2
- package/.next/standalone/apps/web/package.json +1 -1
- package/.next/standalone/apps/web/server.js +1 -1
- package/.next/standalone/packages/tools/video-audio/CHANGELOG.md +6 -0
- package/.next/standalone/packages/tools/video-audio/dist/audio-processor.js +30 -32
- package/.next/standalone/packages/tools/video-audio/dist/ffmpeg-spawn.js +127 -0
- package/.next/standalone/packages/tools/video-audio/dist/video-processor.js +95 -113
- package/.next/standalone/packages/tools/video-audio/package.json +2 -7
- package/.next/standalone/packages/tools/video-audio/src/audio-processor.ts +30 -31
- package/.next/standalone/packages/tools/video-audio/src/ffmpeg-spawn.ts +176 -0
- package/.next/standalone/packages/tools/video-audio/src/video-processor.ts +88 -116
- package/.next/static/chunks/{0wy4vhj2gft06.js → 2azppfcsqga3r.js} +1 -1
- package/CHANGELOG.md +9 -0
- package/LICENSE +176 -0
- package/components/update-banner.tsx +2 -2
- package/package.json +4 -4
- package/.next/server/chunks/[externals]__1_tvo45._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__010rwkn._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0xbvdcw._.js +0 -3
- package/.next/server/chunks/node_modules__pnpm_0ddqx71._.js +0 -3
- package/.next/standalone/apps/web/.next/server/chunks/[externals]__1_tvo45._.js +0 -3
- package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__010rwkn._.js +0 -3
- package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0xbvdcw._.js +0 -3
- package/.next/standalone/apps/web/.next/server/chunks/node_modules__pnpm_0ddqx71._.js +0 -3
- package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/capabilities.js +0 -665
- package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/ffprobe.js +0 -261
- package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/fluent-ffmpeg.js +0 -226
- package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/options/audio.js +0 -178
- package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/options/custom.js +0 -212
- package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/options/inputs.js +0 -178
- package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/options/misc.js +0 -41
- package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/options/output.js +0 -162
- package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/options/video.js +0 -184
- package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/options/videosize.js +0 -291
- package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/presets/divx.js +0 -14
- package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/presets/flashvideo.js +0 -16
- package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/presets/podcast.js +0 -16
- package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/processor.js +0 -662
- package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/recipes.js +0 -456
- package/.next/standalone/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/utils.js +0 -455
- package/.next/standalone/node_modules/.pnpm/which@1.3.1/node_modules/which/CHANGELOG.md +0 -152
- package/.next/standalone/node_modules/.pnpm/which@1.3.1/node_modules/which/LICENSE +0 -15
- package/.next/standalone/node_modules/.pnpm/which@1.3.1/node_modules/which/README.md +0 -51
- package/.next/standalone/node_modules/.pnpm/which@1.3.1/node_modules/which/bin/which +0 -52
- package/.next/standalone/node_modules/.pnpm/which@1.3.1/node_modules/which/package.json +0 -30
- package/.next/standalone/node_modules/.pnpm/which@1.3.1/node_modules/which/which.js +0 -135
- /package/.next/standalone/apps/web/.next/static/{HU74sZ8oKr0VlhdDfm98x → PM7-3u8cSkShjD80zaJ4l}/_buildManifest.js +0 -0
- /package/.next/standalone/apps/web/.next/static/{HU74sZ8oKr0VlhdDfm98x → PM7-3u8cSkShjD80zaJ4l}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/apps/web/.next/static/{HU74sZ8oKr0VlhdDfm98x → PM7-3u8cSkShjD80zaJ4l}/_ssgManifest.js +0 -0
- /package/.next/static/{HU74sZ8oKr0VlhdDfm98x → PM7-3u8cSkShjD80zaJ4l}/_buildManifest.js +0 -0
- /package/.next/static/{HU74sZ8oKr0VlhdDfm98x → PM7-3u8cSkShjD80zaJ4l}/_clientMiddlewareManifest.js +0 -0
- /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
|
-
};
|