我可能问错了问题,因为我对此没有太多经验。基本上,我有这个代码:
videoshow(images, videoOptions)
.audio('song.mp3')
.save('video.mp4')
.on('start', function (command) {
console.log('ffmpeg process started:', command)
})
.on('error', function (err, stdout, stderr) {
console.error('Error:', err)
console.error('ffmpeg stderr:', stderr)
})
.on('end', function (output) {
console.error('Video created in:', output)
})
据我所知,它是异步运行的,但即使我在它前面添加了await,我也无法让它等待。
我希望代码块停止,直到 end
完成并且图像已转换为视频。我没有看到任何例子,我不确定我做错了什么。
最佳答案
你可以将它包含在一个 promise 中:
async function run() {
return new Promise((resolve, reject) =>
videoshow(images, videoOptions)
.audio('song.mp3')
.save('video.mp4')
.on('start', function (command) {
console.log('ffmpeg process started:', command)
})
.on('error', function (err, stdout, stderr) {
console.error('Error:', err)
console.error('ffmpeg stderr:', stderr)
reject(err);
})
.on('end', function (output) {
console.error('Video created in:', output)
resolve(output);
})
)
}
(async () => {
await run();
// This is were you put your code
})();
关于javascript - 如何让基于事件发射器的代码在 NodeJS 中等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54858362/