Ffmpeg 将图像中的视频与视频和音频剪切合并

问题描述

一个关于 fluent ffmpeg 的问题,我对它很陌生,所以需要一些帮助。

我正在尝试从 S3 获取图像和视频,以便我可以从中制作完整的视频。 所以我正在用 .loop 制作视频,其中包含来自图像的特定视频长度。 然后我添加一个带有音频的普通视频。 然后我正在削减音频长度,因此添加的音频将仅在由图像制作的视频上播放。 当与图像中的视频合并的视频开始播放时,它会有自己的音频。 问题是,如果我合并所有视频,我会收到此错误An error occurred while merging video files: ffmpeg exited with code 1: Cannot find a matching stream for unlabeled input pad 7 on filter Parsed_concat_0.

所以我需要向不是由图像制作的视频添加音频,以便流可以工作。我怎样才能避免这种情况并让该视频拥有自己的音频?我应该添加什么 inputoptions?另外,当我剪切音频时它有延迟,我可以添加哪些音频过滤器?

``

  const videosFromImages = [];
  VIDEO_CONfig.fragments.forEach((fragment) => {
    videosFromImages.push(function (callback) {
      let ffmpegInstance = ffmpeg(
        `./images/images-with-same-size/${fragment.filename}`
      );

      if (fragment.duration && fragment.type === "image") {
        ffmpegInstance.loop(fragment?.duration);
      }

      if (fragment.type === "image") {
        ffmpegInstance
          .addInput("./audio/audio.mp3")
          .inputoptions(
            "-ss",time,"-to",time + fragment.duration,"-async","1"
          );

        time = time + fragment.duration;
        console.log("time:",time);
      }

      ffmpegInstance
        .videoCodec("libx264") // Codec from api
        .videoBitrate("12000k") // Video Quality
        .videoFilters([
          {
            filter: "fade",options: "in:0:15",},]) // Transitions
        .on("error",function (err) {
          console.error("An error occurred: " + err.message);
        })
        .on("end",function () {
          res.write(`<p>Processing finished for ${fragment.filename}</p>`);
          fragment.filePath = `./output/project-${VIDEO_CONfig.projectId}/videos/video-${fragment.filename}.avi`;

          callback(null,fragment);
        })
        .save(
          `./output/project-${VIDEO_CONfig.projectId}/videos/video-${fragment.filename}.avi`
        );
    });
  });

  async.series(videosFromImages,function (err,videosFromImages) {
    // result Now equals 'done'
    async.waterfall(
      [
        (done) => {
          console.log("VIDEO_CONfig",VIDEO_CONfig.fragments);

          VIDEO_CONfig.fragments
            .reduce((prev,curr) => prev.input(curr.filePath),ffmpeg())
            .outputFPS(60)
            .on("error",(err) => {
              res.end();
              console.log(
                `An error occurred while merging video files: ${err.message}`
              );
            })
            .on("end",() => {
              res.write("FINAL VIDEO END");
              res.end();
              console.log("end:");
            })
            .mergetoFile(
              `./output/project-${VIDEO_CONfig.projectId}/final-video-${VIDEO_CONfig.projectId}.mp4`
            );
          done(null);
        },],(err) => {
        if (err) {
          console.log("err:",err);
        }
      }
    );
  });

  res.write("<p>Processing</p>");
} catch (error) {
  console.error("error:",error);
}

``

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...