我可能会问错这个问题,因为我对此没有很多经验。基本上,我有以下代码:
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
完成并将图像转换为视频之前停止代码块。我没有看到任何示例,也不确定自己做错了什么。
答案 0 :(得分:2)
您可以将其包装在诺言中:
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
})();