0

The .forEach() loop cuts ffmpeg short so it doesn't fully finish rendering any single video. How can I allow ffmpeg to finish rendering before the next loop occurs?

let videos = [vid1.mp4, vid2.mp4, vid3.mp4];

videos.forEach((vid, i) => {
  ffmpeg(vid)
    .size('1280x720')
    .save(vid);
}
wongz
  • 3,255
  • 2
  • 28
  • 55

1 Answers1

0

Try the code below, if you solve it, don't forget to mark it as resolved:

createVideos()

async function createVideos(){
    let videos = [vid1.mp4, vid2.mp4, vid3.mp4];
    for(vid of videos){
        await createVideoSync(vid)
    }
}
function createVideoSync(vid){
    return new Promise((resolve,reject)=>{
        ffmpeg(vid)
        .size('1280x720')
        .save('new ' + vid)
        .on('err',(err)=>{
            return reject(err)
        })
        .on('end',(fim)=>{
            return resolve()
        })
    })
}