@mediaproc/video 1.2.1 ā 1.3.0
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/dist/commands/compress.d.ts.map +1 -1
- package/dist/commands/compress.js +8 -5
- package/dist/commands/compress.js.map +1 -1
- package/dist/commands/convert.d.ts.map +1 -1
- package/dist/commands/convert.js +9 -5
- package/dist/commands/convert.js.map +1 -1
- package/dist/commands/extract.d.ts.map +1 -1
- package/dist/commands/extract.js +224 -212
- package/dist/commands/extract.js.map +1 -1
- package/dist/commands/merge.d.ts.map +1 -1
- package/dist/commands/merge.js +9 -5
- package/dist/commands/merge.js.map +1 -1
- package/dist/commands/resize.d.ts.map +1 -1
- package/dist/commands/resize.js +4 -5
- package/dist/commands/resize.js.map +1 -1
- package/dist/commands/transcode.d.ts.map +1 -1
- package/dist/commands/transcode.js +37 -3
- package/dist/commands/transcode.js.map +1 -1
- package/dist/commands/trim.d.ts.map +1 -1
- package/dist/commands/trim.js +9 -5
- package/dist/commands/trim.js.map +1 -1
- package/dist/types.d.ts +6 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/explainFormatter.d.ts +2 -0
- package/dist/utils/explainFormatter.d.ts.map +1 -0
- package/dist/utils/explainFormatter.js +4 -0
- package/dist/utils/explainFormatter.js.map +1 -0
- package/dist/utils/ffmpeg.js +1 -1
- package/dist/utils/ffmpeg.js.map +1 -1
- package/package.json +6 -7
package/dist/commands/extract.js
CHANGED
|
@@ -1,231 +1,243 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import { validatePaths, resolveOutputPaths } from '../utils/pathValidator.js';
|
|
7
|
-
import { styleFFmpegOutput, shouldDisplayLine } from '../utils/ffmpeg-output.js';
|
|
2
|
+
import { runFFmpeg, checkFFmpeg } from '../utils/ffmpeg.js';
|
|
3
|
+
import { parseInputPaths, resolveOutputPaths, showPluginBranding, createStandardHelp } from '@mediaproc/core';
|
|
4
|
+
import ora from 'ora';
|
|
5
|
+
import { logFFmpegOutput } from '../utils/ffmpegLogger.js';
|
|
8
6
|
export function extractCommand(videoCmd) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
.
|
|
13
|
-
.
|
|
14
|
-
.option('--
|
|
15
|
-
.option('--
|
|
16
|
-
.option('--
|
|
17
|
-
.option('
|
|
18
|
-
.option('--
|
|
7
|
+
const extract = videoCmd.command('extract').description('Extract audio, frames, or thumbnails from video');
|
|
8
|
+
// Extract audio subcommand
|
|
9
|
+
extract
|
|
10
|
+
.command('audio <input>')
|
|
11
|
+
.description('Extract audio from video file')
|
|
12
|
+
.option('-o, --output <path>', 'Output audio file or directory path')
|
|
13
|
+
.option('-f, --format <format>', 'Audio format (mp3, wav, etc.)', 'mp3')
|
|
14
|
+
.option('-b, --bitrate <bitrate>', 'Audio bitrate (e.g., 192k)', '192k')
|
|
15
|
+
.option('--stream <index>', 'Select audio stream index (default: 0)', '0')
|
|
16
|
+
.option('--start <time>', 'Start time (HH:MM:SS or seconds)')
|
|
17
|
+
.option('--duration <time>', 'Duration from start (HH:MM:SS or seconds)')
|
|
18
|
+
.option('--volume <db>', 'Adjust output volume in dB (e.g., -3 for -3dB)')
|
|
19
|
+
.option('--metadata <key=value>', 'Set custom metadata (repeatable)', (val, acc = []) => { acc.push(val); return acc; }, [])
|
|
20
|
+
.option('--force', 'Overwrite output files without prompt')
|
|
21
|
+
.option('--help', 'Display help for extract audio command')
|
|
19
22
|
.action(async (input, options) => {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const audioCodec = codecMap[format] || 'libmp3lame';
|
|
45
|
-
const args = ['-i', inputPath, '-vn', '-c:a', audioCodec];
|
|
46
|
-
if (format !== 'wav') {
|
|
47
|
-
args.push('-b:a', options.bitrate || '192k');
|
|
48
|
-
}
|
|
49
|
-
args.push('-y', output);
|
|
50
|
-
if (options.dryRun) {
|
|
51
|
-
console.log(chalk.yellow('š Dry run mode - no files will be created\n'));
|
|
52
|
-
console.log(chalk.dim('Command:'));
|
|
53
|
-
console.log(chalk.gray(` ffmpeg ${args.join(' ')}\n`));
|
|
54
|
-
console.log(chalk.green('ā Dry run complete'));
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
console.log(chalk.dim('šµ Extracting audio...'));
|
|
58
|
-
if (options.verbose) {
|
|
59
|
-
console.log(chalk.dim(`ffmpeg ${args.join(' ')}\n`));
|
|
60
|
-
}
|
|
61
|
-
await runFFmpeg(args, options.verbose, (line) => {
|
|
62
|
-
if (shouldDisplayLine(line, options.verbose || false)) {
|
|
63
|
-
console.log(styleFFmpegOutput(line));
|
|
64
|
-
}
|
|
23
|
+
if (options.help || !input) {
|
|
24
|
+
createStandardHelp({
|
|
25
|
+
commandName: 'extract audio',
|
|
26
|
+
emoji: 'šµ',
|
|
27
|
+
description: 'Extract audio from video files with advanced options.',
|
|
28
|
+
usage: ['extract audio <input> [options]'],
|
|
29
|
+
options: [
|
|
30
|
+
{ flag: '-o, --output <path>', description: 'Output file/directory path' },
|
|
31
|
+
{ flag: '-f, --format <format>', description: 'Audio format (mp3, wav, etc.)' },
|
|
32
|
+
{ flag: '-b, --bitrate <bitrate>', description: 'Audio bitrate (e.g., 192k)' },
|
|
33
|
+
{ flag: '--stream <index>', description: 'Select audio stream index' },
|
|
34
|
+
{ flag: '--start <time>', description: 'Start time (HH:MM:SS or seconds)' },
|
|
35
|
+
{ flag: '--duration <time>', description: 'Duration from start (HH:MM:SS or seconds)' },
|
|
36
|
+
{ flag: '--volume <db>', description: 'Adjust output volume in dB' },
|
|
37
|
+
{ flag: '--metadata <key=value>', description: 'Set custom metadata (repeatable)' },
|
|
38
|
+
{ flag: '--force', description: 'Overwrite output files without prompt' },
|
|
39
|
+
{ flag: '--help', description: 'Display help for extract audio command' }
|
|
40
|
+
],
|
|
41
|
+
examples: [
|
|
42
|
+
{ command: 'extract audio video.mp4', description: 'Extract audio from video.mp4 as mp3' },
|
|
43
|
+
{ command: 'extract audio video.mp4 -o out.wav -f wav', description: 'Extract as WAV format' },
|
|
44
|
+
{ command: 'extract audio video.mp4 --bitrate 256k', description: 'Set audio bitrate to 256k' },
|
|
45
|
+
{ command: 'extract audio video.mp4 --stream 1', description: 'Extract second audio stream' }
|
|
46
|
+
]
|
|
65
47
|
});
|
|
66
|
-
|
|
67
|
-
console.log();
|
|
68
|
-
console.log(chalk.green.bold('ā Extraction Complete!\n'));
|
|
69
|
-
console.log(chalk.gray(` Format: ${format}`));
|
|
70
|
-
console.log(chalk.gray(` Size: ${formatFileSize(outputStat.size)}`));
|
|
71
|
-
console.log(chalk.dim(`\n ${output}`));
|
|
48
|
+
return;
|
|
72
49
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
50
|
+
const inputPaths = await parseInputPaths(input, ['.mp4', '.mkv', '.avi', '.mov', '.webm', '.flv', '.wmv', '.m4v', '.mpg', '.mpeg', '.3gp']);
|
|
51
|
+
const outputPathsMap = resolveOutputPaths(inputPaths, options.output, { suffix: '-audio', newExtension: options.format });
|
|
52
|
+
const outputPaths = Array.from(outputPathsMap.values());
|
|
53
|
+
for (let i = 0; i < inputPaths.length; i++) {
|
|
54
|
+
const inputFile = inputPaths[i];
|
|
55
|
+
const outputFile = outputPaths[i];
|
|
56
|
+
const spinner = ora(chalk.cyan(`Extracting audio from ${inputFile}`)).start();
|
|
57
|
+
try {
|
|
58
|
+
if (!(await checkFFmpeg()))
|
|
59
|
+
throw new Error(chalk.red('FFmpeg not found.'));
|
|
60
|
+
const args = ['-i', inputFile];
|
|
61
|
+
if (options.force)
|
|
62
|
+
args.push('-y');
|
|
63
|
+
args.push('-vn');
|
|
64
|
+
if (options.stream)
|
|
65
|
+
args.push('-map', `0:a:${options.stream}`);
|
|
66
|
+
if (options.start)
|
|
67
|
+
args.push('-ss', options.start);
|
|
68
|
+
if (options.duration)
|
|
69
|
+
args.push('-t', options.duration);
|
|
70
|
+
args.push('-acodec', options.format);
|
|
71
|
+
args.push('-b:a', options.bitrate);
|
|
72
|
+
// Audio filters
|
|
73
|
+
const filters = [];
|
|
74
|
+
if (options.volume)
|
|
75
|
+
filters.push(`volume=${options.volume}dB`);
|
|
76
|
+
if (filters.length > 0)
|
|
77
|
+
args.push('-af', filters.join(','));
|
|
78
|
+
// Metadata
|
|
79
|
+
if (options.metadata && Array.isArray(options.metadata)) {
|
|
80
|
+
for (const entry of options.metadata) {
|
|
81
|
+
const [key, value] = entry.split('=');
|
|
82
|
+
if (key && value)
|
|
83
|
+
args.push('-metadata', `${key}=${value}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
args.push(outputFile);
|
|
87
|
+
await runFFmpeg(args, options.verbose, logFFmpegOutput);
|
|
88
|
+
spinner.succeed(chalk.green.bold(`ā Audio extracted to ${outputFile}`));
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
spinner.fail(chalk.red.bold(`ā ${err.message}`));
|
|
92
|
+
}
|
|
76
93
|
}
|
|
94
|
+
showPluginBranding('Video', '../../package.json');
|
|
77
95
|
});
|
|
78
|
-
// Extract
|
|
79
|
-
|
|
80
|
-
.command('
|
|
81
|
-
.description('Extract
|
|
82
|
-
.option('-o, --output <
|
|
83
|
-
.option('--
|
|
84
|
-
.option('--
|
|
85
|
-
.option('--
|
|
86
|
-
.option('--
|
|
87
|
-
.option('--
|
|
88
|
-
.option('--
|
|
89
|
-
.option('-v, --verbose', 'Verbose output')
|
|
90
|
-
.option('--help', 'Display help for command')
|
|
96
|
+
// Extract frame subcommand
|
|
97
|
+
extract
|
|
98
|
+
.command('frame <input>')
|
|
99
|
+
.description('Extract a single frame from video file')
|
|
100
|
+
.option('-o, --output <path>', 'Output image file or directory path')
|
|
101
|
+
.option('-t, --time <timestamp>', 'Timestamp to extract frame (e.g., 00:00:10)', '00:00:01')
|
|
102
|
+
.option('-f, --format <format>', 'Image format (jpg, png, etc.)', 'jpg')
|
|
103
|
+
.option('--frames <range>', 'Extract multiple frames: <start>:<end>:<step> (e.g., 0:100:10)')
|
|
104
|
+
.option('--vf <filter>', 'Apply custom video filter (repeatable)', (val, acc = []) => { acc.push(val); return acc; }, [])
|
|
105
|
+
.option('--force', 'Overwrite output files without prompt')
|
|
106
|
+
.option('--help', 'Display help for extract frame command')
|
|
91
107
|
.action(async (input, options) => {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
const args = ['-i', inputPath];
|
|
114
|
-
// Add start time if specified
|
|
115
|
-
if (options.start) {
|
|
116
|
-
args.push('-ss', parseTimeToSeconds(options.start).toString());
|
|
117
|
-
}
|
|
118
|
-
// Add end time if specified
|
|
119
|
-
if (options.end) {
|
|
120
|
-
args.push('-to', parseTimeToSeconds(options.end).toString());
|
|
121
|
-
}
|
|
122
|
-
// Set frame rate
|
|
123
|
-
args.push('-vf', `fps=${options.fps || 1}`);
|
|
124
|
-
// Image quality for JPEG
|
|
125
|
-
if (format === 'jpg') {
|
|
126
|
-
args.push('-q:v', (options.quality || 2).toString());
|
|
127
|
-
}
|
|
128
|
-
args.push('-y', outputPattern);
|
|
129
|
-
// Estimate number of frames
|
|
130
|
-
const duration = options.end ? parseTimeToSeconds(options.end) - (options.start ? parseTimeToSeconds(options.start) : 0) : metadata.duration - (options.start ? parseTimeToSeconds(options.start) : 0);
|
|
131
|
-
const estimatedFrames = Math.ceil(duration * (options.fps || 1));
|
|
132
|
-
console.log(chalk.dim('Extraction settings:'));
|
|
133
|
-
console.log(chalk.gray(` FPS: ${options.fps || 1}`));
|
|
134
|
-
console.log(chalk.gray(` Format: ${format}`));
|
|
135
|
-
console.log(chalk.gray(` Estimated frames: ~${estimatedFrames}`));
|
|
136
|
-
console.log(chalk.gray(` Output: ${outputDir}`));
|
|
137
|
-
console.log();
|
|
138
|
-
if (options.dryRun) {
|
|
139
|
-
console.log(chalk.yellow('š Dry run mode - no files will be created\n'));
|
|
140
|
-
console.log(chalk.dim('Command:'));
|
|
141
|
-
console.log(chalk.gray(` ffmpeg ${args.join(' ')}\n`));
|
|
142
|
-
console.log(chalk.green('ā Dry run complete'));
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
console.log(chalk.dim('šø Extracting frames...'));
|
|
146
|
-
if (options.verbose) {
|
|
147
|
-
console.log(chalk.dim(`ffmpeg ${args.join(' ')}\n`));
|
|
148
|
-
}
|
|
149
|
-
await runFFmpeg(args, options.verbose, (line) => {
|
|
150
|
-
if (shouldDisplayLine(line, options.verbose || false)) {
|
|
151
|
-
console.log(styleFFmpegOutput(line));
|
|
152
|
-
}
|
|
108
|
+
if (options.help || !input) {
|
|
109
|
+
createStandardHelp({
|
|
110
|
+
commandName: 'extract frame',
|
|
111
|
+
emoji: 'š¼ļø',
|
|
112
|
+
description: 'Extract frames from video files with advanced options.',
|
|
113
|
+
usage: ['extract frame <input> [options]'],
|
|
114
|
+
options: [
|
|
115
|
+
{ flag: '-o, --output <path>', description: 'Output file/directory path' },
|
|
116
|
+
{ flag: '-t, --time <timestamp>', description: 'Timestamp to extract frame' },
|
|
117
|
+
{ flag: '-f, --format <format>', description: 'Image format (jpg, png, etc.)' },
|
|
118
|
+
{ flag: '--frames <range>', description: 'Extract multiple frames: <start>:<end>:<step>' },
|
|
119
|
+
{ flag: '--vf <filter>', description: 'Apply custom video filter (repeatable)' },
|
|
120
|
+
{ flag: '--force', description: 'Overwrite output files without prompt' },
|
|
121
|
+
{ flag: '--help', description: 'Display help for extract frame command' }
|
|
122
|
+
],
|
|
123
|
+
examples: [
|
|
124
|
+
{ command: 'extract frame video.mp4', description: 'Extract default frame at 00:00:01' },
|
|
125
|
+
{ command: 'extract frame video.mp4 -t 00:00:10', description: 'Extract frame at 10 seconds' },
|
|
126
|
+
{ command: 'extract frame video.mp4 --frames 0:100:10', description: 'Extract every 10th frame from 0 to 100' },
|
|
127
|
+
{ command: 'extract frame video.mp4 --vf "crop=320:240"', description: 'Apply crop filter to frame' }
|
|
128
|
+
]
|
|
153
129
|
});
|
|
154
|
-
|
|
155
|
-
console.log(chalk.green.bold('ā Extraction Complete!\n'));
|
|
156
|
-
console.log(chalk.gray(` Frames saved to: ${outputDir}`));
|
|
157
|
-
console.log(chalk.gray(` Pattern: frame_####.${format}`));
|
|
130
|
+
return;
|
|
158
131
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
132
|
+
const inputPaths = await parseInputPaths(input, ['.mp4', '.mkv', '.avi', '.mov', '.webm', '.flv', '.wmv', '.m4v', '.mpg', '.mpeg', '.3gp']);
|
|
133
|
+
const outputPathsMap = resolveOutputPaths(inputPaths, options.output, { suffix: '-frame', newExtension: options.format });
|
|
134
|
+
const outputPaths = Array.from(outputPathsMap.values());
|
|
135
|
+
for (let i = 0; i < inputPaths.length; i++) {
|
|
136
|
+
const inputFile = inputPaths[i];
|
|
137
|
+
const outputFile = outputPaths[i];
|
|
138
|
+
const spinner = ora(chalk.cyan(`Extracting frame(s) from ${inputFile}`)).start();
|
|
139
|
+
try {
|
|
140
|
+
if (!(await checkFFmpeg()))
|
|
141
|
+
throw new Error(chalk.red('FFmpeg not found.'));
|
|
142
|
+
const args = ['-i', inputFile];
|
|
143
|
+
if (options.force)
|
|
144
|
+
args.push('-y');
|
|
145
|
+
if (options.time)
|
|
146
|
+
args.push('-ss', options.time);
|
|
147
|
+
if (options.frames) {
|
|
148
|
+
const [start, end, step] = options.frames.split(':').map(Number);
|
|
149
|
+
args.push('-vf', `select='not(mod(n\,${step}))',setpts=N/FRAME_RATE/TB`);
|
|
150
|
+
args.push('-frames:v', ((end - start) / step + 1).toString());
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
args.push('-frames:v', '1');
|
|
154
|
+
}
|
|
155
|
+
if (options.vf && Array.isArray(options.vf) && options.vf.length > 0) {
|
|
156
|
+
for (const filter of options.vf) {
|
|
157
|
+
args.push('-vf', filter);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
args.push('-q:v', '2');
|
|
161
|
+
args.push(outputFile);
|
|
162
|
+
await runFFmpeg(args, options.verbose, logFFmpegOutput);
|
|
163
|
+
spinner.succeed(chalk.green.bold(`ā Frame(s) extracted to ${outputFile}`));
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
spinner.fail(chalk.red.bold(`ā ${err.message}`));
|
|
167
|
+
}
|
|
162
168
|
}
|
|
169
|
+
showPluginBranding('Video', '../../package.json');
|
|
163
170
|
});
|
|
164
|
-
// Extract thumbnail
|
|
165
|
-
|
|
166
|
-
.command('
|
|
167
|
-
.description('Extract a
|
|
168
|
-
.option('-o, --output <path>', 'Output
|
|
169
|
-
.option('--time <
|
|
170
|
-
.option('--format <format>', '
|
|
171
|
-
.option('--
|
|
172
|
-
.option('--
|
|
173
|
-
.option('
|
|
174
|
-
.option('--
|
|
171
|
+
// Extract thumbnail subcommand
|
|
172
|
+
extract
|
|
173
|
+
.command('thumbnail <input>')
|
|
174
|
+
.description('Extract a thumbnail image from video file')
|
|
175
|
+
.option('-o, --output <path>', 'Output thumbnail file or directory path')
|
|
176
|
+
.option('-t, --time <timestamp>', 'Timestamp for thumbnail (e.g., 00:00:05)', '00:00:01')
|
|
177
|
+
.option('-f, --format <format>', 'Thumbnail format (jpg, png, etc.)', 'jpg')
|
|
178
|
+
.option('--size <size>', 'Thumbnail size (e.g., 320x180)', '320x180')
|
|
179
|
+
.option('--quality <q>', 'JPEG/PNG quality (1-31)', '2')
|
|
180
|
+
.option('--vf <filter>', 'Apply custom video filter (repeatable)', (val, acc = []) => { acc.push(val); return acc; }, [])
|
|
181
|
+
.option('--force', 'Overwrite output files without prompt')
|
|
182
|
+
.option('--help', 'Display help for extract thumbnail command')
|
|
175
183
|
.action(async (input, options) => {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}
|
|
199
|
-
args.push('-y', output);
|
|
200
|
-
if (options.dryRun) {
|
|
201
|
-
console.log(chalk.yellow('š Dry run mode - no files will be created\n'));
|
|
202
|
-
console.log(chalk.dim('Command:'));
|
|
203
|
-
console.log(chalk.gray(` ffmpeg ${args.join(' ')}\n`));
|
|
204
|
-
console.log(chalk.green('ā Dry run complete'));
|
|
205
|
-
showPluginBranding('Video');
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
console.log(chalk.dim('šø Extracting thumbnail...'));
|
|
209
|
-
if (options.verbose) {
|
|
210
|
-
console.log(chalk.dim(`ffmpeg ${args.join(' ')}\n`));
|
|
211
|
-
}
|
|
212
|
-
await runFFmpeg(args, options.verbose, (line) => {
|
|
213
|
-
if (shouldDisplayLine(line, options.verbose || false)) {
|
|
214
|
-
console.log(styleFFmpegOutput(line));
|
|
215
|
-
}
|
|
184
|
+
if (options.help || !input) {
|
|
185
|
+
createStandardHelp({
|
|
186
|
+
commandName: 'extract thumbnail',
|
|
187
|
+
emoji: 'š¼ļø',
|
|
188
|
+
description: 'Extract thumbnails from video files with advanced options.',
|
|
189
|
+
usage: ['extract thumbnail <input> [options]'],
|
|
190
|
+
options: [
|
|
191
|
+
{ flag: '-o, --output <path>', description: 'Output file/directory path' },
|
|
192
|
+
{ flag: '-t, --time <timestamp>', description: 'Timestamp for thumbnail' },
|
|
193
|
+
{ flag: '-f, --format <format>', description: 'Thumbnail format (jpg, png, etc.)' },
|
|
194
|
+
{ flag: '--size <size>', description: 'Thumbnail size (e.g., 320x180)' },
|
|
195
|
+
{ flag: '--quality <q>', description: 'JPEG/PNG quality (1-31)' },
|
|
196
|
+
{ flag: '--vf <filter>', description: 'Apply custom video filter (repeatable)' },
|
|
197
|
+
{ flag: '--force', description: 'Overwrite output files without prompt' },
|
|
198
|
+
{ flag: '--help', description: 'Display help for extract thumbnail command' }
|
|
199
|
+
],
|
|
200
|
+
examples: [
|
|
201
|
+
{ command: 'extract thumbnail video.mp4', description: 'Extract default thumbnail at 00:00:01' },
|
|
202
|
+
{ command: 'extract thumbnail video.mp4 -t 00:00:05', description: 'Extract thumbnail at 5 seconds' },
|
|
203
|
+
{ command: 'extract thumbnail video.mp4 --size 640x360', description: 'Set thumbnail size to 640x360' },
|
|
204
|
+
{ command: 'extract thumbnail video.mp4 --quality 5', description: 'Set JPEG/PNG quality to 5' }
|
|
205
|
+
]
|
|
216
206
|
});
|
|
217
|
-
|
|
218
|
-
console.log();
|
|
219
|
-
console.log(chalk.green.bold('ā Extraction Complete!\n'));
|
|
220
|
-
console.log(chalk.gray(` Time: ${formatDuration(timeSeconds)}`));
|
|
221
|
-
console.log(chalk.gray(` Size: ${formatFileSize(outputStat.size)}`));
|
|
222
|
-
console.log(chalk.dim(`\n ${output}`));
|
|
223
|
-
showPluginBranding('Video');
|
|
207
|
+
return;
|
|
224
208
|
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
209
|
+
const inputPaths = await parseInputPaths(input, ['.mp4', '.mkv', '.avi', '.mov', '.webm', '.flv', '.wmv', '.m4v', '.mpg', '.mpeg', '.3gp']);
|
|
210
|
+
const outputPathsMap = resolveOutputPaths(inputPaths, options.output, { suffix: '-thumbnail', newExtension: options.format });
|
|
211
|
+
const outputPaths = Array.from(outputPathsMap.values());
|
|
212
|
+
for (let i = 0; i < inputPaths.length; i++) {
|
|
213
|
+
const inputFile = inputPaths[i];
|
|
214
|
+
const outputFile = outputPaths[i];
|
|
215
|
+
const spinner = ora(chalk.cyan(`Extracting thumbnail from ${inputFile}`)).start();
|
|
216
|
+
try {
|
|
217
|
+
if (!(await checkFFmpeg()))
|
|
218
|
+
throw new Error(chalk.red('FFmpeg not found.'));
|
|
219
|
+
const [width, height] = options.size.split('x');
|
|
220
|
+
const args = ['-i', inputFile];
|
|
221
|
+
if (options.force)
|
|
222
|
+
args.push('-y');
|
|
223
|
+
if (options.time)
|
|
224
|
+
args.push('-ss', options.time);
|
|
225
|
+
args.push('-vframes', '1');
|
|
226
|
+
let vf = `scale=${width}:${height}`;
|
|
227
|
+
if (options.vf && Array.isArray(options.vf) && options.vf.length > 0) {
|
|
228
|
+
vf += ',' + options.vf.join(',');
|
|
229
|
+
}
|
|
230
|
+
args.push('-vf', vf);
|
|
231
|
+
args.push('-q:v', options.quality);
|
|
232
|
+
args.push(outputFile);
|
|
233
|
+
await runFFmpeg(args, options.verbose, logFFmpegOutput);
|
|
234
|
+
spinner.succeed(chalk.green.bold(`ā Thumbnail extracted to ${outputFile}`));
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
spinner.fail(chalk.red.bold(`ā ${err.message}`));
|
|
238
|
+
}
|
|
228
239
|
}
|
|
240
|
+
showPluginBranding('Video', '../../package.json');
|
|
229
241
|
});
|
|
230
242
|
}
|
|
231
243
|
//# sourceMappingURL=extract.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/commands/extract.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/commands/extract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/commands/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/commands/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBzC,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAuOpD"}
|
package/dist/commands/merge.js
CHANGED
|
@@ -4,10 +4,8 @@ import { writeFile, unlink, stat } from 'fs/promises';
|
|
|
4
4
|
import { tmpdir } from 'os';
|
|
5
5
|
import { join } from 'path';
|
|
6
6
|
import { runFFmpeg, getVideoMetadata, checkFFmpeg, formatFileSize, formatDuration, } from '../utils/ffmpeg.js';
|
|
7
|
-
import { showPluginBranding } from '
|
|
8
|
-
import { fileExists, validatePaths, resolveOutputPaths } from '../utils/pathValidator.js';
|
|
7
|
+
import { fileExists, validatePaths, resolveOutputPaths, createStandardHelp, showPluginBranding } from '@mediaproc/core';
|
|
9
8
|
import { logFFmpegOutput } from '../utils/ffmpegLogger.js';
|
|
10
|
-
import { createStandardHelp } from '../utils/helpFormatter.js';
|
|
11
9
|
export function mergeCommand(videoCmd) {
|
|
12
10
|
videoCmd
|
|
13
11
|
.command('merge <inputs...>')
|
|
@@ -24,6 +22,7 @@ export function mergeCommand(videoCmd) {
|
|
|
24
22
|
.option('--normalize-audio', 'Normalize audio levels across videos')
|
|
25
23
|
.option('--format <format>', 'Output format: mp4, mkv, avi, webm (default: mp4)', 'mp4')
|
|
26
24
|
.option('--dry-run', 'Preview command without executing')
|
|
25
|
+
.option('--explain', 'Explain the proper flow of this command in detail (Coming Soon...)')
|
|
27
26
|
.option('-v, --verbose', 'Show detailed FFmpeg output')
|
|
28
27
|
.option('-h, --help', 'Display help for merge command')
|
|
29
28
|
.action(async (inputs, options) => {
|
|
@@ -50,6 +49,7 @@ export function mergeCommand(videoCmd) {
|
|
|
50
49
|
{ flag: '--normalize-audio', description: 'Normalize audio levels across videos' },
|
|
51
50
|
{ flag: '--format <format>', description: 'Output format: mp4, mkv, avi, webm (default: mp4)' },
|
|
52
51
|
{ flag: '--dry-run', description: 'Preview FFmpeg command without executing' },
|
|
52
|
+
{ flag: '--explain', description: 'Explain what is happening behind the scene in proper flow and in detail (Coming Soon...)' },
|
|
53
53
|
{ flag: '-v, --verbose', description: 'Show detailed FFmpeg output' }
|
|
54
54
|
],
|
|
55
55
|
examples: [
|
|
@@ -176,9 +176,13 @@ export function mergeCommand(videoCmd) {
|
|
|
176
176
|
console.log(chalk.dim('\nCommand:'));
|
|
177
177
|
console.log(chalk.gray(` ffmpeg ${args.join(' ')}\n`));
|
|
178
178
|
console.log(chalk.green('ā Dry run complete'));
|
|
179
|
-
showPluginBranding('Video');
|
|
179
|
+
showPluginBranding('Video', '../../package.json');
|
|
180
180
|
return;
|
|
181
181
|
}
|
|
182
|
+
if (options.explain) {
|
|
183
|
+
console.log(chalk.gray('Explain mode is not yet available.'));
|
|
184
|
+
console.log(chalk.cyan('Planned for v0.8.x.'));
|
|
185
|
+
}
|
|
182
186
|
// Run merge
|
|
183
187
|
console.log(chalk.dim(`š Merging videos (${needsReEncode ? 're-encoding' : 'fast mode'})...`));
|
|
184
188
|
if (options.verbose) {
|
|
@@ -197,7 +201,7 @@ export function mergeCommand(videoCmd) {
|
|
|
197
201
|
console.log(chalk.gray(` Total duration: ${formatDuration(totalDuration)}`));
|
|
198
202
|
console.log(chalk.gray(` Output size: ${formatFileSize(outputStat.size)}`));
|
|
199
203
|
console.log(chalk.dim(`\n ${output}`));
|
|
200
|
-
showPluginBranding('Video');
|
|
204
|
+
showPluginBranding('Video', '../../package.json');
|
|
201
205
|
}
|
|
202
206
|
catch (error) {
|
|
203
207
|
console.error(chalk.red(`\nā Error: ${error.message}`));
|