如何在 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();
Is there a way during the ffmpeg compression process to determine over various intervals the exact filesize that a video is at?
Such as a method to get current filesize during the process to use when comparing against the videos original filesize.
For example, a potential video being transcoded takes 5 minutes, but during the process, a function will check the file size on intervals of 100 frames or every 5 seconds to ensure that the filesize hasn't exceeded the original. If it has, it will kill the process with 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();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
"progress"
事件获取目标文件的当前大小:要获取原始大小,可以使用 Node 的
fs
中的标准函数图书馆,例如fs.stat
。You can use the
targetSize
property from the"progress"
event to get the current size of the target file:To get the original size, you can use the standard functions in Node's
fs
library, e.g.fs.stat
.