54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
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")
|
|
})
|
|
|
|
});
|