add audio merger
This commit is contained in:
parent
56c33032d0
commit
eddb4fdaac
3 changed files with 27 additions and 6 deletions
19
src/main.ts
19
src/main.ts
|
@ -1,6 +1,7 @@
|
|||
import { FileFilter, BrowserWindow, app, dialog, ipcMain } from "electron";
|
||||
import path = require("path");
|
||||
import ffmpegPath = require("ffmpeg-static");
|
||||
import child_process = require("child_process");
|
||||
|
||||
/** Create a new window */
|
||||
const createWindow = () => {
|
||||
|
@ -31,13 +32,27 @@ const askFile = async () => {
|
|||
).filePaths;
|
||||
};
|
||||
|
||||
const getNewFilename = (ogFile: string, part: string) => {
|
||||
const oldFile = path.parse(ogFile);
|
||||
return path.join(oldFile.dir, `${part}`.concat(oldFile.base));
|
||||
};
|
||||
|
||||
/** Merge all audios track of a video into one */
|
||||
const mergeAudio = (file: string) => {
|
||||
const outFile = getNewFilename(file, "(merged audio) ");
|
||||
child_process.exec(
|
||||
`${ffmpegPath} -i "${file}" -filter_complex "[0:a]amerge=inputs=2[a]" -ac 1 -map 0:v -map "[a]" -c:v copy "${outFile}"`
|
||||
);
|
||||
};
|
||||
|
||||
app.whenReady().then(() => {
|
||||
/* Context bridge */
|
||||
ipcMain.handle("ffmpeg", () => ffmpegPath);
|
||||
ipcMain.handle("argv", () => process.argv);
|
||||
ipcMain.handle("allowedExtensions", () => moviesFilter);
|
||||
ipcMain.handle("askfile", () => askFile());
|
||||
ipcMain.handle("exit", () => app.quit());
|
||||
ipcMain.handle("askFile", () => askFile());
|
||||
ipcMain.handle("mergeAudio", (_, file: string) => mergeAudio(file));
|
||||
ipcMain.handle("exit", async () => app.quit());
|
||||
|
||||
createWindow();
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ contextBridge.exposeInMainWorld("internals", {
|
|||
ffmpeg: () => ipcRenderer.invoke("ffmpeg"),
|
||||
argv: () => ipcRenderer.invoke("argv"),
|
||||
allowedExtensions: () => ipcRenderer.invoke("allowedExtensions"),
|
||||
askFile: () => ipcRenderer.invoke("askfile"),
|
||||
askFile: () => ipcRenderer.invoke("askFile"),
|
||||
mergeAudio: (file: string) => ipcRenderer.invoke("mergeAudio", file),
|
||||
exit: () => ipcRenderer.invoke("exit"),
|
||||
});
|
||||
|
|
|
@ -7,11 +7,11 @@ let internals: {
|
|||
}>;
|
||||
askFile: () => Promise<string[]>;
|
||||
exit: () => any;
|
||||
mergeAudio: (filename: string) => Promise<void>;
|
||||
};
|
||||
|
||||
const get_file = async () => {
|
||||
const getFile = async () => {
|
||||
const allowedExtensions = (await internals.allowedExtensions()).extensions;
|
||||
console.log(allowedExtensions);
|
||||
const argv = await internals.argv();
|
||||
if (argv.length === 2) {
|
||||
const file = argv.pop();
|
||||
|
@ -27,4 +27,9 @@ const get_file = async () => {
|
|||
return file.join("");
|
||||
};
|
||||
|
||||
get_file().then((file) => (document.getElementById("info").innerText = file));
|
||||
const main = async () => {
|
||||
const file = await getFile();
|
||||
document.getElementById("info").innerText = file.concat();
|
||||
await internals.mergeAudio(file);
|
||||
};
|
||||
main();
|
||||
|
|
Loading…
Reference in a new issue