Electron:实时获取文件转换百分比:
我想运行命令ffmpeg -i video.mp4(示例)将视频转换为另一种格式。但我想获得在流程输出中流式传输的转换百分比,并在我的 Electron App 或 NodeJS 中获取它。
我已经尝试了所有方法:spawn fork exec并且所有方法都将过程输出的最后一行返回给我。我想要一个已写入的每一行的实时流,以显示进度百分比。
我试过了:
叉
const {fork} = require('child_process')
const forked = fork('ffmpeg -i video.mp4');
forked.on('message', (msg) => {
console.log(msg);
})
执行备选方案 1
const execFile = require('child_process').execFile;
execFile('ffmpeg -i video.mp4', [], (e, stdout, stderr) => {
if (e instanceof Error){
console.error(e);
}
console.log('stdout ', stdout)
console.log('stderr ', stderr);
})
执行备选方案 2
const exec = require('child_process').exec;
exec('ffmpeg -i video.mp4', (error, stdout, stderr) => {
console.log(stdout);
});
/*EXEC Alternative 2*/
const exec = require('child_process').exec;
const proccessing = exec('ffmpeg -i video.mp4');
proccessing.stdout.on('data', function(data) {
console.log(data);
});
proccessing.stdout.pipe(process.stdout);
产卵
const spawn = require('child_process').spawn,
const processing = spawn('ffmpeg -i video.mp4');
processing .stdout.on('data', function (data) {
console.log('stdout: ' + data.toString());
});
processing .stderr.on('data', function (data) {
console.log('stderr: ' + data.toString());
});
processing .on('exit', function (code) {
console.log('code ' + code.toString());
});
概括:
🎯目标:在控制台得到这个结果
10% converted
15% converted
20% converted
100% converted...
❌错误:我得到的是:
100% converted
//Sometimes I get an empty string because it is the last line of the .exe script
在标记为重复之前,我确定在 STACKOVERFLOW 中没有一个答案适合我
holdtom
相关分类