在ffmpeg压缩过程中,有没有办法在不同的时间间隔内确定视频的确切文件大小?
例如,在与视频原始文件大小进行比较时,在过程中获取当前文件大小的方法。
例如,一个潜在的视频被转码需要5分钟,但在这个过程中,函数会每隔100帧或每5秒检查一次文件大小,以确保文件大小没有超过原始大小。如果有,它将用command.kill('SIGSTOP');
终止进程
const transcodeVideo = () => {
return new Promise((resolve, reject) => {
ffmpeg("./video.mp4")
.setFfprobePath(pathToFfprobe.path)
.setFfmpegPath(pathToFfmpeg)
.videoCodec("libx264")
.audioCodec("libmp3lame")
.size("720x?")
.on("error", (err) => {
console.log(err);
})
.on("end", () => {
//irrelevant resolving code in here
})
.save("./transVideo.mp4");
});
};
transcodeVideo();
您可以使用"progress"
事件中的targetSize
属性来获取目标文件的当前大小:
let command = ffmpeg
// ...
.on("progress", progress => {
if (progress.targetSize > originalSize) {
command.kill();
}
});
要获得原始大小,可以使用Node的fs
库中的标准函数,例如fs.stat
。