使用FFmpeg为高清视频添加同步的西班牙语与英语双音频轨道
使用FFmpeg为高清视频添加同步的西班牙语与英语双音频轨道
我来分享一下我解决这个「给高清视频加同步双音频」问题的思路和具体命令吧!
首先说下我的场景:
- 我有两个视频文件:
Vid_eng.mkv:高分辨率的主视频,自带英语原音Vid_esp.mkv:低分辨率的西语版,自带西班牙语配音,但它把开头的66秒内容剪掉了,直接用它的音频会和高清视频不同步
我的目标是生成一个Vid_out.mkv,既要保留高清的视频画面,又要同时包含英语、西班牙语双音频,而且西语音频必须和视频时间轴对齐。
我用的FFmpeg命令如下:
ffmpeg -i Vid_eng.mkv -f lavfi -t 66 -i anullsrc -i Vid_esp.mkv -filter_complex "[1:a][2:a]concat=n=2:v=0:a=1[outa]" -map 0 -map "[outa]" -metadata:s:a:0 language=eng -metadata:s:a:1 language=spa -disposition:a:1 default -c:v copy Vid_out.mkv
下面我拆解下这个命令的核心逻辑:
- 复用高清视频流:用
-c:v copy直接复制Vid_eng.mkv的视频流,完全不用重新编码,既保证画质又节省时间 - 补全西语音频的缺失部分:通过
anullsrc生成66秒的静音音频,再用concat滤镜把静音和西语原音频拼接在一起——这样西语音频就补上了缺失的前66秒,和高清视频的时间轴完全对齐了 - 轨道标记与设置:给两个音频轨道分别加上语言标签,方便播放器识别;同时把西语设为默认音频轨道,打开视频时会优先播放西语
- 流映射:
-map 0把高清视频的所有流(包括原本的英语音频)都带到输出文件,再加上拼接好的西语音频,最终就得到了双音频的高清视频
备注:内容来源于stack exchange,提问作者Swike
相关产品推荐
相关产品推荐

