【发布时间】:2022-12-18 17:05:20
【问题描述】:
我正在使用 ffmpeg 从视频中提取一些帧。不幸的是,节点 js 在运行回调函数之前不会等待 ffmpeg 完成任务如何确保在运行回调之前任务已经完成?
我已经为此苦苦挣扎了几个小时,非常感谢您的帮助
function callback() {
console.log("All done!")
}
async function main()
{
try {
var process = new ffmpeg("star_wars_film_scene.mp4");
process.then(function (video) {
video.fnExtractFrameToJPG("frames/", {
every_n_frames : 1500
}), callback()
}, function (err) {
console.log('Error: ' + err);
});
} catch (e) {
console.log(e.code);
console.log(e.msg);
}
}
main()
【问题讨论】:
-
只传递
callback而不是callback()。您正在调用它,然后传递返回值。相反,您需要传递函数引用本身而不调用它。 -
@jfriend00 简单地删除括号只会导致没有任何内容被打印出来,所以我一定是做错了什么。我对编码很陌生,有点不确定我将如何实施这样的解决方案,你能不能给我一个例子,说明我如何做到这一点。谢谢您的帮助。
标签: node.js ffmpeg asynccallback