我这样使用的命令,比如有很多有多个音频和字幕语言文件,然而轨迹号不一致(英文音频流并不总是在前):映射流通过语言的FFmpeg
ffmpeg -i "input.mkv" -map 0 -map -0:a:1 -c:v copy -c:a copy "output.mkv"
不会产生预期的结果。周围搜索后,我发现这是可能基于与此命令语言映射流:
ffmpeg -i "input.mkv" -map 0 -map -0:m:language:eng -c:v copy -c:a copy "output.mkv"
然而-map -0:m:language:eng
将删除所有曲目与英文标记。要保留字幕轨道,您可以使用-map 0:s
,但这是一个很好的解决方案,但我想知道是否可以仅基于语言映射音频流。
该命令将复制视频流*和非英文字幕流。 *除非视频标记为英语,通常不会。我的解决方法避免了这一点。 – Mulvya
嗯,你的解决方案不会映射附件,但你怎么做,而不使用-map 0或给每个附件流的ID?你发布的第一个解决方案是制作一个临时文件,这个过程需要更长的时间。另外,如果在删除英文流后不使用'-map 0:v',那么如果视频有英文标志,视频会不会被删除? ? – ffmpeg123
保留数据和附件流的修改解决方法。你的原始目的,IIRC,是只删除英文音频流。我的解决方法可以做到这一点,并让所有其他事情都可以完成 – Mulvya