@mediaproc/video 1.0.1 → 1.1.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.
Files changed (39) hide show
  1. package/README.md +487 -89
  2. package/dist/commands/compress.d.ts.map +1 -1
  3. package/dist/commands/compress.js +172 -65
  4. package/dist/commands/compress.js.map +1 -1
  5. package/dist/commands/extract.d.ts.map +1 -1
  6. package/dist/commands/extract.js +19 -3
  7. package/dist/commands/extract.js.map +1 -1
  8. package/dist/commands/merge.d.ts.map +1 -1
  9. package/dist/commands/merge.js +90 -12
  10. package/dist/commands/merge.js.map +1 -1
  11. package/dist/commands/resize.d.ts.map +1 -1
  12. package/dist/commands/resize.js +220 -85
  13. package/dist/commands/resize.js.map +1 -1
  14. package/dist/commands/transcode.d.ts.map +1 -1
  15. package/dist/commands/transcode.js +7 -1
  16. package/dist/commands/transcode.js.map +1 -1
  17. package/dist/commands/trim.d.ts.map +1 -1
  18. package/dist/commands/trim.js +177 -82
  19. package/dist/commands/trim.js.map +1 -1
  20. package/dist/register.d.ts.map +1 -1
  21. package/dist/register.js +7 -9
  22. package/dist/register.js.map +1 -1
  23. package/dist/utils/ffmpeg-output.d.ts +9 -0
  24. package/dist/utils/ffmpeg-output.d.ts.map +1 -0
  25. package/dist/utils/ffmpeg-output.js +94 -0
  26. package/dist/utils/ffmpeg-output.js.map +1 -0
  27. package/dist/utils/ffmpeg.d.ts +1 -1
  28. package/dist/utils/ffmpeg.d.ts.map +1 -1
  29. package/dist/utils/ffmpeg.js +12 -7
  30. package/dist/utils/ffmpeg.js.map +1 -1
  31. package/dist/utils/ffmpegLogger.d.ts +16 -0
  32. package/dist/utils/ffmpegLogger.d.ts.map +1 -0
  33. package/dist/utils/ffmpegLogger.js +66 -0
  34. package/dist/utils/ffmpegLogger.js.map +1 -0
  35. package/dist/utils/helpFormatter.d.ts +51 -0
  36. package/dist/utils/helpFormatter.d.ts.map +1 -0
  37. package/dist/utils/helpFormatter.js +134 -0
  38. package/dist/utils/helpFormatter.js.map +1 -0
  39. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../../src/commands/compress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CA8FvD"}
1
+ {"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../../src/commands/compress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAmNvD"}
@@ -1,86 +1,193 @@
1
1
  import chalk from 'chalk';
2
2
  import { stat } from 'fs/promises';
