如何在fluent ffmpeg中在转码过程中异步检查视频文件大小



在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

相关内容

  • 没有找到相关文章

最新更新