24 lines
646 B
TypeScript
24 lines
646 B
TypeScript
import { execSync } from "child_process";
|
|
import fs from "fs";
|
|
|
|
export function convertOggToMp3(inputPath: string, outputPath: string): boolean {
|
|
try {
|
|
execSync(
|
|
`ffmpeg -i "${inputPath}" -codec:a libmp3lame -b:a 128k -y "${outputPath}" 2>/dev/null`,
|
|
{ timeout: 15000 }
|
|
);
|
|
return true;
|
|
} catch {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
export function convertOggToMp3OrCopy(inputPath: string, mp3Path: string): string {
|
|
if (convertOggToMp3(inputPath, mp3Path)) {
|
|
return mp3Path;
|
|
}
|
|
// fallback: keep original OGG
|
|
fs.copyFileSync(inputPath, mp3Path.replace(/\.mp3$/, ".ogg"));
|
|
return mp3Path.replace(/\.mp3$/, ".ogg");
|
|
}
|