如何用FFmpeg合并含视频、音频及字幕的多输入文件?
解决FFmpeg合并视频、音频与字幕流的问题
嘿,这个问题我碰到过好多次!你的原命令没把字幕加进去,是因为FFmpeg默认的行为是对每种媒体类型(视频、音频、字幕)只挑选一条流进行复制——它自动选了第一个输入的视频流,第二个输入的音频流,直接跳过了字幕流。
要把三条流都完整合并,你只需要用-map参数明确告诉FFmpeg要包含哪些流就行,这里有两种实用的方法:
方法1:复制所有输入流
如果想把两个输入文件里的所有流都合并进去(比如以后你的文件有多条字幕/音轨的情况也能兼容),可以用-map指定每个输入文件的所有流:
ffmpeg -y -i "video.mkv" -i "audioandsubtitles.mkv" -c copy -map 0 -map 1 ~/Downloads/output.mkv
-map 0:包含第一个输入文件(video.mkv)的所有流-map 1:包含第二个输入文件(audioandsubtitles.mkv)的所有流-c copy:保持所有流的编码格式不变,实现快速合并
方法2:精准指定需要的流
如果只想合并特定的三条流(视频、目标音频、目标字幕),可以更精准地指定流类型:
ffmpeg -y -i "video.mkv" -i "audioandsubtitles.mkv" -c copy -map 0:v -map 1:a -map 1:s ~/Downloads/output.mkv
-map 0:v:选择第一个输入的视频流-map 1:a:选择第二个输入的音频流-map 1:s:选择第二个输入的字幕流
要是你的第二个文件里有多条字幕流,还可以用-map 1:s:0指定第一条字幕流,-map 1:s:1指定第二条,以此类推。
内容的提问来源于stack exchange,提问作者cclloyd




