【问题标题】:fluent-ffmpeg How to make video rendering synchronous with code?fluent-ffmpeg 如何使视频渲染与代码同步?
【发布时间】:2020-04-05 04:31:55
【问题描述】:

我想让代码仅在 ffmpeg 完成视频渲染后运行。目前,代码运行速度快于视频渲染速度。

videos.forEach((vid, i) => {
  ffmpeg(`${process.cwd()}/video/tmp/${vid}`)
  .outputOptions(['-r 30', '-filter:v scale=w=720:h=1280', '-crf 20'])
  .save(`${process.cwd()}/video/tmp/${vid}`)
  .on('end', ()=> console.log(`Video ${i} rendered`));
});
console.log("Fully Completed");

控制台显示:

Fully Completed
Video 0 rendered
Video 1 rendered

执行应该相反。如何让代码等待视频完成渲染后再继续?

【问题讨论】:

    标签: ffmpeg async-await fluent-ffmpeg


    【解决方案1】:

    下面的代码会帮助你:

    async function processVideos(){
        let videos = [vid1.mp4, vid2.mp4, vid3.mp4];
        for(vid of videos){
            await processVideoSync(vid)
        }
    }
    function processVideoSync(vid){
        return new Promise((resolve,reject)=>{
           ffmpeg(`${process.cwd()}/video/tmp/${vid}`)
           .outputOptions(['-r 30', '-filter:v scale=w=720:h=1280', '-crf 20'])
           .save(`${process.cwd()}/video/tmp/${vid}`)
           .on('end', ()=>{
              console.log(`Video ${i} rendered`)
              return resolve()
            })
            .on('err',(err)=>{
                return reject(err)
            })
        })
    }
    

    o loop for of é o unico capaz de esperar o async await.

    【讨论】:

      猜你喜欢
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      • 2014-11-08
      • 1970-01-01
      相关资源
      最近更新 更多