FFmpeg在音视频处理方面的大名就不用多说了,格式工厂这些工具大多数功能都是依赖它完成的。
比如下面这个简单的命令可以实现压缩视频的功能。
ffmpeg -i input.mp4 -vf scale=480:-1 output.mp4
如何用Nodejs来启动它呢?
使用child_process来启动,下面用一段代码来解释一下。
const {
execFile,
} = require('child_process')
const command = 'ffmpeg.exe -i D:/download/951051370893549568.mp4 -vf scale=1366:-1 -progress - D:/download/out.mp4'.split(' ')
const task = execFile(command.shift(), command)
task.stdout.setEncoding('utf-8')
// 监听标准输出流的data事件
task.stdout.on('data', (data) => {
console.log(data)
})
task.on('close', (code) => {
console.log(`child process close all stdio with code ${code}`);
});
task.on('exit', (code) => {
console.log(`child process exited with code ${code}`);
});
以上代码最关键的是命令行中加了一个参数-progress -这是把进度信息从标准输出流输出,下面这一段代码才能够从data事件中源源不断地得到进度。
task.stdout.on('data', (data) => {
console.log(data)
})