关于FFmpeg同时实现多流复制与单音频流转AC3的命令求助
FFmpeg同时实现多流复制与单音频流转AC3的命令求助
嘿,我完全懂你这种卡在半路上的感觉——既要精准筛选保留的流,又要单独给某条音频转编码,ffmpeg的参数组合确实容易让人头大。咱们直接来解决你的需求:
先明确你的核心目标:
- 保留原视频流(0号)
- 删除法语音频(1号)和法文字幕(4号)
- 保留德语音频(2号)并直接复制编码
- 将英语DTS音频(3号)转换为AC3编码
- 保留所有德语字幕(5、6、7号)和英文字幕(8号)
给你这个一步到位的命令:
ffmpeg -i 1.mkv -map 0:0 -map 0:2 -map 0:3 -map 0:5 -map 0:6 -map 0:7 -map 0:8 -c:v copy -c:a:0 copy -c:a:1 ac3 -c:s copy output.mkv
我来拆解下每个参数的作用,方便你理解和调整:
-i 1.mkv:指定你的输入文件-map系列参数:只保留你明确指定的流,没被-map提到的流(1号和4号)会自动被排除,完美解决删除指定流的需求-c:v copy:视频流直接复制,不重新编码,节省时间和画质损失-c:a:0 copy:输出的第一条音频流(对应原文件的2号德语AC3音频)直接复制编码-c:a:1 ac3:输出的第二条音频流(对应原文件的3号英语DTS音频)强制转换为AC3编码-c:s copy:所有选中的字幕流直接复制,不做修改output.mkv:最终输出的文件名,你可以改成自己想要的名字
如果需要给输出的音频流加上明确的语言标签(方便播放器识别),可以在命令里加元数据参数,比如:
ffmpeg -i 1.mkv -map 0:0 -map 0:2 -map 0:3 -map 0:5 -map 0:6 -map 0:7 -map 0:8 -c:v copy -c:a:0 copy -c:a:1 ac3 -c:s copy -metadata:s:a:0 language=ger -metadata:s:a:1 language=eng output.mkv
另外,如果对转换后的AC3音频比特率有要求,可以加上-b:a:1参数调整,比如想要640kbps的比特率,就把-c:a:1 ac3改成-c:a:1 ac3 -b:a:1 640k就行。
备注:内容来源于stack exchange,提问作者Rod
相关产品推荐
相关产品推荐

