如何使用FFMPEG单独放大MKV视频中的ENG英语音轨音量
问题原因
你之前的两个命令失效是因为FFmpeg的默认流选择规则:多音轨输入时默认仅提取**第一条(索引为0)**音轨输出,你没主动指定要保留英语音轨的情况下,音轨索引为1的英语内容直接被丢弃了。
- 第一个命令
ffmpeg -i input.mkv -filter:a "volume=2.0" output.mkv:仅给默认保留的意大利语音轨加了音量放大,英语音轨直接没进输出文件。 - 第二个尝试的命令
ffmpeg -i input.mkv -filter:a:1 "volume=2.0" output-vol2x.mkv:虽然给索引1的英语音轨加了滤镜,但依然没指定要输出这条音轨,输出还是只有默认的意大利语音轨。
正确可用命令
场景1:仅保留放大后的英语音轨(可删除意大利语,符合你的核心需求)
ffmpeg -i input.mkv -map 0:v -map 0:a:1 -filter:a "volume=2.0" -c:v copy output.mkv
参数说明:
-map 0:v:提取输入文件的所有视频流,避免视频内容丢失-map 0:a:1:仅提取输入文件里索引为1的英语音轨(FFmpeg音轨索引从0开始计数,你的文件中0对应意大利语、1对应英语)-c:v copy:视频流直接原封不动复制,不需要重新编码,速度快且无画质损失-filter:a "volume=2.0":给输出的唯一英语音轨音量翻倍
场景2:保留两条音轨,仅放大英语音轨音量
如果后续还需要用到意大利语音轨,可以用这个命令:
ffmpeg -i input.mkv -map 0:v -map 0:a:0 -map 0:a:1 -filter:a:1 "volume=2.0" -c:v copy -c:a:0 copy output.mkv
参数说明:
- 同时保留两条音轨,输出文件默认第一条还是意大利语、第二条是放大后的英语,播放时可手动切换
- 意大利语音轨直接原封不动复制,仅给英语音轨加音量放大滤镜
额外验证技巧
如果不确定音轨索引是否正确,可以先执行ffmpeg -i input.mkv查看输入文件的流信息,找到标注ENG的Audio行对应的流索引,替换上面命令里-map 0:a:1的数字即可。
内容的提问来源于stack exchange,提问作者user227495
相关产品推荐
相关产品推荐

