使用 FFmpeg 在视频中途更改音量?
Changing volume halfway through video using 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
完全相同。我该怎么办?
在 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");
});
我正在尝试在应用程序中使用 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
完全相同。我该怎么办?
在 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");
});