FFmpeg映射最佳视频轨道并保留其余所有轨道的实现方法咨询
FFmpeg映射最佳视频轨道并保留其余所有轨道的实现方法咨询
嘿,我完全懂你这种感受——FFmpeg的map参数文档确实有点绕,尤其是面对多轨视频、音频、字幕混在一起的输入时,很容易搞不清怎么精准控制。不过别担心,刚好有个简单的命令能实现你要的效果:只保留FFmpeg默认判定的最佳视频流,同时把所有音频、字幕(如果有的话)都完整保留下来。
直接上命令:
ffmpeg -i input.mkv -map 0:v:0 -map 0:a -map 0:s -c copy output.mkv
我给你拆解一下每个部分的作用:
-i input.mkv:替换成你自己的输入文件路径和名称就行-map 0:v:0:这里的0指第一个输入文件,:v代表视频流类型,:0就是选第一个视频流——而FFmpeg默认会把它判定为“最佳”的那个视频流(通常是分辨率最高、码率最高的)放在第一位,刚好符合你的需求-map 0:a:选中输入文件里所有的音频流,不管有多少条音轨,都会原封不动保留-map 0:s:同理,选中输入文件里所有的字幕流,没有字幕的话FFmpeg会自动忽略这条,不会报错-c copy:直接复制所有流,不重新编码,既快又不会损失画质音质
如果想确认FFmpeg识别的流顺序,你可以先跑一下ffmpeg -i input.mkv,输出里会列出所有流的详细信息,比如类似Stream #0:0: Video: h264 (High), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc这样的内容,这里的#0:0就是第一个视频流,也就是最佳的那个。
备注:内容来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

