Fancy-Encoder/backend.js

55 lines
1.4 KiB
JavaScript
Raw Normal View History

2021-03-23 20:06:36 +00:00
const electron = require("electron");
const Process = require('child_process');
const { stderr, stdout } = require("process");
const { randomInt } = require("crypto");
const {
app,
BrowserWindow,
ipcMain
} = electron;
let mainWindow;
let encodeStream;
function createWindow() {
mainWindow = new BrowserWindow({
transparent:true,
frame: false,
fullscreenable:false,
webPreferences: {
nodeIntegration: true,
contextIsolation:false,
enableRemoteModule: true
}
});
mainWindow.loadURL(`${__dirname}/Website/index.html`);
//mainWindow.removeMenu(); ///REMOVE LATER!!!!
mainWindow.setOpacity(0.97);
}
function encodeToWebM(path){
let id = randomInt(0, 100000);
let filename = `output${id}.webm`;
encodeStream = Process.spawn("ffmpeg/bin/ffmpeg.exe", ["-i", path, filename]);
return(filename);
}
app.on('ready', createWindow);
ipcMain.on("video:submit", (event, path) => {
let filename = encodeToWebM(path);
encodeStream.stdout.on("data", (data) => {
console.log(`stdout data: ${data} \n`)
mainWindow.webContents.send("video:processing", data)
})
encodeStream.on("close", (code) =>{
mainWindow.webContents.send("video:decode-finish", filename);
})
encodeStream.on("error", (err) =>{
console.log("fail")
})
});