Feat: more preferences (#106)
* add ffmpeg command check * may switch language * tweak
This commit is contained in:
@@ -11,22 +11,37 @@ import storage from "@main/storage";
|
||||
const logger = log.scope("ffmepg");
|
||||
export default class FfmpegWrapper {
|
||||
public ffmpeg: Ffmpeg.FfmpegCommand;
|
||||
public config: any;
|
||||
|
||||
constructor() {
|
||||
const config = settings.ffmpegConfig();
|
||||
this.config = settings.ffmpegConfig();
|
||||
|
||||
if (config.commandExists) {
|
||||
if (this.config.commandExists) {
|
||||
logger.info("Using system ffmpeg");
|
||||
this.ffmpeg = Ffmpeg();
|
||||
} else {
|
||||
logger.info("Using downloaded ffmpeg");
|
||||
const ff = Ffmpeg();
|
||||
ff.setFfmpegPath(config.ffmpegPath);
|
||||
ff.setFfprobePath(config.ffprobePath);
|
||||
ff.setFfmpegPath(this.config.ffmpegPath);
|
||||
ff.setFfprobePath(this.config.ffprobePath);
|
||||
this.ffmpeg = ff;
|
||||
}
|
||||
}
|
||||
|
||||
checkCommand() {
|
||||
return new Promise((resolve, _reject) => {
|
||||
this.ffmpeg.getAvailableFormats((err, formats) => {
|
||||
if (err) {
|
||||
logger.error("Command not valid:", err);
|
||||
resolve(false);
|
||||
} else {
|
||||
logger.info("Command valid, available formats:", formats);
|
||||
resolve(true);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
generateMetadata(input: string): Promise<Ffmpeg.FfprobeData> {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.ffmpeg
|
||||
@@ -292,9 +307,29 @@ export class FfmpegDownloader {
|
||||
logger.error(err);
|
||||
event.sender.send("on-notification", {
|
||||
type: "error",
|
||||
title: `FFmpeg download failed: ${err.message}`,
|
||||
message: `FFmpeg download failed: ${err.message}`,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
ipcMain.handle("ffmpeg-check-command", async (event) => {
|
||||
const ffmpeg = new FfmpegWrapper();
|
||||
const valid = await ffmpeg.checkCommand();
|
||||
|
||||
if (valid) {
|
||||
event.sender.send("on-notification", {
|
||||
type: "success",
|
||||
message: `FFmpeg command valid, you're ready to go.`,
|
||||
});
|
||||
} else {
|
||||
logger.error("FFmpeg command not valid", ffmpeg.config);
|
||||
event.sender.send("on-notification", {
|
||||
type: "warning",
|
||||
message: `FFmpeg command not valid, please check the log for detail.`,
|
||||
});
|
||||
}
|
||||
|
||||
return valid;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user