@mediaproc/audio 1.1.1 → 1.2.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 +19 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/convert.d.ts.map +1 -1
- package/dist/commands/convert.js +31 -29
- package/dist/commands/convert.js.map +1 -1
- package/dist/commands/extract.d.ts.map +1 -1
- package/dist/commands/extract.js +57 -34
- package/dist/commands/extract.js.map +1 -1
- package/dist/commands/merge.d.ts.map +1 -1
- package/dist/commands/merge.js +100 -39
- package/dist/commands/merge.js.map +1 -1
- package/dist/commands/normalize.d.ts.map +1 -1
- package/dist/commands/normalize.js +92 -34
- package/dist/commands/normalize.js.map +1 -1
- package/dist/commands/trim.d.ts.map +1 -1
- package/dist/commands/trim.js +27 -22
- 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 +16 -1
- package/dist/register.js.map +1 -1
- package/dist/types.d.ts +30 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/ffmpeg-output.d.ts +6 -2
- package/dist/utils/ffmpeg-output.d.ts.map +1 -1
- package/dist/utils/ffmpeg-output.js +51 -59
- package/dist/utils/ffmpeg-output.js.map +1 -1
- package/dist/utils/ffmpeg.d.ts +9 -8
- package/dist/utils/ffmpeg.d.ts.map +1 -1
- package/dist/utils/ffmpeg.js +107 -28
- package/dist/utils/ffmpeg.js.map +1 -1
- package/dist/utils/ffmpegLogger.d.ts +3 -7
- package/dist/utils/ffmpegLogger.d.ts.map +1 -1
- package/dist/utils/ffmpegLogger.js +16 -48
- package/dist/utils/ffmpegLogger.js.map +1 -1
- package/package.json +4 -8
- package/bin/cli.js +0 -5
package/dist/cli.js
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
|
-
import {
|
|
3
|
+
import { explainPreActionHook, showPluginBranding } from '@mediaproc/core';
|
|
4
|
+
import { trimCommand } from './commands/trim.js';
|
|
5
|
+
import { convertCommand } from './commands/convert.js';
|
|
6
|
+
import { mergeCommand } from './commands/merge.js';
|
|
7
|
+
import { normalizeCommand } from './commands/normalize.js';
|
|
8
|
+
import { extractCommand } from './commands/extract.js';
|
|
9
|
+
import { version } from './register.js';
|
|
4
10
|
const program = new Command();
|
|
5
11
|
program
|
|
6
12
|
.name('mediaproc-audio')
|
|
7
13
|
.description(`
|
|
8
|
-
🎵 Audio Processing Plugin
|
|
14
|
+
🎵 Audio Processing Plugin
|
|
9
15
|
|
|
10
16
|
Professional audio processing powered by FFmpeg/FFprobe. Convert, normalize, trim, merge, and extract audio with 5 powerful commands.
|
|
11
17
|
|
|
@@ -93,8 +99,17 @@ Professional audio processing powered by FFmpeg/FFprobe. Convert, normalize, tri
|
|
|
93
99
|
📚 Detailed Help:
|
|
94
100
|
Use 'mediaproc-audio <command> --help' for comprehensive documentation on each command.
|
|
95
101
|
`)
|
|
96
|
-
.version(
|
|
97
|
-
|
|
102
|
+
.version(version);
|
|
103
|
+
// Register trim command directly (no "audio" prefix in standalone mode)
|
|
104
|
+
convertCommand(program);
|
|
105
|
+
extractCommand(program);
|
|
106
|
+
mergeCommand(program);
|
|
107
|
+
normalizeCommand(program);
|
|
108
|
+
trimCommand(program);
|
|
109
|
+
program.hook('preAction', explainPreActionHook);
|
|
110
|
+
program.hook('postAction', () => {
|
|
111
|
+
showPluginBranding('Audio');
|
|
112
|
+
});
|
|
98
113
|
program.parse(process.argv);
|
|
99
114
|
if (!process.argv.slice(2).length) {
|
|
100
115
|
program.outputHelp();
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,iBAAiB,CAAC;KACvB,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwFZ,CAAC;KACD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,wEAAwE;AACxE,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,WAAW,CAAC,OAAO,CAAC,CAAC;AAErB,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;AAChD,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;IAC9B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AACH,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/commands/convert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/commands/convert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CA0MtD"}
|
package/dist/commands/convert.js
CHANGED
|
@@ -2,7 +2,7 @@ import chalk from 'chalk';
|
|
|
2
2
|
import { stat } from 'fs/promises';
|
|
3
3
|
import { runFFmpeg, getAudioMetadata, checkFFmpeg, formatFileSize, formatDuration } from '../utils/ffmpeg.js';
|
|
4
4
|
import { styleFFmpegOutput, shouldDisplayLine } from '../utils/ffmpeg-output.js';
|
|
5
|
-
import {
|
|
5
|
+
import { validatePaths, resolveOutputPaths, createStandardHelp, AUDIO_EXTENSIONS } from '@mediaproc/core';
|
|
6
6
|
import ora from 'ora';
|
|
7
7
|
export function convertCommand(audioCmd) {
|
|
8
8
|
audioCmd
|
|
@@ -23,7 +23,7 @@ export function convertCommand(audioCmd) {
|
|
|
23
23
|
.option('--metadata <key=value>', 'Set custom metadata (repeatable)', (val, acc = []) => { acc.push(val); return acc; }, [])
|
|
24
24
|
.option('--force', 'Overwrite output files without prompt')
|
|
25
25
|
.option('--dry-run', 'Preview command without executing')
|
|
26
|
-
.option('--explain', '
|
|
26
|
+
.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.')
|
|
27
27
|
.option('-v, --verbose', 'Show detailed FFmpeg output')
|
|
28
28
|
.option('-h, --help', 'Display help for convert command')
|
|
29
29
|
.action(async (input, options) => {
|
|
@@ -53,7 +53,7 @@ export function convertCommand(audioCmd) {
|
|
|
53
53
|
{ flag: '--metadata <key=value>', description: 'Set custom metadata (repeatable)' },
|
|
54
54
|
{ flag: '--force', description: 'Overwrite output files without prompt' },
|
|
55
55
|
{ flag: '--dry-run', description: 'Preview FFmpeg command without executing' },
|
|
56
|
-
{ flag: '--explain', description: '
|
|
56
|
+
{ 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.' },
|
|
57
57
|
{ flag: '-v, --verbose', description: 'Show detailed FFmpeg output and progress' }
|
|
58
58
|
],
|
|
59
59
|
examples: [
|
|
@@ -74,12 +74,16 @@ export function convertCommand(audioCmd) {
|
|
|
74
74
|
console.error(chalk.red('\n✗ FFmpeg not found. Please install FFmpeg first.'));
|
|
75
75
|
process.exit(1);
|
|
76
76
|
}
|
|
77
|
-
//
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
// Use pathValidator for all input/output logic
|
|
78
|
+
const { inputFiles, outputPath, errors } = validatePaths(input, options.output, { allowedExtensions: AUDIO_EXTENSIONS });
|
|
79
|
+
if (errors.length > 0) {
|
|
80
|
+
errors.forEach(e => console.error(chalk.red(e)));
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
const outputFormat = options.format || 'mp3';
|
|
84
|
+
const outputPathsMap = resolveOutputPaths(inputFiles, outputPath, {
|
|
81
85
|
suffix: '-converted',
|
|
82
|
-
newExtension: `.${
|
|
86
|
+
newExtension: `.${outputFormat}`
|
|
83
87
|
});
|
|
84
88
|
const outputPaths = Array.from(outputPathsMap.values());
|
|
85
89
|
// Quality presets
|
|
@@ -89,10 +93,10 @@ export function convertCommand(audioCmd) {
|
|
|
89
93
|
high: '320k',
|
|
90
94
|
lossless: 'lossless'
|
|
91
95
|
};
|
|
92
|
-
const targetBitrate = qualityMap[options.quality] || options.bitrate;
|
|
96
|
+
const targetBitrate = (options.quality && qualityMap[options.quality]) || options.bitrate || '192k';
|
|
93
97
|
// Process each file
|
|
94
|
-
for (let i = 0; i <
|
|
95
|
-
const inputFile =
|
|
98
|
+
for (let i = 0; i < inputFiles.length; i++) {
|
|
99
|
+
const inputFile = inputFiles[i];
|
|
96
100
|
const outputFile = outputPaths[i];
|
|
97
101
|
console.log(chalk.blue(`\n🔄 Converting: ${inputFile}`));
|
|
98
102
|
// Get metadata
|
|
@@ -115,15 +119,18 @@ export function convertCommand(audioCmd) {
|
|
|
115
119
|
}
|
|
116
120
|
// Codec selection
|
|
117
121
|
const codecMap = {
|
|
118
|
-
mp3: 'libmp3lame',
|
|
119
|
-
aac: 'aac',
|
|
120
|
-
m4a: 'aac',
|
|
121
|
-
flac: 'flac',
|
|
122
|
-
wav: 'pcm_s16le',
|
|
123
|
-
ogg: 'libvorbis',
|
|
124
|
-
opus: 'libopus',
|
|
122
|
+
mp3: 'libmp3lame', // MP3 encoder
|
|
123
|
+
aac: 'aac', // Native AAC encoder
|
|
124
|
+
m4a: 'aac', // M4A is a container, usually AAC inside
|
|
125
|
+
flac: 'flac', // FLAC lossless codec
|
|
126
|
+
wav: 'pcm_s16le', // Standard uncompressed WAV PCM
|
|
127
|
+
ogg: 'libvorbis', // OGG is a container, Vorbis is most common
|
|
128
|
+
opus: 'libopus', // Opus codec (often in .opus or .ogg)
|
|
129
|
+
wma: 'wmav2', // Windows Media Audio v2
|
|
130
|
+
ape: 'ape', // Monkey’s Audio (lossless)
|
|
131
|
+
alac: 'alac'
|
|
125
132
|
};
|
|
126
|
-
const codec = options.codec || codecMap[options.format];
|
|
133
|
+
const codec = options.codec || (options.format && codecMap[options.format]);
|
|
127
134
|
if (codec)
|
|
128
135
|
args.push('-c:a', codec);
|
|
129
136
|
if (targetBitrate !== 'lossless')
|
|
@@ -159,18 +166,14 @@ export function convertCommand(audioCmd) {
|
|
|
159
166
|
if (options.dryRun) {
|
|
160
167
|
console.log(chalk.yellow('\n[DRY RUN] Would execute:'));
|
|
161
168
|
console.log(chalk.dim(`ffmpeg ${args.join(' ')}`));
|
|
162
|
-
showPluginBranding('Audio', require.resolve('../../package.json'));
|
|
163
169
|
continue;
|
|
164
170
|
}
|
|
165
|
-
|
|
166
|
-
// console.log(chalk.gray('Explain mode is not yet available.'))
|
|
167
|
-
// console.log(chalk.cyan('Planned for v0.8.x.'))
|
|
168
|
-
// }
|
|
171
|
+
;
|
|
169
172
|
// Execute conversion
|
|
170
173
|
const spinner = ora('Converting...').start();
|
|
171
174
|
try {
|
|
172
|
-
await runFFmpeg(args, options.verbose, (line) => {
|
|
173
|
-
if (shouldDisplayLine(line, options.verbose)) {
|
|
175
|
+
await runFFmpeg(args, options.verbose ?? false, (line) => {
|
|
176
|
+
if (shouldDisplayLine(line, options.verbose ?? false)) {
|
|
174
177
|
console.log(styleFFmpegOutput(line));
|
|
175
178
|
}
|
|
176
179
|
});
|
|
@@ -184,10 +187,9 @@ export function convertCommand(audioCmd) {
|
|
|
184
187
|
throw error;
|
|
185
188
|
}
|
|
186
189
|
}
|
|
187
|
-
if (
|
|
188
|
-
console.log(chalk.green(`\n✓ Converted ${
|
|
190
|
+
if (inputFiles.length > 1) {
|
|
191
|
+
console.log(chalk.green(`\n✓ Converted ${inputFiles.length} files successfully`));
|
|
189
192
|
}
|
|
190
|
-
showPluginBranding('Audio', require.resolve('../../package.json'));
|
|
191
193
|
}
|
|
192
194
|
catch (error) {
|
|
193
195
|
console.error(chalk.red(`\n✗ Error: ${error.message}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/commands/convert.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC9G,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/commands/convert.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;
|
|
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,CA0NtD"}
|
package/dist/commands/extract.js
CHANGED
|
@@ -2,7 +2,7 @@ import chalk from 'chalk';
|
|
|
2
2
|
import { stat } from 'fs/promises';
|
|
3
3
|
import { runFFmpeg, getAudioMetadata, checkFFmpeg, formatFileSize, formatDuration, } from '../utils/ffmpeg.js';
|
|
4
4
|
import { styleFFmpegOutput, shouldDisplayLine } from '../utils/ffmpeg-output.js';
|
|
5
|
-
import { AUDIO_EXTENSIONS,
|
|
5
|
+
import { AUDIO_EXTENSIONS, validatePaths, resolveOutputPaths, createStandardHelp } from '@mediaproc/core';
|
|
6
6
|
import ora from 'ora';
|
|
7
7
|
export function extractCommand(audioCmd) {
|
|
8
8
|
audioCmd
|
|
@@ -13,7 +13,7 @@ export function extractCommand(audioCmd) {
|
|
|
13
13
|
.option('-b, --bitrate <bitrate>', 'Audio bitrate (e.g., 128k, 192k, 320k)', '192k')
|
|
14
14
|
.option('-q, --quality <quality>', 'Quality preset: low, medium, high, lossless', 'medium')
|
|
15
15
|
.option('--sample-rate <rate>', 'Sample rate in Hz (e.g., 44100, 48000)', parseInt)
|
|
16
|
-
.option('--channels <channels>', 'Number of channels: 1 (mono), 2 (stereo)', parseInt)
|
|
16
|
+
.option('--channels <channels>', 'Number of channels in output. Most formats: 1 (mono), 2 (stereo). For WAV/FLAC/AAC/Opus: 1, 2, 4, 6, 8 (if input supports). MP3/OGG: max 2. If unsupported, will downmix to stereo.', parseInt)
|
|
17
17
|
.option('--normalize', 'Normalize audio levels (EBU R128 loudness normalization)')
|
|
18
18
|
.option('--volume <db>', 'Adjust output volume in dB (e.g., -3 for -3dB)')
|
|
19
19
|
.option('--fade-in <seconds>', 'Add fade-in effect (seconds)', parseFloat)
|
|
@@ -23,7 +23,7 @@ export function extractCommand(audioCmd) {
|
|
|
23
23
|
.option('--force', 'Overwrite output files without prompt')
|
|
24
24
|
.option('--dry-run', 'Preview command without executing')
|
|
25
25
|
.option('-v, --verbose', 'Show detailed FFmpeg output')
|
|
26
|
-
.option('--explain', '
|
|
26
|
+
.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.')
|
|
27
27
|
.option('-h, --help', 'Display help for extract command')
|
|
28
28
|
.action(async (input, options) => {
|
|
29
29
|
if (options.help || !input) {
|
|
@@ -42,7 +42,7 @@ export function extractCommand(audioCmd) {
|
|
|
42
42
|
{ flag: '-b, --bitrate <bitrate>', description: 'Audio bitrate: 128k, 192k, 256k, 320k (default: 192k)' },
|
|
43
43
|
{ flag: '-q, --quality <quality>', description: 'Quality preset: low (96k), medium (192k), high (320k), lossless' },
|
|
44
44
|
{ flag: '--sample-rate <rate>', description: 'Sample rate: 44100 (CD), 48000 (studio), 96000 (Hi-Res)' },
|
|
45
|
-
{ flag: '--channels <channels>', description: '
|
|
45
|
+
{ flag: '--channels <channels>', description: 'Number of channels in output. Most formats: 1 (mono), 2 (stereo). For WAV/FLAC/AAC/Opus: 1, 2, 4, 6, 8 (if input supports). MP3/OGG: max 2. If unsupported, will downmix to stereo.' },
|
|
46
46
|
{ flag: '--normalize', description: 'Normalize audio levels (EBU R128 loudness normalization)' },
|
|
47
47
|
{ flag: '--volume <db>', description: 'Adjust output volume in dB (e.g., -3 for -3dB)' },
|
|
48
48
|
{ flag: '--fade-in <seconds>', description: 'Add fade-in effect (seconds)' },
|
|
@@ -51,7 +51,7 @@ export function extractCommand(audioCmd) {
|
|
|
51
51
|
{ flag: '--metadata <key=value>', description: 'Set custom metadata (repeatable)' },
|
|
52
52
|
{ flag: '--force', description: 'Overwrite output files without prompt' },
|
|
53
53
|
{ flag: '--dry-run', description: 'Preview FFmpeg command without executing' },
|
|
54
|
-
{ flag: '--explain', description: '
|
|
54
|
+
{ 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.' },
|
|
55
55
|
{ flag: '-v, --verbose', description: 'Show detailed FFmpeg output and progress' }
|
|
56
56
|
],
|
|
57
57
|
examples: [
|
|
@@ -70,12 +70,15 @@ export function extractCommand(audioCmd) {
|
|
|
70
70
|
console.error(chalk.red('\n✗ FFmpeg not found. Please install FFmpeg first.'));
|
|
71
71
|
process.exit(1);
|
|
72
72
|
}
|
|
73
|
-
//
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
// Use pathValidator for all input/output logic
|
|
74
|
+
const { inputFiles, outputPath, errors } = validatePaths(input, options.output, { allowedExtensions: AUDIO_EXTENSIONS });
|
|
75
|
+
if (errors.length > 0) {
|
|
76
|
+
errors.forEach(e => console.error(chalk.red(e)));
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
const outputPathsMap = resolveOutputPaths(inputFiles, outputPath, {
|
|
77
80
|
suffix: '-audio',
|
|
78
|
-
newExtension: `.${options.format}`
|
|
81
|
+
newExtension: `.${options.format || 'mp3'}`
|
|
79
82
|
});
|
|
80
83
|
const outputPaths = Array.from(outputPathsMap.values());
|
|
81
84
|
// Quality presets
|
|
@@ -85,9 +88,9 @@ export function extractCommand(audioCmd) {
|
|
|
85
88
|
high: '320k',
|
|
86
89
|
lossless: 'lossless'
|
|
87
90
|
};
|
|
88
|
-
const targetBitrate = qualityMap[options.quality] || options.bitrate;
|
|
89
|
-
for (let i = 0; i <
|
|
90
|
-
const inputFile =
|
|
91
|
+
const targetBitrate = (options.quality && qualityMap[options.quality]) || options.bitrate || '192k';
|
|
92
|
+
for (let i = 0; i < inputFiles.length; i++) {
|
|
93
|
+
const inputFile = inputFiles[i];
|
|
91
94
|
const outputFile = outputPaths[i];
|
|
92
95
|
console.log(chalk.blue(`\n🎵 Extracting audio from: ${inputFile}`));
|
|
93
96
|
let metadata = undefined;
|
|
@@ -96,6 +99,9 @@ export function extractCommand(audioCmd) {
|
|
|
96
99
|
console.log(chalk.dim(`Duration: ${formatDuration(metadata.duration)} • ` +
|
|
97
100
|
`Codec: ${metadata.codec} • ` +
|
|
98
101
|
`Sample Rate: ${metadata.sampleRate} Hz`));
|
|
102
|
+
if (metadata.channels && metadata.channels > 2) {
|
|
103
|
+
console.warn(chalk.yellow(`⚠️ Warning: Extracting audio with ${metadata.channels} channels may be slow. Consider downmixing to stereo for faster processing.`));
|
|
104
|
+
}
|
|
99
105
|
}
|
|
100
106
|
catch (err) {
|
|
101
107
|
console.log(chalk.dim('Analyzing video file...'));
|
|
@@ -112,24 +118,46 @@ export function extractCommand(audioCmd) {
|
|
|
112
118
|
if (duration)
|
|
113
119
|
args.push('-t', duration);
|
|
114
120
|
}
|
|
115
|
-
// Codec selection
|
|
121
|
+
// Codec selection and channel handling
|
|
116
122
|
const codecMap = {
|
|
117
|
-
mp3: 'libmp3lame',
|
|
118
|
-
aac: 'aac',
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
+
mp3: 'libmp3lame', // MP3 encoder
|
|
124
|
+
aac: 'aac', // Native AAC encoder
|
|
125
|
+
m4a: 'aac', // M4A is a container, usually AAC inside
|
|
126
|
+
flac: 'flac', // FLAC lossless codec
|
|
127
|
+
wav: 'pcm_s16le', // Standard uncompressed WAV PCM
|
|
128
|
+
ogg: 'libvorbis', // OGG is a container, Vorbis is most common
|
|
129
|
+
opus: 'libopus', // Opus codec (often in .opus or .ogg)
|
|
130
|
+
wma: 'wmav2', // Windows Media Audio v2
|
|
131
|
+
ape: 'ape', // Monkey’s Audio (lossless)
|
|
132
|
+
alac: 'alac'
|
|
123
133
|
};
|
|
124
|
-
const codec = codecMap[options.format];
|
|
134
|
+
const codec = options.format && codecMap[options.format];
|
|
125
135
|
if (codec)
|
|
126
136
|
args.push('-c:a', codec);
|
|
127
137
|
if (targetBitrate !== 'lossless')
|
|
128
138
|
args.push('-b:a', targetBitrate);
|
|
129
139
|
if (options.sampleRate)
|
|
130
140
|
args.push('-ar', options.sampleRate.toString());
|
|
131
|
-
|
|
132
|
-
|
|
141
|
+
// Efficient handling for >2 channels
|
|
142
|
+
let requestedChannels = options.channels;
|
|
143
|
+
if (!requestedChannels && metadata && metadata.channels) {
|
|
144
|
+
requestedChannels = metadata.channels;
|
|
145
|
+
}
|
|
146
|
+
if (requestedChannels && requestedChannels > 2) {
|
|
147
|
+
// Only allow >2 channels for codecs that support it well
|
|
148
|
+
const multichannelCodecs = ['flac', 'wav', 'aac', 'opus'];
|
|
149
|
+
if (!options.format || !multichannelCodecs.includes(options.format)) {
|
|
150
|
+
// Warn and downmix to stereo for mp3/ogg
|
|
151
|
+
console.warn(chalk.yellow(`⚠️ Format ${options.format || 'mp3'} does not efficiently support >2 channels. Downmixing to stereo.`));
|
|
152
|
+
args.push('-ac', '2');
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
args.push('-ac', requestedChannels.toString());
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else if (requestedChannels) {
|
|
159
|
+
args.push('-ac', requestedChannels.toString());
|
|
160
|
+
}
|
|
133
161
|
// Audio filters
|
|
134
162
|
const filters = [];
|
|
135
163
|
if (options.normalize)
|
|
@@ -156,24 +184,20 @@ export function extractCommand(audioCmd) {
|
|
|
156
184
|
if (options.dryRun) {
|
|
157
185
|
console.log(chalk.yellow('\n[DRY RUN] Would execute:'));
|
|
158
186
|
console.log(chalk.dim(`ffmpeg ${args.join(' ')}`));
|
|
159
|
-
showPluginBranding('Audio', '../../package.json');
|
|
160
187
|
continue;
|
|
161
188
|
}
|
|
162
|
-
if (options.explain) {
|
|
163
|
-
console.log(chalk.gray('Explain mode is not yet available.'));
|
|
164
|
-
console.log(chalk.cyan('Planned for v0.8.x.'));
|
|
165
|
-
}
|
|
166
189
|
const spinner = ora('Extracting audio...').start();
|
|
167
190
|
try {
|
|
168
|
-
await runFFmpeg(args, options.verbose, (line) => {
|
|
169
|
-
if (shouldDisplayLine(line, options.verbose)) {
|
|
191
|
+
await runFFmpeg(args, options.verbose ?? false, (line) => {
|
|
192
|
+
if (shouldDisplayLine(line, options.verbose ?? false)) {
|
|
170
193
|
console.log(styleFFmpegOutput(line));
|
|
171
194
|
}
|
|
172
195
|
});
|
|
173
196
|
const outputStat = await stat(outputFile);
|
|
174
197
|
spinner.succeed(chalk.green('Extraction complete'));
|
|
175
198
|
console.log(chalk.green(`✓ Output: ${outputFile}`));
|
|
176
|
-
|
|
199
|
+
const fmt = options.format ? options.format.toUpperCase() : 'MP3';
|
|
200
|
+
console.log(chalk.dim(`Format: ${fmt} • ` +
|
|
177
201
|
`Bitrate: ${targetBitrate} • ` +
|
|
178
202
|
`Size: ${formatFileSize(outputStat.size)}`));
|
|
179
203
|
}
|
|
@@ -182,10 +206,9 @@ export function extractCommand(audioCmd) {
|
|
|
182
206
|
throw error;
|
|
183
207
|
}
|
|
184
208
|
}
|
|
185
|
-
if (
|
|
186
|
-
console.log(chalk.green(`\n✓ Extracted audio from ${
|
|
209
|
+
if (inputFiles.length > 1) {
|
|
210
|
+
console.log(chalk.green(`\n✓ Extracted audio from ${inputFiles.length} videos successfully`));
|
|
187
211
|
}
|
|
188
|
-
showPluginBranding('Audio', '../../package.json');
|
|
189
212
|
}
|
|
190
213
|
catch (error) {
|
|
191
214
|
console.error(chalk.red(`\n✗ Error: ${error.message}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/commands/extract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,
|
|
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;AAUzC,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAwNpD"}
|