使用FFmpeg在视频中途更改音量?

时间:2019-04-10 13:47:22

标签: javascript audio video ffmpeg fluent-ffmpeg

我正在尝试在应用程序中使用fluent-ffmpeg NPM模块来减小视频前半部分的音频音量,然后在达到中点时增大音量。我已经编写了这段代码来尝试做到这一点:

const ffmpeg = require("fluent-ffmpeg");

ffmpeg("test.mp4")
 .audioFilters("volume=enable='between(t,0,t/2)':volume='0.25'", "volume=enable='between(t,t/2,t)':volume='1'")
 .save("output.mp4");

但是,每当我运行此代码时,output.mp4的音量级别与test.mp4完全相同。我该怎么办?

1 个答案:

答案 0 :(得分:0)

借助Gyan的评论,我能够使用ffprobe和JS模板文字将我想要的效果放在一起。这是固定代码(使用fluent-ffmpeg表示法):

const ffmpeg = require("fluent-ffmpeg");

ffmpeg.ffprobe("test.mp4", (error, metadata) => {
  ffmpeg("test.mp4").audioFilters({
    filter: "volume",
    options: {
      enable: `between(t,0,${metadata.format.duration}/2)`,
      volume: "0.25"
    }
  }, {
    filter: "volume",
    options: {
      enable: `between(t,${metadata.format.duration}/2, ${metadata.format.duration})`,
      volume: "1"
    }
  }).save("output.mp4");
});