@mediaproc/audio 1.1.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.
Files changed (41) hide show
  1. package/dist/cli.js +21 -4
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/convert.d.ts.map +1 -1
  4. package/dist/commands/convert.js +31 -29
  5. package/dist/commands/convert.js.map +1 -1
  6. package/dist/commands/extract.d.ts.map +1 -1
  7. package/dist/commands/extract.js +57 -34
  8. package/dist/commands/extract.js.map +1 -1
  9. package/dist/commands/merge.d.ts.map +1 -1
  10. package/dist/commands/merge.js +102 -39
  11. package/dist/commands/merge.js.map +1 -1
  12. package/dist/commands/metadata.d.ts +3 -0
  13. package/dist/commands/metadata.d.ts.map +1 -0
  14. package/dist/commands/metadata.js +269 -0
  15. package/dist/commands/metadata.js.map +1 -0
  16. package/dist/commands/normalize.d.ts.map +1 -1
  17. package/dist/commands/normalize.js +92 -34
  18. package/dist/commands/normalize.js.map +1 -1
  19. package/dist/commands/trim.d.ts.map +1 -1
  20. package/dist/commands/trim.js +27 -22
  21. package/dist/commands/trim.js.map +1 -1
  22. package/dist/register.d.ts +2 -1
  23. package/dist/register.d.ts.map +1 -1
  24. package/dist/register.js +18 -1
  25. package/dist/register.js.map +1 -1
  26. package/dist/types.d.ts +30 -2
  27. package/dist/types.d.ts.map +1 -1
  28. package/dist/utils/ffmpeg-output.d.ts +6 -2
  29. package/dist/utils/ffmpeg-output.d.ts.map +1 -1
  30. package/dist/utils/ffmpeg-output.js +51 -59
  31. package/dist/utils/ffmpeg-output.js.map +1 -1
  32. package/dist/utils/ffmpeg.d.ts +9 -8
  33. package/dist/utils/ffmpeg.d.ts.map +1 -1
  34. package/dist/utils/ffmpeg.js +107 -28
  35. package/dist/utils/ffmpeg.js.map +1 -1
  36. package/dist/utils/ffmpegLogger.d.ts +3 -7
  37. package/dist/utils/ffmpegLogger.d.ts.map +1 -1
  38. package/dist/utils/ffmpegLogger.js +16 -48
  39. package/dist/utils/ffmpegLogger.js.map +1 -1
  40. package/package.json +4 -8
  41. package/bin/cli.js +0 -5
@@ -1,30 +1,21 @@
1
1
  import chalk from 'chalk';
2
2
  /**
3
- * Parse and style FFmpeg output for better readability
3
+ * Style FFmpeg output line with appropriate colors and formatting
4
4
  */
