ffmpegJsCode top-level constant
String
const ffmpegJsCode
Implementation
const String ffmpegJsCode = r"""
window.convertWavToM4a = async function (
wavBytesBase64,
inputFileName = "input.wav",
callback
) {
let ffmpeg;
try {
if (!window.FFmpeg) {
throw new Error("FFmpeg not loaded");
}
// const { createFFmpeg } = FFmpeg;
if (!ffmpeg) {
ffmpeg = FFmpeg.createFFmpeg({
log: true,
});
}
if (!ffmpeg.isLoaded()) {
try {
await ffmpeg.load();
} catch (error) {
console.error("ffmpeg.load()", error);
}
}
const wavBytes = Uint8Array.from(atob(wavBytesBase64), (c) =>
c.charCodeAt(0)
);
ffmpeg.FS("writeFile", inputFileName, wavBytes);
const outputFileName = inputFileName.replace(/\.\w+$/, ".m4a");
await ffmpeg.run(
"-i",
inputFileName,
"-c:a",
"aac",
"-b:a",
"128k",
outputFileName
);
const m4aBytes = ffmpeg.FS("readFile", outputFileName);
const m4aBase64 = btoa(
Array.from(m4aBytes)
.map((b) => String.fromCharCode(b))
.join("")
);
callback(m4aBase64);
} catch (error) {
console.error("catch.load()", error);
callback(null);
}
};
""";