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);})执行备选方案 1const 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);})执行备选方案 2const 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% converted15% converted20% converted100% converted...❌错误:我得到的是:100% converted//Sometimes I get an empty string because it is the last line of the .exe script在标记为重复之前,我确定在 STACKOVERFLOW 中没有一个答案适合我
1 回答
holdtom
TA贡献1805条经验 获得超10个赞
您需要将 ffmpeg 与ffmpeg-progress-wrapper一起使用。附加事件“进度”并获取“进度”属性。
process.on('progress', (progress) => console.log(JSON.stringify(progress.progress));
它从 0 到 1,因此您需要进行一些调整。
添加回答
举报
0/150
提交
取消