You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FFmpeg调整MKV流顺序并新增DTS转AAC音频流

正确命令及原理说明

原命令问题分析

  1. -map 0会直接导入输入的全部5条流,但你需要新增一条转码后的AAC流,必须额外映射一次输入的3号流才能生成新流,仅修改编码参数无法新增流。
  2. 你重复设置了-c:3 aac和-c:3 copy,FFmpeg会以最后一次设置为准,导致原3号流仍被直接复制,没有生成新的AAC版本,最终输出还是5条流。
  3. -map 0会按输入流的默认顺序输出,完全不符合你指定的流排序要求。

正确命令

ffmpeg \
  -i input.mkv \
  -map 0:0 \          # 保留原视频流(第0号)
  -map 0:3 \          # 映射原3号DTS流,用于转码成AAC
  -map 0:3 \          # 保留原3号DTS流
  -map 0:4 \          # 保留原4号AAC流
  -map 0:1 \          # 保留原1号DTS流
  -map 0:2 \          # 保留原2号AC3流
  -c:0 copy \         # 视频流直接复制
  -c:1 aac -vbr 3 \   # 对第1条输出流(第二个-map的0:3)转码为AAC,VBR级别3
  -c:2 copy \         # 第2条输出流(原3号DTS)直接复制
  -c:3 copy \         # 第3条输出流(原4号AAC)直接复制
  -c:4 copy \         # 第4条输出流(原1号DTS)直接复制
  -c:5 copy \         # 第5条输出流(原2号AC3)直接复制
  output.mkv

原理说明

  1. 流映射顺序决定输出顺序:
    每个-map参数对应输出文件中的一条流,输出顺序完全和你写的-map顺序一致。这里的6个-map正好匹配你要的顺序:原视频、3号的AAC副本、原3号、原4号、原1号、原2号。
  2. 编码参数对应输出流索引:
    -c:N中的N是输出流的索引(从0开始),不是输入流的索引。所以:
    • -c:0 copy对应第一个-map的视频流,直接复制不转码;
    • -c:1 aac -vbr 3对应第二个-map的流,把它转成AAC,用VBR级别3平衡音质和体积;
    • 后面的-c:2到-c:5都是直接复制对应的输出流,保留原有编码格式。
  3. 避免参数覆盖:
    每条输出流的编码参数单独设置,不会出现重复设置覆盖的问题,确保新增的AAC流被正确生成,同时所有原流都被保留。

内容的提问来源于stack exchange,提问作者SU3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 10:57:43