@mediaproc/video 1.2.1 ā 1.4.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/cli.js +25 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/compress.d.ts.map +1 -1
- package/dist/commands/compress.js +18 -11
- package/dist/commands/compress.js.map +1 -1
- package/dist/commands/convert.d.ts.map +1 -1
- package/dist/commands/convert.js +40 -25
- package/dist/commands/convert.js.map +1 -1
- package/dist/commands/extract.d.ts.map +1 -1
- package/dist/commands/extract.js +288 -209
- package/dist/commands/extract.js.map +1 -1
- package/dist/commands/merge.d.ts.map +1 -1
- package/dist/commands/merge.js +161 -43
- package/dist/commands/merge.js.map +1 -1
- package/dist/commands/metadata.d.ts +3 -0
- package/dist/commands/metadata.d.ts.map +1 -0
- package/dist/commands/metadata.js +310 -0
- package/dist/commands/metadata.js.map +1 -0
- package/dist/commands/resize.d.ts.map +1 -1
- package/dist/commands/resize.js +50 -17
- package/dist/commands/resize.js.map +1 -1
- package/dist/commands/transcode.d.ts.map +1 -1
- package/dist/commands/transcode.js +67 -17
- package/dist/commands/transcode.js.map +1 -1
- package/dist/commands/trim.d.ts.map +1 -1
- package/dist/commands/trim.js +55 -16
- package/dist/commands/trim.js.map +1 -1
- package/dist/register.d.ts +2 -1
- package/dist/register.d.ts.map +1 -1
- package/dist/register.js +28 -8
- package/dist/register.js.map +1 -1
- package/dist/types.d.ts +32 -33
- 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-output.d.ts +7 -3
- package/dist/utils/ffmpeg-output.d.ts.map +1 -1
- package/dist/utils/ffmpeg-output.js +56 -65
- package/dist/utils/ffmpeg-output.js.map +1 -1
- package/dist/utils/ffmpeg.d.ts +26 -22
- package/dist/utils/ffmpeg.d.ts.map +1 -1
- package/dist/utils/ffmpeg.js +211 -93
- package/dist/utils/ffmpeg.js.map +1 -1
- package/dist/utils/ffmpegLogger.d.ts +3 -10
- package/dist/utils/ffmpegLogger.d.ts.map +1 -1
- package/dist/utils/ffmpegLogger.js +15 -51
- package/dist/utils/ffmpegLogger.js.map +1 -1
- package/package.json +7 -12
- package/bin/cli.js +0 -5
package/dist/commands/extract.js
CHANGED
|
@@ -1,231 +1,310 @@
|
|
|
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, getStreamInfo } from '../utils/ffmpeg.js';
|
|
3
|
+
import { validatePaths, resolveOutputPaths, createStandardHelp, VIDEO_EXTENSIONS } 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('--explain [mode]', 'Show a detailed explanation of what this command will do, including technical and human-readable output. Modes: human, details, json. Adds context like timestamp, user, and platform.')
|
|
22
|
+
.option('--help', 'Display help for extract audio command')
|
|
19
23
|
.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
|
-
|
|
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
|
-
}
|
|
24
|
+
if (options.help || !input) {
|
|
25
|
+
createStandardHelp({
|
|
26
|
+
commandName: 'extract audio',
|
|
27
|
+
emoji: 'šµ',
|
|
28
|
+
description: 'Extract audio from video files with advanced options.',
|
|
29
|
+
usage: ['extract audio <input> [options]'],
|
|
30
|
+
options: [
|
|
31
|
+
{ flag: '-o, --output <path>', description: 'Output file/directory path' },
|
|
32
|
+
{ flag: '-f, --format <format>', description: 'Audio format (mp3, wav, etc.)' },
|
|
33
|
+
{ flag: '-b, --bitrate <bitrate>', description: 'Audio bitrate (e.g., 192k)' },
|
|
34
|
+
{ flag: '--stream <index>', description: 'Select audio stream index' },
|
|
35
|
+
{ flag: '--start <time>', description: 'Start time (HH:MM:SS or seconds)' },
|
|
36
|
+
{ flag: '--duration <time>', description: 'Duration from start (HH:MM:SS or seconds)' },
|
|
37
|
+
{ flag: '--volume <db>', description: 'Adjust output volume in dB' },
|
|
38
|
+
{ flag: '--explain [mode]', description: 'Show a detailed explanation of what this command will do, including technical and human-readable output. Modes: human, details, json. Adds context like timestamp, user, and platform.' },
|
|
39
|
+
{ flag: '--metadata <key=value>', description: 'Set custom metadata (repeatable)' },
|
|
40
|
+
{ flag: '--force', description: 'Overwrite output files without prompt' },
|
|
41
|
+
{ flag: '--help', description: 'Display help for extract audio command' }
|
|
42
|
+
],
|
|
43
|
+
examples: [
|
|
44
|
+
{ command: 'extract audio video.mp4', description: 'Extract audio from video.mp4 as mp3' },
|
|
45
|
+
{ command: 'extract audio video.mp4 -o out.wav -f wav', description: 'Extract as WAV format' },
|
|
46
|
+
{ command: 'extract audio video.mp4 --bitrate 256k', description: 'Set audio bitrate to 256k' },
|
|
47
|
+
{ command: 'extract audio video.mp4 --stream 1', description: 'Extract second audio stream' }
|
|
48
|
+
]
|
|
65
49
|
});
|
|
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}`));
|
|
50
|
+
return;
|
|
72
51
|
}
|
|
73
|
-
|
|
74
|
-
|
|
52
|
+
// Use pathValidator for all input/output logic
|
|
53
|
+
const { inputFiles, outputPath, errors } = validatePaths(input, options.output, { allowedExtensions: VIDEO_EXTENSIONS });
|
|
54
|
+
if (errors.length > 0) {
|
|
55
|
+
errors.forEach(e => console.error(chalk.red('ā ' + e)));
|
|
75
56
|
process.exit(1);
|
|
76
57
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
args.push('-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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;
|
|
58
|
+
// Use AUDIO_EXTENSIONS for output extension validation
|
|
59
|
+
const outputPathsMap = resolveOutputPaths(inputFiles, outputPath, { suffix: '-audio', newExtension: '.' + (options.format || 'mp3') });
|
|
60
|
+
const outputFiles = Array.from(outputPathsMap.values());
|
|
61
|
+
for (let i = 0; i < inputFiles.length; i++) {
|
|
62
|
+
const inputFile = inputFiles[i];
|
|
63
|
+
const outputFile = outputFiles[i];
|
|
64
|
+
const spinner = ora(chalk.cyan(`Extracting audio from ${inputFile}`)).start();
|
|
65
|
+
try {
|
|
66
|
+
if (!(await checkFFmpeg()))
|
|
67
|
+
throw new Error(chalk.red('FFmpeg not found.'));
|
|
68
|
+
// Detect audio streams before extraction
|
|
69
|
+
spinner.text = chalk.cyan(`Checking streams in ${inputFile}...`);
|
|
70
|
+
const streamInfo = await getStreamInfo(inputFile);
|
|
71
|
+
if (!streamInfo.hasAudio) {
|
|
72
|
+
spinner.fail(chalk.yellow(`ā ļø No audio stream found in ${inputFile}`));
|
|
73
|
+
console.log(chalk.dim('This file does not contain any audio tracks. Skipping...'));
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
if (streamInfo.audioStreams.length > 1) {
|
|
77
|
+
console.log(chalk.cyan(`Found ${streamInfo.audioStreams.length} audio streams. Using stream ${options.stream || 0}.`));
|
|
78
|
+
}
|
|
79
|
+
spinner.text = chalk.cyan(`Extracting audio from ${inputFile}...`);
|
|
80
|
+
const args = ['-i', inputFile];
|
|
81
|
+
if (options.force)
|
|
82
|
+
args.push('-y');
|
|
83
|
+
args.push('-vn');
|
|
84
|
+
// Use flexible mapping to handle stream detection properly
|
|
85
|
+
const streamIdx = parseInt(options.stream || '0');
|
|
86
|
+
if (streamIdx < streamInfo.audioStreams.length) {
|
|
87
|
+
args.push('-map', `0:${streamInfo.audioStreams[streamIdx]}`);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
spinner.fail(chalk.red(`Audio stream ${streamIdx} not found. Available streams: ${streamInfo.audioStreams.length}`));
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if (options.start)
|
|
94
|
+
args.push('-ss', options.start);
|
|
95
|
+
if (options.duration)
|
|
96
|
+
args.push('-t', options.duration);
|
|
97
|
+
args.push('-acodec', options.format || 'mp3');
|
|
98
|
+
args.push('-b:a', options.bitrate);
|
|
99
|
+
// Audio filters
|
|
100
|
+
const filters = [];
|
|
101
|
+
if (options.volume)
|
|
102
|
+
filters.push(`volume=${options.volume}dB`);
|
|
103
|
+
if (filters.length > 0)
|
|
104
|
+
args.push('-af', filters.join(','));
|
|
105
|
+
// Metadata
|
|
106
|
+
if (options.metadata && Array.isArray(options.metadata)) {
|
|
107
|
+
for (const entry of options.metadata) {
|
|
108
|
+
const [key, value] = entry.split('=');
|
|
109
|
+
if (key && value)
|
|
110
|
+
args.push('-metadata', `${key}=${value}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
args.push(outputFile);
|
|
114
|
+
await runFFmpeg(args, options.verbose, (line) => {
|
|
115
|
+
if (options.verbose)
|
|
116
|
+
logFFmpegOutput(line);
|
|
117
|
+
});
|
|
118
|
+
spinner.succeed(chalk.green.bold(`ā Audio extracted to ${outputFile}`));
|
|
144
119
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
console.log(chalk.dim(`ffmpeg ${args.join(' ')}\n`));
|
|
120
|
+
catch (err) {
|
|
121
|
+
spinner.fail(chalk.red.bold(`ā ${err.message}`));
|
|
148
122
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
// Extract frame subcommand
|
|
126
|
+
extract
|
|
127
|
+
.command('frame <input>')
|
|
128
|
+
.description('Extract a single frame from video file')
|
|
129
|
+
.option('-o, --output <path>', 'Output image file or directory path')
|
|
130
|
+
.option('-t, --time <timestamp>', 'Timestamp to extract frame (e.g., 00:00:10)', '00:00:01')
|
|
131
|
+
.option('-f, --format <format>', 'Image format (jpg, png, etc.)', 'jpg')
|
|
132
|
+
.option('--frames <range>', 'Extract multiple frames: <start>:<end>:<step> (e.g., 0:100:10)')
|
|
133
|
+
.option('--vf <filter>', 'Apply custom video filter (repeatable)', (val, acc = []) => { acc.push(val); return acc; }, [])
|
|
134
|
+
.option('--force', 'Overwrite output files without prompt')
|
|
135
|
+
.option('--explain [mode]', 'Show a detailed explanation of what this command will do, including technical and human-readable output. Modes: human, details, json. Adds context like timestamp, user, and platform.')
|
|
136
|
+
.option('--help', 'Display help for extract frame command')
|
|
137
|
+
.action(async function (input, options) {
|
|
138
|
+
if (options.help || !input) {
|
|
139
|
+
createStandardHelp({
|
|
140
|
+
commandName: 'extract frame',
|
|
141
|
+
emoji: 'š¼ļø',
|
|
142
|
+
description: 'Extract frames from video files with advanced options.',
|
|
143
|
+
usage: ['extract frame <input> [options]'],
|
|
144
|
+
options: [
|
|
145
|
+
{ flag: '-o, --output <path>', description: 'Output file/directory path' },
|
|
146
|
+
{ flag: '-t, --time <timestamp>', description: 'Timestamp to extract frame' },
|
|
147
|
+
{ flag: '-f, --format <format>', description: 'Image format (jpg, png, etc.)' },
|
|
148
|
+
{ flag: '--frames <range>', description: 'Extract multiple frames: <start>:<end>:<step>' },
|
|
149
|
+
{ flag: '--explain', description: 'Explain what is happening behind the scene in proper flow and in detail.' },
|
|
150
|
+
{ flag: '--vf <filter>', description: 'Apply custom video filter (repeatable)' },
|
|
151
|
+
{ flag: '--force', description: 'Overwrite output files without prompt' },
|
|
152
|
+
{ flag: '--help', description: 'Display help for extract frame command' }
|
|
153
|
+
],
|
|
154
|
+
examples: [
|
|
155
|
+
{ command: 'extract frame video.mp4', description: 'Extract default frame at 00:00:01' },
|
|
156
|
+
{ command: 'extract frame video.mp4 -t 00:00:10', description: 'Extract frame at 10 seconds' },
|
|
157
|
+
{ command: 'extract frame video.mp4 --frames 0:100:10', description: 'Extract every 10th frame from 0 to 100' },
|
|
158
|
+
{ command: 'extract frame video.mp4 --vf "crop=320:240"', description: 'Apply crop filter to frame' }
|
|
159
|
+
]
|
|
153
160
|
});
|
|
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}`));
|
|
161
|
+
return;
|
|
158
162
|
}
|
|
159
|
-
|
|
160
|
-
|
|
163
|
+
// Use pathValidator for all input/output logic
|
|
164
|
+
const { inputFiles, outputPath, errors } = validatePaths(input, options.output, { allowedExtensions: VIDEO_EXTENSIONS });
|
|
165
|
+
if (errors.length > 0) {
|
|
166
|
+
errors.forEach(e => console.error(chalk.red('ā ' + e)));
|
|
161
167
|
process.exit(1);
|
|
162
168
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
169
|
+
// Use IMAGE_EXTENSIONS for output extension validation
|
|
170
|
+
const outputPathsMap = resolveOutputPaths(inputFiles, outputPath, { suffix: '-frame', newExtension: '.' + (options.format || 'jpg') });
|
|
171
|
+
const outputFiles = Array.from(outputPathsMap.values());
|
|
172
|
+
for (let i = 0; i < inputFiles.length; i++) {
|
|
173
|
+
const inputFile = inputFiles[i];
|
|
174
|
+
const outputFile = outputFiles[i];
|
|
175
|
+
const spinner = ora(chalk.cyan(`Extracting frame(s) from ${inputFile}`)).start();
|
|
176
|
+
try {
|
|
177
|
+
if (!(await checkFFmpeg()))
|
|
178
|
+
throw new Error(chalk.red('FFmpeg not found.'));
|
|
179
|
+
// Verify video stream exists
|
|
180
|
+
spinner.text = chalk.cyan(`Checking video stream in ${inputFile}...`);
|
|
181
|
+
const streamInfo = await getStreamInfo(inputFile);
|
|
182
|
+
if (!streamInfo.hasVideo) {
|
|
183
|
+
spinner.fail(chalk.yellow(`ā ļø No video stream found in ${inputFile}`));
|
|
184
|
+
console.log(chalk.dim('This file does not contain any video tracks. Skipping...'));
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
spinner.text = chalk.cyan(`Extracting frame(s) from ${inputFile}...`);
|
|
188
|
+
const args = ['-i', inputFile];
|
|
189
|
+
if (options.force)
|
|
190
|
+
args.push('-y');
|
|
191
|
+
if (options.time)
|
|
192
|
+
args.push('-ss', options.time);
|
|
193
|
+
if (options.frames) {
|
|
194
|
+
const [start, end, step] = options.frames.split(':').map(Number);
|
|
195
|
+
args.push('-vf', `select='not(mod(n\,${step}))',setpts=N/FRAME_RATE/TB`);
|
|
196
|
+
args.push('-frames:v', ((end - start) / step + 1).toString());
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
args.push('-frames:v', '1');
|
|
200
|
+
}
|
|
201
|
+
if (options.vf && Array.isArray(options.vf) && options.vf.length > 0) {
|
|
202
|
+
for (const filter of options.vf) {
|
|
203
|
+
args.push('-vf', filter);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
args.push('-q:v', '2');
|
|
207
|
+
args.push(outputFile);
|
|
208
|
+
await runFFmpeg(args, options.verbose, (line) => {
|
|
209
|
+
if (options.verbose)
|
|
210
|
+
logFFmpegOutput(line);
|
|
211
|
+
});
|
|
212
|
+
spinner.succeed(chalk.green.bold(`ā Frame(s) extracted to ${outputFile}`));
|
|
207
213
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
console.log(chalk.dim(`ffmpeg ${args.join(' ')}\n`));
|
|
214
|
+
catch (err) {
|
|
215
|
+
spinner.fail(chalk.red.bold(`ā ${err.message}`));
|
|
211
216
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
// Extract thumbnail subcommand
|
|
220
|
+
extract
|
|
221
|
+
.command('thumbnail <input>')
|
|
222
|
+
.description('Extract a thumbnail image from video file')
|
|
223
|
+
.option('-o, --output <path>', 'Output thumbnail file or directory path')
|
|
224
|
+
.option('-t, --time <timestamp>', 'Timestamp for thumbnail (e.g., 00:00:05)', '00:00:01')
|
|
225
|
+
.option('-f, --format <format>', 'Thumbnail format (jpg, png, etc.)', 'jpg')
|
|
226
|
+
.option('--size <size>', 'Thumbnail size (e.g., 320x180)', '320x180')
|
|
227
|
+
.option('--quality <q>', 'JPEG/PNG quality (1-31)', '2')
|
|
228
|
+
.option('--vf <filter>', 'Apply custom video filter (repeatable)', (val, acc = []) => { acc.push(val); return acc; }, [])
|
|
229
|
+
.option('--force', 'Overwrite output files without prompt')
|
|
230
|
+
.option('--explain [mode]', 'Show a detailed explanation of what this command will do, including technical and human-readable output. Modes: human, details, json. Adds context like timestamp, user, and platform.')
|
|
231
|
+
.option('--help', 'Display help for extract thumbnail command')
|
|
232
|
+
.action(async function (input, options) {
|
|
233
|
+
if (options.help || !input) {
|
|
234
|
+
createStandardHelp({
|
|
235
|
+
commandName: 'extract thumbnail',
|
|
236
|
+
emoji: 'š¼ļø',
|
|
237
|
+
description: 'Extract thumbnails from video files with advanced options.',
|
|
238
|
+
usage: ['extract thumbnail <input> [options]'],
|
|
239
|
+
options: [
|
|
240
|
+
{ flag: '-o, --output <path>', description: 'Output file/directory path' },
|
|
241
|
+
{ flag: '-t, --time <timestamp>', description: 'Timestamp for thumbnail' },
|
|
242
|
+
{ flag: '-f, --format <format>', description: 'Thumbnail format (jpg, png, etc.)' },
|
|
243
|
+
{ flag: '--size <size>', description: 'Thumbnail size (e.g., 320x180)' },
|
|
244
|
+
{ flag: '--quality <q>', description: 'JPEG/PNG quality (1-31)' },
|
|
245
|
+
{ flag: '--vf <filter>', description: 'Apply custom video filter (repeatable)' },
|
|
246
|
+
{ flag: '--explain', description: 'Explain what is happening behind the scene in proper flow and in detail.' },
|
|
247
|
+
{ flag: '--force', description: 'Overwrite output files without prompt' },
|
|
248
|
+
{ flag: '--help', description: 'Display help for extract thumbnail command' }
|
|
249
|
+
],
|
|
250
|
+
examples: [
|
|
251
|
+
{ command: 'extract thumbnail video.mp4', description: 'Extract default thumbnail at 00:00:01' },
|
|
252
|
+
{ command: 'extract thumbnail video.mp4 -t 00:00:05', description: 'Extract thumbnail at 5 seconds' },
|
|
253
|
+
{ command: 'extract thumbnail video.mp4 --size 640x360', description: 'Set thumbnail size to 640x360' },
|
|
254
|
+
{ command: 'extract thumbnail video.mp4 --quality 5', description: 'Set JPEG/PNG quality to 5' }
|
|
255
|
+
]
|
|
216
256
|
});
|
|
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');
|
|
257
|
+
return;
|
|
224
258
|
}
|
|
225
|
-
|
|
226
|
-
|
|
259
|
+
// Use pathValidator for all input/output logic
|
|
260
|
+
const { inputFiles, outputPath, errors } = validatePaths(input, options.output, { allowedExtensions: VIDEO_EXTENSIONS });
|
|
261
|
+
if (errors.length > 0) {
|
|
262
|
+
errors.forEach(e => console.error(chalk.red('ā ' + e)));
|
|
227
263
|
process.exit(1);
|
|
228
264
|
}
|
|
265
|
+
// Use IMAGE_EXTENSIONS for output extension validation
|
|
266
|
+
const outputPathsMap = resolveOutputPaths(inputFiles, outputPath, { suffix: '-thumbnail', newExtension: '.' + (options.format || 'jpg') });
|
|
267
|
+
const outputFiles = Array.from(outputPathsMap.values());
|
|
268
|
+
for (let i = 0; i < inputFiles.length; i++) {
|
|
269
|
+
const inputFile = inputFiles[i];
|
|
270
|
+
const outputFile = outputFiles[i];
|
|
271
|
+
const spinner = ora(chalk.cyan(`Extracting thumbnail from ${inputFile}`)).start();
|
|
272
|
+
try {
|
|
273
|
+
if (!(await checkFFmpeg()))
|
|
274
|
+
throw new Error(chalk.red('FFmpeg not found.'));
|
|
275
|
+
// Verify video stream exists
|
|
276
|
+
spinner.text = chalk.cyan(`Checking video stream in ${inputFile}...`);
|
|
277
|
+
const streamInfo = await getStreamInfo(inputFile);
|
|
278
|
+
if (!streamInfo.hasVideo) {
|
|
279
|
+
spinner.fail(chalk.yellow(`ā ļø No video stream found in ${inputFile}`));
|
|
280
|
+
console.log(chalk.dim('This file does not contain any video tracks. Skipping...'));
|
|
281
|
+
continue;
|
|
282
|
+
}
|
|
283
|
+
spinner.text = chalk.cyan(`Extracting thumbnail from ${inputFile}...`);
|
|
284
|
+
const [width, height] = options.size.split('x');
|
|
285
|
+
const args = ['-i', inputFile];
|
|
286
|
+
if (options.force)
|
|
287
|
+
args.push('-y');
|
|
288
|
+
if (options.time)
|
|
289
|
+
args.push('-ss', options.time);
|
|
290
|
+
args.push('-vframes', '1');
|
|
291
|
+
let vf = `scale=${width}:${height}`;
|
|
292
|
+
if (options.vf && Array.isArray(options.vf) && options.vf.length > 0) {
|
|
293
|
+
vf += ',' + options.vf.join(',');
|
|
294
|
+
}
|
|
295
|
+
args.push('-vf', vf);
|
|
296
|
+
args.push('-q:v', options.quality);
|
|
297
|
+
args.push(outputFile);
|
|
298
|
+
await runFFmpeg(args, options.verbose, (line) => {
|
|
299
|
+
if (options.verbose)
|
|
300
|
+
logFFmpegOutput(line);
|
|
301
|
+
});
|
|
302
|
+
spinner.succeed(chalk.green.bold(`ā Thumbnail extracted to ${outputFile}`));
|
|
303
|
+
}
|
|
304
|
+
catch (err) {
|
|
305
|
+
spinner.fail(chalk.red.bold(`ā ${err.message}`));
|
|
306
|
+
}
|
|
307
|
+
}
|
|
229
308
|
});
|
|
230
309
|
}
|
|
231
310
|
//# 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;AAmBzC,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CA+VpD"}
|