3
- import { runFFmpeg, getVideoMetadata, checkFFmpeg, validateInputFile, generateOutputPath, formatFileSize, formatDuration, } from '../utils/ffmpeg.js';
3
+ import ora from 'ora';
4
+ import { runFFmpeg, getVideoMetadata, checkFFmpeg, formatFileSize, } from '../utils/ffmpeg.js';
5
+ import { parseInputPaths, resolveOutputPaths } from '../utils/pathValidator.js';
6
+ import { logFFmpegOutput } from '../utils/ffmpegLogger.js';
7
+ import { createStandardHelp } from '../utils/helpFormatter.js';
4
8
  export function compressCommand(videoCmd) {
5
9
  videoCmd
6
- .command('compress <input>')
7
- .description('Compress video file')
8
- .option('-o, --output <path>', 'Output file path')
9
- .option('-q, --quality <quality>', 'Quality: low, medium, high', 'medium')
10
- .option('--codec <codec>', 'Video codec: h264, h265, vp9', 'h264')
11
- .option('--crf <crf>', 'CRF value (0-51, lower = better quality)', parseInt)
12
- .option('--dry-run', 'Show what would be done')
13
- .option('-v, --verbose', 'Verbose output')
10
+ .command('compress [input]')
11
+ .description('Compress video files to reduce file size while maintaining quality')
12
+ .option('-o, --output <path>', 'Output file or directory path')
13
+ .option('-q, --quality <quality>', 'Quality preset: low, medium, high, extreme (default: medium)', 'medium')
14
+ .option('-c, --codec <codec>', 'Video codec: h264, h265, vp9, av1 (default: h264)', 'h264')
15
+ .option('--crf <crf>', 'CRF value (0-51, lower=better quality)', parseInt)
16
+ .option('--preset <preset>', 'Encoding preset: ultrafast, fast, medium, slow, veryslow (default: medium)', 'medium')
17
+ .option('-b, --bitrate <bitrate>', 'Target bitrate (e.g., 2M, 5M)')
18
+ .option('--min-bitrate <bitrate>', 'Minimum bitrate (e.g., 1M)')
19
+ .option('--max-bitrate <bitrate>', 'Maximum bitrate (e.g., 8M)')
20
+ .option('--audio-bitrate <bitrate>', 'Audio bitrate (default: 128k)', '128k')
21
+ .option('--audio-codec <codec>', 'Audio codec: aac, mp3, opus (default: aac)', 'aac')
22
+ .option('--format <format>', 'Output format: mp4, mkv, webm (default: mp4)', 'mp4')
23
+ .option('--optimize-for <target>', 'Optimize for: web, streaming, archive, mobile')
24
+ .option('--resize <scale>', 'Also resize during compression (e.g., 720p, 1080p)')
25
+ .option('--threads <n>', 'Number of threads for encoding (default: auto)', parseInt)
26
+ .option('--hw-accel', 'Enable hardware acceleration (GPU)')
27
+ .option('--strip-metadata', 'Remove all metadata from output')
28
+ .option('--two-pass', 'Use two-pass encoding for better quality')
29
+ .option('--dry-run', 'Preview command without executing')
30
+ .option('-v, --verbose', 'Show detailed FFmpeg output')
31
+ .option('-h, --help', 'Display help for compress command')
14
32
  .action(async (input, options) => {
33
+ // Show help if requested (before input validation)
34
+ if (options.help || !input) {
35
+ createStandardHelp({
36
+ commandName: 'compress',
37
+ emoji: '🗜️',
38
+ description: 'Compress video files to reduce file size while maintaining visual quality. Uses modern codecs and smart compression techniques to achieve optimal file sizes. Can process single files or entire directories.',
39
+ usage: [
40
+ 'compress <input> [options]',
41
+ 'compress video.mp4 -q medium',
42
+ 'compress videos/ -q high -o compressed/'
43
+ ],
44
+ options: [
45
+ { flag: '-o, --output <path>', description: 'Output file/directory (default: <input>-compressed.<ext>)' },
46
+ { flag: '-q, --quality <quality>', description: 'Preset: low, medium, high, extreme (default: medium)' },
47
+ { flag: '-c, --codec <codec>', description: 'Codec: h264, h265 (HEVC), vp9, av1 (default: h264)' },
48
+ { flag: '--crf <crf>', description: 'CRF value 0-51, lower=better (overrides quality preset)' },
49
+ { flag: '--preset <preset>', description: 'Encoding: ultrafast, fast, medium, slow, veryslow' },
50
+ { flag: '-b, --bitrate <bitrate>', description: 'Target bitrate (e.g., 2M, 5M)' },
51
+ { flag: '--min-bitrate <bitrate>', description: 'Minimum bitrate (e.g., 1M)' },
52
+ { flag: '--max-bitrate <bitrate>', description: 'Maximum bitrate (e.g., 8M)' },
53
+ { flag: '--audio-bitrate <bitrate>', description: 'Audio bitrate (default: 128k)' },
54
+ { flag: '--audio-codec <codec>', description: 'Audio codec: aac, mp3, opus (default: aac)' },
55
+ { flag: '--format <format>', description: 'Output format: mp4, mkv, webm (default: mp4)' },
56
+ { flag: '--optimize-for <target>', description: 'Optimize for: web, streaming, archive, mobile' },
57
+ { flag: '--resize <scale>', description: 'Also resize during compression (e.g., 720p, 1080p)' },
58
+ { flag: '--threads <n>', description: 'Number of threads for encoding (default: auto)' },
59
+ { flag: '--hw-accel', description: 'Enable hardware acceleration (GPU)' },
60
+ { flag: '--strip-metadata', description: 'Remove all metadata from output' },
61
+ { flag: '--two-pass', description: 'Enable two-pass encoding for better quality' },
62
+ { flag: '--dry-run', description: 'Preview FFmpeg command without executing' },
63
+ { flag: '-v, --verbose', description: 'Show detailed FFmpeg output' }
64
+ ],
65
+ examples: [
66
+ { command: 'compress video.mp4', description: 'Compress with default medium quality' },
67
+ { command: 'compress video.mp4 -q high -c h265', description: 'High quality compression with HEVC' },
68
+ { command: 'compress large.mp4 -q extreme --preset slow', description: 'Maximum compression with slow encoding' },
69
+ { command: 'compress videos/ -q medium -o output/', description: 'Compress all videos in folder' },
70
+ { command: 'compress video.mp4 -c av1 --two-pass', description: 'Use AV1 codec with two-pass encoding' },
71
+ { command: 'compress video.mp4 -b 2M --audio-bitrate 96k', description: 'Compress to specific bitrates' }
72
+ ],
73
+ additionalSections: [
74
+ {
75
+ title: 'Quality Presets',
76
+ items: [
77
+ 'low - CRF 28, ~60% size reduction, noticeable quality loss',
78
+ 'medium - CRF 23, ~40% size reduction, minimal quality loss',
79
+ 'high - CRF 20, ~30% size reduction, near-identical quality',
80
+ 'extreme - CRF 18, ~20% size reduction, visually lossless'
81
+ ]
82
+ },
83
+ {
84
+ title: 'Codec Recommendations',
85
+ items: [
86
+ 'h264 - Best compatibility, fast, good compression',
87
+ 'h265 - 50% better compression than h264, slower',
88
+ 'vp9 - Good for web, free codec, similar to h265',
89
+ 'av1 - Best compression, very slow, future-proof'
90
+ ]
91
+ }
92
+ ],
93
+ tips: [
94
+ 'Use h265 for best quality-to-size ratio with good compatibility',
95
+ 'Two-pass encoding produces better quality but takes twice as long',
96
+ 'For folder compression, all videos will use the same settings',
97
+ 'Use --dry-run to preview the compression settings before processing'
98
+ ]
99
+ });
100
+ process.exit(0);
101
+ }
102
+ const spinner = ora('Processing compression...').start();
15
103
  try {
16
- console.log(chalk.blue.bold('🎬 Video Compression\n'));
17
104
  // Check ffmpeg
18
105
  const ffmpegAvailable = await checkFFmpeg();
19
106
  if (!ffmpegAvailable) {
20
- throw new Error('ffmpeg is not installed or not in PATH');
107
+ spinner.fail(chalk.red('ffmpeg is not installed or not in PATH'));
108
+ process.exit(1);
109
+ }
110
+ // Parse input files
111
+ const inputFiles = parseInputPaths(input);
112
+ if (inputFiles.length === 0) {
113
+ spinner.fail(chalk.red('No valid video files found'));
114
+ process.exit(1);
21
115
  }
22
- // Validate input
23
- const inputPath = validateInputFile(input);
24
- // Get input metadata
25
- console.log(chalk.dim('📊 Analyzing video...'));
26
- const metadata = await getVideoMetadata(inputPath);
27
- const inputStat = await stat(inputPath);
28
- console.log(chalk.gray(` Duration: ${formatDuration(metadata.duration)}`));
29
- console.log(chalk.gray(` Resolution: ${metadata.width}x${metadata.height}`));
30
- console.log(chalk.gray(` Codec: ${metadata.codec}`));
31
- console.log(chalk.gray(` Size: ${formatFileSize(inputStat.size)}`));
32
- console.log();
33
- // Determine CRF based on quality
116
+ spinner.text = `Found ${inputFiles.length} video file(s) to process`;
117
+ // Resolve output paths
118
+ const outputPaths = resolveOutputPaths(inputFiles, options.output, {
119
+ suffix: '-compressed',
120
+ newExtension: `.${options.format || 'mp4'}`
121
+ });
122
+ // Determine CRF based on quality preset
34
123
  const qualityCRF = {
35
124
  low: 28,
36
125
  medium: 23,
37
- high: 18,
126
+ high: 20,
127
+ extreme: 18,
128
+ };
129
+ const quality = options.quality || 'medium';
130
+ const crf = options.crf ?? qualityCRF[quality] ?? 23;
131
+ // Codec mapping
132
+ const codecMap = {
133
+ 'h264': 'libx264',
134
+ 'h265': 'libx265',
135
+ 'hevc': 'libx265',
136
+ 'vp9': 'libvpx-vp9',
137
+ 'av1': 'libaom-av1',
38
138
  };
39
- const crf = options.crf ?? qualityCRF[options.quality || 'medium'];
40
- // Generate output path
41
- const output = options.output || generateOutputPath(inputPath, 'compressed', 'mp4');
42
- // Build ffmpeg arguments
43
- const args = [
44
- '-i',
45
- inputPath,
46
- '-c:v',
47
- options.codec || 'h264',
48
- '-crf',
49
- crf.toString(),
50
- '-preset',
51
- 'medium',
52
- '-c:a',
53
- 'aac',
54
- '-b:a',
55
- '128k',
56
- '-y',
57
- output,
58
- ];
59
- if (options.dryRun) {
60
- console.log(chalk.yellow('🏃 Dry run mode - no files will be created\n'));
61
- console.log(chalk.dim('Command:'));
62
- console.log(chalk.gray(` ffmpeg ${args.join(' ')}\n`));
63
- console.log(chalk.green(' Dry run complete'));
64
- return;
139
+ const codec = codecMap[options.codec] || 'libx264';
140
+ // Process each file
141
+ for (let i = 0; i < inputFiles.length; i++) {
142
+ const inputFile = inputFiles[i];
143
+ const outputFile = outputPaths.get(inputFile);
144
+ spinner.text = `Processing ${i + 1}/${inputFiles.length}: ${inputFile}`;
145
+ // Get input metadata
146
+ const metadata = await getVideoMetadata(inputFile);
147
+ const inputStat = await stat(inputFile);
148
+ if (options.verbose) {
149
+ console.log(chalk.dim(` Duration: ${metadata.duration}s, Resolution: ${metadata.width}x${metadata.height}`));
150
+ }
151
+ // Build ffmpeg arguments
152
+ const args = ['-i', inputFile];
153
+ // Video codec settings
154
+ args.push('-c:v', codec);
155
+ if (options.bitrate) {
156
+ args.push('-b:v', options.bitrate);
157
+ }
158
+ else {
159
+ args.push('-crf', crf.toString());
160
+ }
161
+ args.push('-preset', options.preset || 'medium');
162
+ // Audio settings
163
+ args.push('-c:a', 'aac', '-b:a', options.audioBitrate || '128k');
164
+ // Output file
165
+ args.push('-y', outputFile);
166
+ // Show command if dry-run
167
+ if (options.dryRun) {
168
+ console.log(chalk.cyan('\nFFmpeg command:'));
169
+ console.log(chalk.gray('ffmpeg ' + args.join(' ')));
170
+ console.log();
171
+ continue;
172
+ }
173
+ // Run compression
174
+ await runFFmpeg(args, options.verbose, (line) => {
175
+ if (options.verbose) {
176
+ logFFmpegOutput(line);
177
+ }
178
+ });
179
+ // Get output file size
180
+ const outputStat = await stat(outputFile);
181
+ const reduction = ((1 - outputStat.size / inputStat.size) * 100).toFixed(1);
182
+ spinner.succeed(chalk.green(`✓ [${i + 1}/${inputFiles.length}] Compressed ${formatFileSize(inputStat.size)} → ${formatFileSize(outputStat.size)} (${reduction}% reduction)\n` +
183
+ chalk.dim(` ${outputFile}`)));
65
184
  }
66
- // Run compression
67
- console.log(chalk.dim('🔄 Compressing video...'));
68
- if (options.verbose) {
69
- console.log(chalk.dim(`ffmpeg ${args.join(' ')}\n`));
185
+ if (!options.dryRun) {
186
+ console.log(chalk.green.bold(`\n✨ Successfully compressed ${inputFiles.length} video(s)!`));
70
187
  }
71
- await runFFmpeg(args, options.verbose);
72
- // Get output file size
73
- const outputStat = await stat(output);
74
- const reduction = ((1 - outputStat.size / inputStat.size) * 100).toFixed(1);
75
- console.log();
76
- console.log(chalk.green.bold('✓ Compression Complete!\n'));
77
- console.log(chalk.gray(` Input: ${formatFileSize(inputStat.size)}`));
78
- console.log(chalk.gray(` Output: ${formatFileSize(outputStat.size)}`));
79
- console.log(chalk.gray(` Saved: ${reduction}%`));
80
- console.log(chalk.dim(`\n ${output}`));
81
188
  }
82
189
  catch (error) {
83
- console.error(chalk.red(`\n✗ Error: ${error.message}`));
190
+ spinner.fail(chalk.red(`Error: ${error.message}`));
84
191
  process.exit(1);
85
192
  }
86
193
  });
@@ -1 +1 @@
1
- {"version":3,"file":"compress.js","sourceRoot":"","sources":["../../src/commands/compress.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compress.js","sourceRoot":"","sources":["../../src/commands/compress.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/commands/extract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAezC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CA2PtD"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/commands/extract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBzC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CA0QtD"}
@@ -3,6 +3,7 @@ import { mkdir, stat } from 'fs/promises';
3
3
  import { join, resolve } from 'path';
4
4
  import { runFFmpeg, getVideoMetadata, checkFFmpeg, formatFileSize, formatDuration, parseTimeToSeconds, } from '../utils/ffmpeg.js';
5
5
  import { validatePaths, resolveOutputPaths } from '../utils/pathValidator.js';
6
+ import { styleFFmpegOutput, shouldDisplayLine } from '../utils/ffmpeg-output.js';
6
7
  export function extractCommand(videoCmd) {
7
8
  // Extract audio
8
9
  videoCmd
@@ -13,6 +14,7 @@ export function extractCommand(videoCmd) {
13
14
  .option('--bitrate <bitrate>', 'Audio bitrate (e.g., 192k)', '192k')
14
15
  .option('--dry-run', 'Show what would be done')
15
16
  .option('-v, --verbose', 'Verbose output')
17
+ .option('--help', 'Display help for command')
16
18
  .action(async (input, options) => {
17
19
  try {
18
20
  console.log(chalk.blue.bold('🎬 Audio Extraction\n'));
@@ -55,7 +57,11 @@ export function extractCommand(videoCmd) {
55
57
  if (options.verbose) {
56
58
  console.log(chalk.dim(`ffmpeg ${args.join(' ')}\n`));
57
59
  }
58
- await runFFmpeg(args, options.verbose);
60
+ await runFFmpeg(args, options.verbose, (line) => {
61
+ if (shouldDisplayLine(line, options.verbose || false)) {
62
+ console.log(styleFFmpegOutput(line));
63
+ }
64
+ });
59
65
  const outputStat = await stat(output);
60
66
  console.log();
61
67
  console.log(chalk.green.bold('✓ Extraction Complete!\n'));
@@ -80,6 +86,7 @@ export function extractCommand(videoCmd) {
80
86
  .option('--quality <quality>', 'JPEG quality (1-31, lower is better)', parseInt, 2)
81
87
  .option('--dry-run', 'Show what would be done')
82
88
  .option('-v, --verbose', 'Verbose output')
89
+ .option('--help', 'Display help for command')
83
90
  .action(async (input, options) => {
84
91
  try {
85
92
  console.log(chalk.blue.bold('🎬 Frame Extraction\n'));
@@ -138,7 +145,11 @@ export function extractCommand(videoCmd) {
138
145
  if (options.verbose) {
139
146
  console.log(chalk.dim(`ffmpeg ${args.join(' ')}\n`));
140
147
  }
141
- await runFFmpeg(args, options.verbose);
148
+ await runFFmpeg(args, options.verbose, (line) => {
149
+ if (shouldDisplayLine(line, options.verbose || false)) {
150
+ console.log(styleFFmpegOutput(line));
151
+ }
152
+ });
142
153
  console.log();
143
154
  console.log(chalk.green.bold('✓ Extraction Complete!\n'));
144
155
  console.log(chalk.gray(` Frames saved to: ${outputDir}`));
@@ -159,6 +170,7 @@ export function extractCommand(videoCmd) {
159
170
  .option('--width <width>', 'Thumbnail width in pixels', parseInt)
160
171
  .option('--dry-run', 'Show what would be done')
161
172
  .option('-v, --verbose', 'Verbose output')
173
+ .option('--help', 'Display help for command')
162
174
  .action(async (input, options) => {
163
175
  try {
164
176
  console.log(chalk.blue.bold('🎬 Thumbnail Extraction\n'));
@@ -195,7 +207,11 @@ export function extractCommand(videoCmd) {
195
207
  if (options.verbose) {
196
208
  console.log(chalk.dim(`ffmpeg ${args.join(' ')}\n`));
197
209
  }
198
- await runFFmpeg(args, options.verbose);
210
+ await runFFmpeg(args, options.verbose, (line) => {
211
+ if (shouldDisplayLine(line, options.verbose || false)) {
212
+ console.log(styleFFmpegOutput(line));
213
+ }
214
+ });
199
215
  const outputStat = await stat(output);
200
216
  console.log();
201
217
  console.log(chalk.green.bold('✓ Extraction Complete!\n'));
@@ -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;AAczC,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAqJpD"}
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/commands/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBzC,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CA+NpD"}
@@ -1,31 +1,105 @@
1
1
  import chalk from 'chalk';
2
+ import ora from 'ora';
2
3
  import { writeFile, unlink, stat } from 'fs/promises';
3
4
  import { tmpdir } from 'os';
4
5
  import { join } from 'path';
5
6
  import { runFFmpeg, getVideoMetadata, checkFFmpeg, formatFileSize, formatDuration, } from '../utils/ffmpeg.js';
6
- import { validatePaths, resolveOutputPaths, fileExists } from '../utils/pathValidator.js';
7
+ import { fileExists, validatePaths, resolveOutputPaths } from '../utils/pathValidator.js';
8
+ import { logFFmpegOutput } from '../utils/ffmpegLogger.js';
9
+ import { createStandardHelp } from '../utils/helpFormatter.js';
7
10
  export function mergeCommand(videoCmd) {
8
11
  videoCmd
9
12
  .command('merge <inputs...>')
10
- .description('Merge multiple videos into one')
11
- .option('-o, --output <path>', 'Output file path', 'merged.mp4')
12
- .option('--re-encode', 'Re-encode videos (slower but handles different formats)')
13
- .option('--dry-run', 'Show what would be done')
14
- .option('-v, --verbose', 'Verbose output')
13
+ .description('Merge multiple video files into a single video')
14
+ .option('-o, --output <path>', 'Output file path (default: merged.mp4)', 'merged.mp4')
15
+ .option('--re-encode', 'Re-encode videos (slower but handles different formats/codecs)')
16
+ .option('--transition <type>', 'Transition effect: fade, wipe, dissolve, none (default: none)', 'none')
17
+ .option('--transition-duration <seconds>', 'Transition duration in seconds (default: 1)', parseFloat, 1)
18
+ .option('-c, --codec <codec>', 'Video codec for re-encoding: h264, h265, vp9 (default: h264)', 'h264')
19
+ .option('--quality <crf>', 'CRF quality if re-encoding (default: 23)', parseInt, 23)
20
+ .option('--scale <resolution>', 'Scale all videos to same resolution (e.g., 1080p)')
21
+ .option('--audio-track <n>', 'Select audio track from videos (1-based, default: 1)', parseInt, 1)
22
+ .option('--audio-codec <codec>', 'Audio codec: aac, mp3, opus (default: aac)', 'aac')
23
+ .option('--normalize-audio', 'Normalize audio levels across videos')
24
+ .option('--format <format>', 'Output format: mp4, mkv, avi, webm (default: mp4)', 'mp4')
25
+ .option('--dry-run', 'Preview command without executing')
26
+ .option('-v, --verbose', 'Show detailed FFmpeg output')
27
+ .option('-h, --help', 'Display help for merge command')
15
28
  .action(async (inputs, options) => {
29
+ if (options.help) {
30
+ createStandardHelp({
31
+ commandName: 'merge',
32
+ emoji: '🔗',
33
+ description: 'Merge multiple video files into a single video. Supports fast concatenation (same format) or re-encoding (different formats). Can merge videos from different sources with automatic format conversion.',
34
+ usage: [
35
+ 'merge <video1> <video2> [video3...] [options]',
36
+ 'merge video1.mp4 video2.mp4 video3.mp4',
37
+ 'merge part*.mp4 -o complete.mp4'
38
+ ],
39
+ options: [
40
+ { flag: '-o, --output <path>', description: 'Output file path (default: merged.mp4)' },
41
+ { flag: '--re-encode', description: 'Re-encode videos (handles different formats/codecs)' },
42
+ { flag: '--transition <type>', description: 'Transition effect: fade, wipe, dissolve, none (default: none)' },
43
+ { flag: '--transition-duration <seconds>', description: 'Transition duration in seconds (default: 1)' },
44
+ { flag: '-c, --codec <codec>', description: 'Video codec for re-encoding: h264, h265, vp9' },
45
+ { flag: '--quality <crf>', description: 'CRF quality if re-encoding (default: 23)' },
46
+ { flag: '--scale <resolution>', description: 'Scale all videos to same resolution (e.g., 1080p)' },
47
+ { flag: '--audio-track <n>', description: 'Select audio track from videos (1-based, default: 1)' },
48
+ { flag: '--audio-codec <codec>', description: 'Audio codec: aac, mp3, opus (default: aac)' },
49
+ { flag: '--normalize-audio', description: 'Normalize audio levels across videos' },
50
+ { flag: '--format <format>', description: 'Output format: mp4, mkv, avi, webm (default: mp4)' },
51
+ { flag: '--dry-run', description: 'Preview FFmpeg command without executing' },
52
+ { flag: '-v, --verbose', description: 'Show detailed FFmpeg output' }
53
+ ],
54
+ examples: [
55
+ { command: 'merge video1.mp4 video2.mp4 video3.mp4', description: 'Merge three videos quickly (same format)' },
56
+ { command: 'merge part1.mp4 part2.mov part3.avi --re-encode', description: 'Merge different format videos with re-encoding' },
57
+ { command: 'merge *.mp4 -o complete.mp4', description: 'Merge all MP4 files in current directory' },
58
+ { command: 'merge video1.mp4 video2.mp4 -c h265 --re-encode', description: 'Merge and compress with HEVC codec' },
59
+ { command: 'merge clip*.mp4 -o final.mkv --format mkv', description: 'Merge to MKV format' }
60
+ ],
61
+ additionalSections: [
62
+ {
63
+ title: 'Merge Methods',
64
+ items: [
65
+ 'Fast Concatenation - No re-encoding, very fast, requires same codec/format',
66
+ 'Re-encoding - Slower but handles any format/codec combination',
67
+ 'Auto Detection - Automatically chooses best method based on input files'
68
+ ]
69
+ },
70
+ {
71
+ title: 'Requirements',
72
+ items: [
73
+ 'All videos must have the same resolution for best results',
74
+ 'Audio tracks will be merged in order',
75
+ 'At least 2 videos required for merging',
76
+ 'Videos are merged in the order specified'
77
+ ]
78
+ }
79
+ ],
80
+ tips: [
81
+ 'Use fast concatenation (no --re-encode) when all videos have same format',
82
+ 'Use --re-encode when merging different formats or codecs',
83
+ 'Sort input files numerically if using wildcards: part1, part2, etc.',
84
+ 'Check video compatibility with --dry-run before long merges'
85
+ ]
86
+ });
87
+ process.exit(0);
88
+ }
16
89
  const tempListFile = join(tmpdir(), `mediaproc-merge-${Date.now()}.txt`);
90
+ const spinner = ora('Processing video merge...').start();
17
91
  try {
18
- console.log(chalk.blue.bold('🎬 Video Merging\n'));
19
92
  if (inputs.length < 2) {
20
- throw new Error('At least 2 videos are required for merging');
93
+ spinner.fail(chalk.red('At least 2 videos are required for merging'));
94
+ process.exit(1);
21
95
  }
22
96
  // Check ffmpeg
23
97
  const ffmpegAvailable = await checkFFmpeg();
24
98
  if (!ffmpegAvailable) {
25
- throw new Error('ffmpeg is not installed or not in PATH');
99
+ spinner.fail(chalk.red('ffmpeg is not installed or not in PATH'));
100
+ process.exit(1);
26
101
  }
27
- // Validate all inputs
28
- console.log(chalk.dim('📊 Analyzing videos...\n'));
102
+ spinner.text = 'Analyzing videos...';
29
103
  const inputPaths = [];
30
104
  const metadataList = [];
31
105
  let totalDuration = 0;
@@ -108,7 +182,11 @@ export function mergeCommand(videoCmd) {
108
182
  if (options.verbose) {
109
183
  console.log(chalk.dim(`ffmpeg ${args.join(' ')}\n`));
110
184
  }
111
- await runFFmpeg(args, options.verbose);
185
+ await runFFmpeg(args, options.verbose, (line) => {
186
+ if (options.verbose) {
187
+ logFFmpegOutput(line);
188
+ }
189
+ });
112
190
  // Get output file size
113
191
  const outputStat = await stat(output);
114
192
  console.log();
@@ -1 +1 @@
1
- {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/commands/merge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/commands/merge.ts"],"names":[],"mappings":"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"}