@mediaproc/video 1.0.1 → 1.1.1
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/README.md +487 -89
- package/dist/commands/compress.d.ts.map +1 -1
- package/dist/commands/compress.js +172 -65
- package/dist/commands/compress.js.map +1 -1
- package/dist/commands/extract.d.ts.map +1 -1
- package/dist/commands/extract.js +19 -3
- package/dist/commands/extract.js.map +1 -1
- package/dist/commands/merge.d.ts.map +1 -1
- package/dist/commands/merge.js +90 -12
- package/dist/commands/merge.js.map +1 -1
- package/dist/commands/resize.d.ts.map +1 -1
- package/dist/commands/resize.js +220 -85
- package/dist/commands/resize.js.map +1 -1
- package/dist/commands/transcode.d.ts.map +1 -1
- package/dist/commands/transcode.js +7 -1
- package/dist/commands/transcode.js.map +1 -1
- package/dist/commands/trim.d.ts.map +1 -1
- package/dist/commands/trim.js +177 -82
- package/dist/commands/trim.js.map +1 -1
- package/dist/register.d.ts.map +1 -1
- package/dist/register.js +7 -9
- package/dist/register.js.map +1 -1
- package/dist/utils/ffmpeg-output.d.ts +9 -0
- package/dist/utils/ffmpeg-output.d.ts.map +1 -0
- package/dist/utils/ffmpeg-output.js +94 -0
- package/dist/utils/ffmpeg-output.js.map +1 -0
- package/dist/utils/ffmpeg.d.ts +1 -1
- package/dist/utils/ffmpeg.d.ts.map +1 -1
- package/dist/utils/ffmpeg.js +12 -7
- package/dist/utils/ffmpeg.js.map +1 -1
- package/dist/utils/ffmpegLogger.d.ts +16 -0
- package/dist/utils/ffmpegLogger.d.ts.map +1 -0
- package/dist/utils/ffmpegLogger.js +66 -0
- package/dist/utils/ffmpegLogger.js.map +1 -0
- package/dist/utils/helpFormatter.d.ts +51 -0
- package/dist/utils/helpFormatter.d.ts.map +1 -0
- package/dist/utils/helpFormatter.js +134 -0
- package/dist/utils/helpFormatter.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FFmpeg Output Logger - Styled output for better readability
|
|
3
|
+
*/
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
/**
|
|
6
|
+
* Check if a line should be displayed based on content
|
|
7
|
+
*/
|
|
8
|
+
export function shouldDisplayLine(line) {
|
|
9
|
+
const trimmed = line.trim();
|
|
10
|
+
// Skip empty lines
|
|
11
|
+
if (!trimmed)
|
|
12
|
+
return false;
|
|
13
|
+
// Skip configuration lines
|
|
14
|
+
if (trimmed.startsWith('ffmpeg version') ||
|
|
15
|
+
trimmed.startsWith('built with') ||
|
|
16
|
+
trimmed.startsWith('configuration:') ||
|
|
17
|
+
trimmed.startsWith('lib')) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
// Show important progress and status lines
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Style FFmpeg output line with appropriate colors and formatting
|
|
25
|
+
*/
|
|
26
|
+
export function styleFFmpegOutput(line) {
|
|
27
|
+
const trimmed = line.trim();
|
|
28
|
+
// Progress updates (frame=, fps=, time=)
|
|
29
|
+
if (trimmed.match(/frame=|fps=|time=|speed=/)) {
|
|
30
|
+
return chalk.cyan(trimmed);
|
|
31
|
+
}
|
|
32
|
+
// Input file info
|
|
33
|
+
if (trimmed.startsWith('Input #') || trimmed.includes('Duration:') || trimmed.includes('Stream #')) {
|
|
34
|
+
return chalk.blue(trimmed);
|
|
35
|
+
}
|
|
36
|
+
// Output file info
|
|
37
|
+
if (trimmed.startsWith('Output #')) {
|
|
38
|
+
return chalk.green(trimmed);
|
|
39
|
+
}
|
|
40
|
+
// Warnings
|
|
41
|
+
if (trimmed.toLowerCase().includes('warning')) {
|
|
42
|
+
return chalk.yellow(trimmed);
|
|
43
|
+
}
|
|
44
|
+
// Errors
|
|
45
|
+
if (trimmed.toLowerCase().includes('error') || trimmed.toLowerCase().includes('failed')) {
|
|
46
|
+
return chalk.red(trimmed);
|
|
47
|
+
}
|
|
48
|
+
// Success messages
|
|
49
|
+
if (trimmed.includes('successfully') || trimmed.includes('complete')) {
|
|
50
|
+
return chalk.green(trimmed);
|
|
51
|
+
}
|
|
52
|
+
// Default gray for other lines
|
|
53
|
+
return chalk.gray(trimmed);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Log FFmpeg output with styling
|
|
57
|
+
*/
|
|
58
|
+
export function logFFmpegOutput(output) {
|
|
59
|
+
const lines = output.split('\n');
|
|
60
|
+
for (const line of lines) {
|
|
61
|
+
if (shouldDisplayLine(line)) {
|
|
62
|
+
console.log(styleFFmpegOutput(line));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=ffmpegLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ffmpegLogger.js","sourceRoot":"","sources":["../../src/utils/ffmpegLogger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAE5B,mBAAmB;IACnB,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,2BAA2B;IAC3B,IAAI,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC;QACpC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;QAChC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC;QACpC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,2CAA2C;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAE5B,yCAAyC;IACzC,IAAI,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACnG,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW;IACX,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,SAAS;IACT,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxF,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrE,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,+BAA+B;IAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standardized Help Formatter for MediaProc Video CLI
|
|
3
|
+
* Creates consistent, beautiful help displays for all video commands
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Interface for command help options
|
|
7
|
+
*/
|
|
8
|
+
export interface HelpOption {
|
|
9
|
+
flag: string;
|
|
10
|
+
description: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Interface for command help examples
|
|
14
|
+
*/
|
|
15
|
+
export interface HelpExample {
|
|
16
|
+
command: string;
|
|
17
|
+
description: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Interface for help section
|
|
21
|
+
*/
|
|
22
|
+
export interface HelpSection {
|
|
23
|
+
title: string;
|
|
24
|
+
items: string[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Interface for command help configuration
|
|
28
|
+
*/
|
|
29
|
+
export interface CommandHelpConfig {
|
|
30
|
+
commandName: string;
|
|
31
|
+
emoji: string;
|
|
32
|
+
description: string;
|
|
33
|
+
usage: string[];
|
|
34
|
+
options: HelpOption[];
|
|
35
|
+
examples: HelpExample[];
|
|
36
|
+
additionalSections?: HelpSection[];
|
|
37
|
+
tips?: string[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Create standardized help display for commands
|
|
41
|
+
*/
|
|
42
|
+
export declare function createStandardHelp(config: CommandHelpConfig): void;
|
|
43
|
+
/**
|
|
44
|
+
* Quick help display for commands with minimal options
|
|
45
|
+
*/
|
|
46
|
+
export declare function createQuickHelp(commandName: string, emoji: string, description: string, usage: string, options: string[]): void;
|
|
47
|
+
/**
|
|
48
|
+
* Create error help display
|
|
49
|
+
*/
|
|
50
|
+
export declare function createErrorHelp(commandName: string, error: string, suggestion?: string): void;
|
|
51
|
+
//# sourceMappingURL=helpFormatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpFormatter.d.ts","sourceRoot":"","sources":["../../src/utils/helpFormatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,WAAW,EAAE,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAqCD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAgFlE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAAE,GAChB,IAAI,CAgBN;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAc7F"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standardized Help Formatter for MediaProc Video CLI
|
|
3
|
+
* Creates consistent, beautiful help displays for all video commands
|
|
4
|
+
*/
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
/**
|
|
7
|
+
* Create a gradient-like effect using chalk
|
|
8
|
+
*/
|
|
9
|
+
function createGradientText(text, startColor) {
|
|
10
|
+
return chalk.hex(startColor)(text);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create a box around content
|
|
14
|
+
*/
|
|
15
|
+
function createBox(content, borderColor = 'magenta') {
|
|
16
|
+
const lines = content.split('\n');
|
|
17
|
+
const maxLength = Math.max(...lines.map(line => stripAnsi(line).length));
|
|
18
|
+
const width = Math.min(maxLength + 4, 100);
|
|
19
|
+
const colorFn = chalk[borderColor];
|
|
20
|
+
const topBorder = colorFn('╭' + '─'.repeat(width - 2) + '╮');
|
|
21
|
+
const bottomBorder = colorFn('╰' + '─'.repeat(width - 2) + '╯');
|
|
22
|
+
const boxedLines = lines.map(line => {
|
|
23
|
+
const stripped = stripAnsi(line);
|
|
24
|
+
const padding = ' '.repeat(Math.max(0, width - stripped.length - 4));
|
|
25
|
+
return colorFn('│ ') + line + padding + colorFn(' │');
|
|
26
|
+
});
|
|
27
|
+
return '\n' + topBorder + '\n' + boxedLines.join('\n') + '\n' + bottomBorder + '\n';
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Strip ANSI codes from string for length calculation
|
|
31
|
+
*/
|
|
32
|
+
function stripAnsi(str) {
|
|
33
|
+
return str.replace(/\x1b\[[0-9;]*m/g, '');
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Create standardized help display for commands
|
|
37
|
+
*/
|
|
38
|
+
export function createStandardHelp(config) {
|
|
39
|
+
let helpContent = '';
|
|
40
|
+
// Header
|
|
41
|
+
helpContent += createGradientText(`${config.emoji} MediaProc Video - ${config.commandName} Command`, '#9b59b6') + '\n\n';
|
|
42
|
+
// Description
|
|
43
|
+
helpContent += chalk.white(config.description) + '\n\n';
|
|
44
|
+
// Usage
|
|
45
|
+
helpContent += chalk.magenta.bold('Usage:') + '\n';
|
|
46
|
+
config.usage.forEach(usage => {
|
|
47
|
+
helpContent += chalk.white(` ${chalk.cyan('mediaproc-video')} ${usage}`) + '\n';
|
|
48
|
+
});
|
|
49
|
+
helpContent += '\n';
|
|
50
|
+
// Options
|
|
51
|
+
helpContent += chalk.magenta.bold('Options:') + '\n';
|
|
52
|
+
// Check if help flag already exists
|
|
53
|
+
const hasHelpFlag = config.options && config.options.some(option => option.flag.includes('-h') || option.flag.includes('--help'));
|
|
54
|
+
// Add custom options first
|
|
55
|
+
if (config.options && config.options.length > 0) {
|
|
56
|
+
config.options.forEach(option => {
|
|
57
|
+
const flagPart = chalk.yellow(option.flag.padEnd(35));
|
|
58
|
+
const descPart = chalk.gray(option.description);
|
|
59
|
+
helpContent += ` ${flagPart} ${descPart}\n`;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
// Add the global help flag only if it doesn't already exist
|
|
63
|
+
if (!hasHelpFlag) {
|
|
64
|
+
helpContent += ` ${chalk.yellow('-h, --help'.padEnd(35))} ${chalk.gray('Show this help message')}\n`;
|
|
65
|
+
}
|
|
66
|
+
helpContent += '\n';
|
|
67
|
+
// Examples
|
|
68
|
+
if (config.examples && config.examples.length > 0) {
|
|
69
|
+
helpContent += chalk.magenta.bold('Examples:') + '\n';
|
|
70
|
+
config.examples.forEach(example => {
|
|
71
|
+
// Check if command already starts with 'mediaproc-video', if not add it
|
|
72
|
+
const command = example.command.startsWith('mediaproc-video ')
|
|
73
|
+
? example.command
|
|
74
|
+
: `mediaproc-video ${example.command}`;
|
|
75
|
+
const formattedCommand = command
|
|
76
|
+
.replace(/^mediaproc-video /, `${chalk.cyan('mediaproc-video')} `);
|
|
77
|
+
helpContent += chalk.white(` ${formattedCommand}`) + '\n';
|
|
78
|
+
helpContent += chalk.dim(` → ${example.description}`) + '\n\n';
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
// Additional sections
|
|
82
|
+
if (config.additionalSections && config.additionalSections.length > 0) {
|
|
83
|
+
config.additionalSections.forEach(section => {
|
|
84
|
+
helpContent += chalk.hex('#9b59b6').bold(`💡 ${section.title}:`) + '\n';
|
|
85
|
+
section.items.forEach(item => {
|
|
86
|
+
helpContent += chalk.hex('#95afc0')(` • ${item}`) + '\n';
|
|
87
|
+
});
|
|
88
|
+
helpContent += '\n';
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
// Tips
|
|
92
|
+
if (config.tips && config.tips.length > 0) {
|
|
93
|
+
config.tips.forEach(tip => {
|
|
94
|
+
helpContent += chalk.yellow(`💡 Tip: ${tip}`) + '\n';
|
|
95
|
+
});
|
|
96
|
+
helpContent += '\n';
|
|
97
|
+
}
|
|
98
|
+
// Footer
|
|
99
|
+
helpContent += chalk.dim(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`) + '\n';
|
|
100
|
+
helpContent += chalk.hex('#636e72')(`🎬 MediaProc Video Plugin • Powered by FFmpeg • Professional Quality`);
|
|
101
|
+
console.log(createBox(helpContent, 'magenta'));
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Quick help display for commands with minimal options
|
|
105
|
+
*/
|
|
106
|
+
export function createQuickHelp(commandName, emoji, description, usage, options) {
|
|
107
|
+
let helpContent = '';
|
|
108
|
+
helpContent += createGradientText(`${emoji} ${commandName.toUpperCase()} COMMAND`, '#9b59b6') + '\n\n';
|
|
109
|
+
helpContent += chalk.white(description) + '\n\n';
|
|
110
|
+
helpContent += chalk.magenta.bold('Usage:') + '\n';
|
|
111
|
+
helpContent += chalk.white(` ${chalk.cyan('mediaproc-video')} ${usage}`) + '\n\n';
|
|
112
|
+
if (options.length > 0) {
|
|
113
|
+
helpContent += chalk.magenta.bold('Options:') + '\n';
|
|
114
|
+
options.forEach(option => {
|
|
115
|
+
helpContent += chalk.gray(` ${option}`) + '\n';
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
console.log(createBox(helpContent, 'magenta'));
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Create error help display
|
|
122
|
+
*/
|
|
123
|
+
export function createErrorHelp(commandName, error, suggestion) {
|
|
124
|
+
let helpContent = '';
|
|
125
|
+
helpContent += chalk.red.bold(`❌ Error in ${commandName} command\n\n`);
|
|
126
|
+
helpContent += chalk.white(error) + '\n\n';
|
|
127
|
+
if (suggestion) {
|
|
128
|
+
helpContent += chalk.yellow('💡 Suggestion:\n');
|
|
129
|
+
helpContent += chalk.white(suggestion) + '\n';
|
|
130
|
+
}
|
|
131
|
+
helpContent += chalk.dim('\nRun with --help flag for more information');
|
|
132
|
+
console.log(createBox(helpContent, 'red'));
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=helpFormatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpFormatter.js","sourceRoot":"","sources":["../../src/utils/helpFormatter.ts"],"names":[],"mappings":"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"}
|