ffmpeg - fluent-ffmpeg 使用复杂过滤器设置音频电平
问题描述
我希望将 2 个音频与 ffmpeg-fluent 混合,下面是用于此目的的代码。
ffmpeg()
.input(audio1)
.input(audio2)
.complexFilter([
{
filter: 'amix', options: { inputs: 2, duration: 'shortest' }
}
])
.on('end', async function (output) {
console.log(output, 'files have been merged and saved.')
})
.saveToFile("mix.mp3");
现在我还想独立设置每个轨道的音频级别,尝试将音量作为音频过滤器传递,但是当使用复杂过滤器时它似乎不接受音频过滤器。
解决方案
我知道这个帖子有几个月的历史了,但我想我仍然会回答它,因为我找到了如何去做,如果有人像我一样找到这个帖子,他们就会有答案。
const command = new FfmpegCommand();
//create audio file with voice and engine sound under.
await command
.addInput(inputFilePath)
.addInput('./audio/utility/RB16BengineOnboard.mp3').seekInput(40)
.complexFilter([{
filter: 'volume',
options: ['1.0'],
inputs: "0:0",
outputs: "[s1]"
},
{
filter: 'volume',
options: ['0.15'],
inputs: "1:0",
outputs: "[s2]"
},
{
filter: 'amix',
inputs: ["[s1]","[s2]"],
options: ['duration=first','dropout_transition=0']
}]).output('./audio/temp/overlayed.mp3').on('error', function(err) {
console.log(err);
})
.on('end', function() {
console.log('Amixed audio files together.');
})
.run();
对于输入:“0:0”第一个 0 代表第一个 addInput 文件 a,第二个 0 代表该文件的音轨。如此处所述: this thread about ffmpeg audio files
代码的其余部分是非常自我解释的,因为它是音量,输出命名该过滤器的输出,因此它可以稍后在代码中用作 amix 过滤器的输入。
推荐阅读
- reactjs - React SVG 组件:6:134 错误解析错误:意外的令牌,预期的“}”
- android - 当设备不使用 Xamarin Android 移动时,不会调用 ILocationListener.OnLocationChanged() 方法
- css - 为什么宽度为 100px 且 padding-bottom=100% 而不是 100px 的 div 的 padding-bottom
- sql - SQL Server:将变量连接成一个批量
- javascript - 读取文件名被删除
- javascript - '{ [key: string]: any; 类型的参数 }' 不可分配给“any[]”类型的参数
- sql - SQL Server:如果在一个表中插入一行,我如何编写触发器以在不同的表中插入同一行?
- spring - Websphere 8.5.5.12 - Spring Boot 不工作
- webdriver-io - 如何通过 wdio 访问子元素
- python - 我可能在流函数中遇到问题