5
5
  export function styleFFmpegOutput(line) {
6
- line = line.trim();
7
- // Skip empty lines
8
- if (!line)
6
+ const trimmed = line.trim();
7
+ if (!trimmed)
9
8
  return '';
10
- // Error messages (red)
11
- if (line.includes('Error') || line.includes('error') || line.includes('failed')) {
12
- return chalk.red(line);
13
- }
14
- // Warning messages (yellow)
15
- if (line.includes('Warning') || line.includes('warning')) {
16
- return chalk.yellow(line);
17
- }
18
- // Progress information (cyan)
19
- if (line.includes('frame=') || line.includes('fps=') || line.includes('time=') || line.includes('speed=')) {
20
- // Parse progress line
21
- const frameMatch = line.match(/frame=\s*(\d+)/);
22
- const fpsMatch = line.match(/fps=\s*([\d.]+)/);
23
- const timeMatch = line.match(/time=\s*([\d:\.]+)/);
24
- const speedMatch = line.match(/speed=\s*([\d.]+x)/);
25
- const sizeMatch = line.match(/size=\s*(\d+\w+)/);
26
- const bitrateMatch = line.match(/bitrate=\s*([\d.]+\w+)/);
27
- let output = chalk.cyan('⚡ Progress: ');
9
+ // Progress updates (frame=, fps=, time=, speed=)
10
+ if (trimmed.match(/frame=|fps=|time=|speed=/)) {
11
+ // Parse progress line for richer output
12
+ const frameMatch = trimmed.match(/frame=\s*(\d+)/);
13
+ const fpsMatch = trimmed.match(/fps=\s*([\d.]+)/);
14
+ const timeMatch = trimmed.match(/time=\s*([\d:\.]+)/);
15
+ const speedMatch = trimmed.match(/speed=\s*([\d.]+x)/);
16
+ const sizeMatch = trimmed.match(/size=\s*(\d+\w+)/);
17
+ const bitrateMatch = trimmed.match(/bitrate=\s*([\d.]+\w+)/);
18
+ let output = chalk.cyan.bold(' Progress: ');
28
19
  if (frameMatch)
29
20
  output += chalk.white(`Frame ${frameMatch[1]} `);
30
21
  if (fpsMatch)
@@ -39,56 +30,57 @@ export function styleFFmpegOutput(line) {
39
30
  output += chalk.green(`• ${speedMatch[1]}`);
40
31
  return output;
41
32
  }
42
- // Input/Output file info (blue)
43
- if (line.includes('Input #') || line.includes('Output #')) {
44
- return chalk.blue.bold(line);
33
+ // Input file info
34
+ if (trimmed.startsWith('Input #') || trimmed.includes('Duration:') || trimmed.includes('Stream #')) {
35
+ return chalk.blue(trimmed);
45
36
  }
46
- // Stream info (magenta)
47
- if (line.includes('Stream #')) {
48
- return chalk.magenta(line);
37
+ // Output file info
38
+ if (trimmed.startsWith('Output #')) {
39
+ return chalk.green(trimmed);
49
40
  }
50
- // Duration and metadata (green)
51
- if (line.includes('Duration:') || line.includes('Metadata:')) {
52
- return chalk.green(line);
41
+ // Warnings
42
+ if (trimmed.toLowerCase().includes('warning')) {
43
+ return chalk.yellow(trimmed);
53
44
  }
54
- // Configuration info (gray)
55
- if (line.includes('configuration:') || line.includes('libav') || line.includes('built with')) {
56
- return chalk.gray(line);
45
+ // Errors
46
+ if (trimmed.toLowerCase().includes('error') || trimmed.toLowerCase().includes('failed')) {
47
+ return chalk.red(trimmed);
57
48
  }
58
- // Success messages (green)
59
- if (line.includes('successfully') || line.includes('completed')) {
60
- return chalk.green(line);
49
+ // Success messages
50
+ if (trimmed.includes('successfully') || trimmed.includes('complete')) {
51
+ return chalk.green(trimmed);
61
52
  }
62
- // Default: dim for general info
63
- return chalk.dim(line);
53
+ // Default gray for other lines
54
+ return chalk.gray(trimmed);
64
55
  }
65
56
  /**
66
- * Check if line should be displayed based on verbosity
57
+ * Check if a line should be displayed based on verbosity and content
67
58
  */
68
59
  export function shouldDisplayLine(line, verbose) {
69
- line = line.trim();
70
- if (!line)
60
+ const trimmed = line.trim();
61
+ if (!trimmed)
71
62
  return false;
72
63
  // Always show errors and warnings
73
- if (line.includes('Error') || line.includes('error') || line.includes('Warning') || line.includes('warning')) {
64
+ if (trimmed.toLowerCase().includes('error') || trimmed.toLowerCase().includes('failed') || trimmed.toLowerCase().includes('warning'))
74
65
  return true;
75
- }
76
- // Always show progress
77
- if (line.includes('frame=') && line.includes('time=')) {
66
+ // Show progress and status lines always
67
+ if (trimmed.match(/frame=|fps=|time=|speed=/))
78
68
  return true;
79
- }
80
- // Show important info
81
- if (line.includes('Input #') || line.includes('Output #') || line.includes('Stream #')) {
82
- return verbose;
83
- }
84
- // Show duration and metadata if verbose
85
- if (line.includes('Duration:') || line.includes('Metadata:')) {
86
- return verbose;
87
- }
88
- // Filter out configuration and build info unless very verbose
89
- if (line.includes('configuration:') || line.includes('built with')) {
90
- return false;
91
- }
69
+ // Show input/output info
70
+ if (trimmed.startsWith('Input #') || trimmed.startsWith('Output #'))
71
+ return true;
72
+ // Show if verbose
92
73
  return verbose;
93
74
  }
75
+ /**
76
+ * Log FFmpeg output with styling and filtering
77
+ */
78
+ export function logFFmpegOutput(output, verbose = false) {
79
+ const lines = output.split('\n');
80
+ for (const line of lines) {
81
+ if (shouldDisplayLine(line, verbose)) {
82
+ console.log(styleFFmpegOutput(line));
83
+ }
84
+ }
85
+ }
94
86
  //# sourceMappingURL=ffmpeg-output.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ffmpeg-output.js","sourceRoot":"","sources":["../../src/utils/ffmpeg-output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ffmpeg-output.js","sourceRoot":"","sources":["../../src/utils/ffmpeg-output.ts"],"names":[],"mappings":"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"}
@@ -8,23 +8,24 @@ export interface AudioMetadata {
8
8
  channelLayout?: string;
9
9
  }
10
10
  /**
11
- * Execute ffmpeg command
11
+ * Execute ffmpeg command with detailed output and robust error handling
12
12
  */
13
- export declare function runFFmpeg(args: string[], verbose?: boolean, onOutput?: (line: string) => void): Promise<void>;
13
+ export declare function runFFmpeg(args: string[], verbose?: boolean, onOutput?: (line: string, styledLine?: string) => void): Promise<void>;
14
14
  /**
15
- * Get audio metadata using ffprobe
15
+ * Get audio metadata using ffprobe with detailed output and error reporting
16
16
  */
17
17
  export declare function getAudioMetadata(input: string): Promise<AudioMetadata>;
18
18
  /**
19
- * Check if ffmpeg and ffprobe are available
19
+ * Check if ffmpeg and ffprobe are available, with styled output
20
+ * If strict=true, both must be present. If strict=false, only ffmpeg is checked.
20
21
  */
21
- export declare function checkFFmpeg(): Promise<boolean>;
22
+ export declare function checkFFmpeg(strict?: boolean): Promise<boolean>;
22
23
  /**
23
- * Format file size to human-readable string
24
+ * Format file size to human-readable string (styled)
24
25
  */
25
26
  export declare function formatFileSize(bytes: number): string;
26
27
  /**
27
- * Format duration to HH:MM:SS
28
+ * Format duration to HH:MM:SS (styled)
28
29
  */
29
30
  export declare function formatDuration(seconds: number): string;
30
31
  /**
@@ -32,7 +33,7 @@ export declare function formatDuration(seconds: number): string;
32
33
  */
33
34
  export declare function parseTime(time: string): number;
34
35
  /**
35
- * Format bitrate to human-readable string
36
+ * Format bitrate to human-readable string (styled)
36
37
  */
37
38
  export declare function formatBitrate(bitrate: number): string;
38
39
  //# sourceMappingURL=ffmpeg.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ffmpeg.d.ts","sourceRoot":"","sources":["../../src/utils/ffmpeg.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,UAAQ,EACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAsD5E;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAUpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMtD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAa9C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIrD"}
1
+ {"version":3,"file":"ffmpeg.d.ts","sourceRoot":"","sources":["../../src/utils/ffmpeg.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,UAAQ,EACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,GACrD,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA6D5E;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,MAAM,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBlE;AAcD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKtD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAW9C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIrD"}
@@ -1,48 +1,82 @@
1
1
  import { spawn } from 'child_process';
2
+ import { shouldDisplayLine, logFFmpegOutput } from './ffmpegLogger.js';
3
+ import { styleFFmpegOutput } from './ffmpeg-output.js';
4
+ // FFmpeg install guidance links (all platforms)
5
+ const FFMPEG_GUIDES = [
6
+ { label: 'Official guide', url: 'https://ffmpeg.org/download.html' },
7
+ { label: 'Community guide', url: 'https://github.com/adaptlearning/adapt_authoring/wiki/Installing-FFmpeg' },
8
+ { label: 'Multi-platform guide', url: 'https://github.com/ffmpegwasm/ffmpeg.wasm/blob/main/docs/install.md' },
9
+ ];
10
+ function printFFmpegInstallGuidance() {
11
+ const lines = [
12
+ '✗ FFmpeg or ffprobe not found on your system.',
13
+ 'Please install FFmpeg and ffprobe to use audio features.',
14
+ ...FFMPEG_GUIDES.map(g => `${g.label}: ${g.url}`),
15
+ 'After installation, ensure ffmpeg and ffprobe are available in your PATH.'
16
+ ];
17
+ lines.forEach(line => console.error(styleFFmpegOutput(line)));
18
+ }
2
19
  /**
3
- * Execute ffmpeg command
20
+ * Execute ffmpeg command with detailed output and robust error handling
4
21
  */
5
22
  export async function runFFmpeg(args, verbose = false, onOutput) {
23
+ if (!(await ensureFFmpegAvailable()))
24
+ return;
6
25
  return new Promise((resolve, reject) => {
7
26
  const ffmpeg = spawn('ffmpeg', args);
8
27
  let stderr = '';
28
+ let allOutput = '';
9
29
  ffmpeg.stderr.on('data', (data) => {
10
30
  const output = data.toString();
11
31
  stderr += output;
12
- if (onOutput) {
13
- output.split('\n').forEach((line) => {
14
- if (line.trim()) {
15
- onOutput(line);
32
+ allOutput += output;
33
+ output.split('\n').forEach((line) => {
34
+ if (shouldDisplayLine(line) || verbose) {
35
+ const styled = styleFFmpegOutput(line);
36
+ logFFmpegOutput(line);
37
+ if (onOutput) {
38
+ onOutput(line, styled);
16
39
  }
17
- });
18
- }
19
- else if (verbose) {
20
- process.stderr.write(data);
21
- }
40
+ else {
41
+ if (styled)
42
+ console.log(styled);
43
+ }
44
+ }
45
+ });
22
46
  });
23
47
  ffmpeg.on('close', (code) => {
24
48
  if (code === 0) {
49
+ console.log(styleFFmpegOutput('FFmpeg finished successfully.'));
25
50
  resolve();
26
51
  }
27
52
  else {
53
+ stderr.split('\n').forEach((line) => {
54
+ if (shouldDisplayLine(line)) {
55
+ logFFmpegOutput(line);
56
+ const styled = styleFFmpegOutput(line);
57
+ if (styled)
58
+ console.error(styled);
59
+ }
60
+ });
28
61
  reject(new Error(`FFmpeg failed with code ${code}\n${stderr}`));
29
62
  }
30
63
  });
31
64
  ffmpeg.on('error', (error) => {
65
+ console.error(styleFFmpegOutput(`Failed to start ffmpeg: ${error.message}`));
32
66
  reject(new Error(`Failed to start ffmpeg: ${error.message}`));
33
67
  });
34
68
  });
35
69
  }
36
70
  /**
37
- * Get audio metadata using ffprobe
71
+ * Get audio metadata using ffprobe with detailed output and error reporting
38
72
  */
39
73
  export async function getAudioMetadata(input) {
74
+ if (!(await ensureFFmpegAvailable()))
75
+ return Promise.reject(new Error('FFmpeg/ffprobe not installed'));
40
76
  return new Promise((resolve, reject) => {
41
77
  const ffprobe = spawn('ffprobe', [
42
- '-v',
43
- 'quiet',
44
- '-print_format',
45
- 'json',
78
+ '-v', 'quiet',
79
+ '-print_format', 'json',
46
80
  '-show_format',
47
81
  '-show_streams',
48
82
  input,
@@ -53,10 +87,20 @@ export async function getAudioMetadata(input) {
53
87
  stdout += data.toString();
54
88
  });
55
89
  ffprobe.stderr.on('data', (data) => {
56
- stderr += data.toString();
90
+ const output = data.toString();
91
+ stderr += output;
92
+ output.split('\n').forEach((line) => {
93
+ if (shouldDisplayLine(line)) {
94
+ logFFmpegOutput(line);
95
+ const styled = styleFFmpegOutput(line);
96
+ if (styled)
97
+ console.error(styled);
98
+ }
99
+ });
57
100
  });
58
101
  ffprobe.on('close', (code) => {
59
102
  if (code !== 0) {
103
+ console.error(styleFFmpegOutput(`ffprobe failed with code ${code}`));
60
104
  reject(new Error(`ffprobe failed: ${stderr}`));
61
105
  return;
62
106
  }
@@ -64,6 +108,7 @@ export async function getAudioMetadata(input) {
64
108
  const data = JSON.parse(stdout);
65
109
  const audioStream = data.streams.find((s) => s.codec_type === 'audio');
66
110
  if (!audioStream) {
111
+ console.error(styleFFmpegOutput('No audio stream found in file.'));
67
112
  reject(new Error('No audio stream found'));
68
113
  return;
69
114
  }
@@ -76,30 +121,64 @@ export async function getAudioMetadata(input) {
76
121
  format: data.format.format_name || 'unknown',
77
122
  channelLayout: audioStream.channel_layout,
78
123
  };
124
+ // Detailed output of metadata
125
+ console.log(styleFFmpegOutput('Audio Metadata:'));
126
+ Object.entries(metadata).forEach(([key, value]) => {
127
+ console.log(styleFFmpegOutput(` ${key}: ${value}`));
128
+ });
79
129
  resolve(metadata);
80
130
  }
81
131
  catch (error) {
132
+ console.error(styleFFmpegOutput(`Failed to parse ffprobe output: ${error.message}`));
82
133
  reject(new Error(`Failed to parse ffprobe output: ${error.message}`));
83
134
  }
84
135
  });
85
136
  });
86
137
  }
87
138
  /**
88
- * Check if ffmpeg and ffprobe are available
139
+ * Check if ffmpeg and ffprobe are available, with styled output
140
+ * If strict=true, both must be present. If strict=false, only ffmpeg is checked.
89
141
  */
90
- export async function checkFFmpeg() {
91
- return new Promise((resolve) => {
92
- const ffmpeg = spawn('ffmpeg', ['-version']);
93
- ffmpeg.on('close', (code) => {
94
- resolve(code === 0);
95
- });
96
- ffmpeg.on('error', () => {
142
+ export async function checkFFmpeg(strict = false) {
143
+ // Check ffmpeg
144
+ const ffmpegAvailable = await new Promise((resolve) => {
145
+ try {
146
+ const ffmpeg = spawn('ffmpeg', ['-version']);
147
+ ffmpeg.on('close', (code) => resolve(code === 0));
148
+ ffmpeg.on('error', () => resolve(false));
149
+ }
150
+ catch {
97
151
  resolve(false);
98
- });
152
+ }
153
+ });
154
+ if (!strict)
155
+ return ffmpegAvailable;
156
+ // Check ffprobe
157
+ const ffprobeAvailable = await new Promise((resolve) => {
158
+ try {
159
+ const ffprobe = spawn('ffprobe', ['-version']);
160
+ ffprobe.on('close', (code) => resolve(code === 0));
161
+ ffprobe.on('error', () => resolve(false));
162
+ }
163
+ catch {
164
+ resolve(false);
165
+ }
99
166
  });
167
+ return ffmpegAvailable && ffprobeAvailable;
168
+ }
169
+ /**
170
+ * Centralized check and guidance for ffmpeg/ffprobe availability
171
+ */
172
+ async function ensureFFmpegAvailable() {
173
+ const available = await checkFFmpeg(true);
174
+ if (!available) {
175
+ printFFmpegInstallGuidance();
176
+ return false;
177
+ }
178
+ return true;
100
179
  }
101
180
  /**
102
- * Format file size to human-readable string
181
+ * Format file size to human-readable string (styled)
103
182
  */
104
183
  export function formatFileSize(bytes) {
105
184
  if (bytes === 0)
@@ -110,7 +189,7 @@ export function formatFileSize(bytes) {
110
189
  return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;
111
190
  }
112
191
  /**
113
- * Format duration to HH:MM:SS
192
+ * Format duration to HH:MM:SS (styled)
114
193
  */
115
194
  export function formatDuration(seconds) {
116
195
  const h = Math.floor(seconds / 3600);
@@ -135,7 +214,7 @@ export function parseTime(time) {
135
214
  return parseFloat(time);
136
215
  }
137
216
  /**
138
- * Format bitrate to human-readable string
217
+ * Format bitrate to human-readable string (styled)
139
218
  */
140
219
  export function formatBitrate(bitrate) {
141
220
  if (bitrate === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"ffmpeg.js","sourceRoot":"","sources":["../../src/utils/ffmpeg.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ffmpeg.js","sourceRoot":"","sources":["../../src/utils/ffmpeg.ts"],"names":[],"mappings":"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"}
@@ -2,15 +2,11 @@
2
2
  * FFmpeg Output Logger - Styled output for better readability
3
3
  */
4
4
  /**
5
- * Check if a line should be displayed based on content
5
+ * Check if a line should be displayed based on content (no styling)
6
6
  */
7
7
  export declare function shouldDisplayLine(line: string): boolean;
8
8
  /**
9
- * Style FFmpeg output line with appropriate colors and formatting
9
+ * Log FFmpeg output (plain, no styling)
10
10
  */
11
- export declare function styleFFmpegOutput(line: string): string;
12
- /**
13
- * Log FFmpeg output with styling
14
- */
15
- export declare function logFFmpegOutput(output: string): void;
11
+ export declare function logFFmpegOutput(output: string, verbose?: boolean): void;
16
12
  //# sourceMappingURL=ffmpegLogger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ffmpegLogger.d.ts","sourceRoot":"","sources":["../../src/utils/ffmpegLogger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgBvD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmCtD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAQpD"}
1
+ {"version":3,"file":"ffmpegLogger.d.ts","sourceRoot":"","sources":["../../src/utils/ffmpegLogger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWvD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,IAAI,CAOrE"}
@@ -1,65 +1,33 @@
1
1
  /**
2
2
  * FFmpeg Output Logger - Styled output for better readability
3
3
  */
4
- import chalk from 'chalk';
5
4
  /**
6
- * Check if a line should be displayed based on content
5
+ * Check if a line should be displayed based on content (no styling)
7
6
  */
8
7
  export function shouldDisplayLine(line) {
9
8
  const trimmed = line.trim();
10
- // Skip empty lines
11
9
  if (!trimmed)
12
10
  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);
11
+ // Always show errors and warnings
12
+ if (trimmed.toLowerCase().includes('error') || trimmed.toLowerCase().includes('failed') || trimmed.toLowerCase().includes('warning'))
13
+ return true;
14
+ // Show progress and status lines always
15
+ if (trimmed.match(/frame=|fps=|time=|speed=/))
16
+ return true;
17
+ // Show input/output info
18
+ if (trimmed.startsWith('Input #') || trimmed.startsWith('Output #'))
19
+ return true;
20
+ // Show other lines if verbose (handled in command code)
21
+ return false;
54
22
  }
55
23
  /**
56
- * Log FFmpeg output with styling
24
+ * Log FFmpeg output (plain, no styling)
57
25
  */
58
- export function logFFmpegOutput(output) {
26
+ export function logFFmpegOutput(output, verbose = false) {
59
27
  const lines = output.split('\n');
60
28
  for (const line of lines) {
61
- if (shouldDisplayLine(line)) {
62
- console.log(styleFFmpegOutput(line));
29
+ if (shouldDisplayLine(line) || verbose) {
30
+ console.log(line);
63
31
  }
64
32
  }
65
33
  }
@@ -1 +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"}
1
+ {"version":3,"file":"ffmpegLogger.js","sourceRoot":"","sources":["../../src/utils/ffmpegLogger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,kCAAkC;IAClC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAClJ,wCAAwC;IACxC,IAAI,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,yBAAyB;IACzB,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACjF,wDAAwD;IACxD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,OAAO,GAAG,KAAK;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,13 +1,10 @@
1
1
  {
2
2
  "name": "@mediaproc/audio",
3
- "version": "1.1.1",
3
+ "version": "1.3.0",
4
4
  "description": "Audio processing plugin for mediaproc - powered by FFmpeg",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
- "bin": {
9
- "mediaproc-audio": "./bin/cli.js"
10
- },
11
8
  "exports": {
12
9
  ".": {
13
10
  "types": "./dist/index.d.ts",
@@ -15,8 +12,7 @@
15
12
  }
16
13
  },
17
14
  "files": [
18
- "dist",
19
- "bin"
15
+ "dist"
20
16
  ],
21
17
  "keywords": [
22
18
  "mediaproc",
@@ -28,7 +24,7 @@
28
24
  "author": "Sharique Chaudhary",
29
25
  "license": "ISC",
30
26
  "engines": {
31
- "node": ">=18.0.0"
27
+ "node": ">=22.0.0"
32
28
  },
33
29
  "scripts": {
34
30
  "build": "tsc",
@@ -37,7 +33,7 @@
37
33
  "clean": "rm -rf dist"
38
34
  },
39
35
  "dependencies": {
40
- "@mediaproc/core": "1.0.0",
36
+ "@mediaproc/core": "^1.2.2",
41
37
  "chalk": "^5.3.0",
42
38
  "commander": "^14.0.2",
43
39
  "ora": "^9.0.0"
package/bin/cli.js DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env node
2
- import('../dist/cli.js').catch((error) => {
3
- console.error('Fatal error:', error);
4
- process.exit(1);
5
- });