更改 MKV 文件中的音轨顺序

Mar*_*tin 3 video video-editing video-conversion matroska

我有一堆 MKV 文件,它们都是以相同的方式制作的:

  • 一个视频轨道
  • 音轨 1 是英文的
  • 音轨 2 是德语

现在我想更改音轨顺序,使德语为轨道 1,英语为轨道 2。如何为文件夹中的所有 MKV 文件实现此目的?

YTZ*_*YTZ 8

请不要已接受的答案那样用于mkvpropedit订购曲目。这不会那样正确地排序它们mkvmerge

如果您使用 MediaInfo 等工具检查视频,您可以看到有一个StreamOrderandID字段。

在此输入图像描述

根据我的经验(我通过惨痛的教训才了解到这一点),ID如果您使用mkvpropedit. 这不会更改StreamOrder,因此 MKVToolnix 也不会将曲目识别为已排序。

mkvmerge相反,请在可以指定的地方使用--track-order,例如:

mkvmerge --output "your_file (1).mkv" "(" "your_file.mkv" ")" --track-order 0:0,0:2,0:1

其中0:0表示视频轨道,0:2则将是德语轨道,并且0:1将是英语轨道。

希望这对未来的读者有所帮助。


Mar*_*tin 7

我找到了解决方案并mkvmergemkvtoolnix包中构建了以下脚本:

#!/bin/bash

for f in *.mkv
do 
    mkvpropedit -v "$f" --edit track:2 --set track-number=3 --edit track:3 --set track-number=2
done
Run Code Online (Sandbox Code Playgroud)

这会遍历文件夹中的所有 mkv 文件(假设它们都以相同的方式构建并且需要以相同的方式进行编辑)。由于第一个轨道通常是视频轨道,因此它将第二个轨道更改为第三个 ( --edit track:2 --set track-number=3),将第三个更改为第二个 ( --edit track:3 --set track-number=2)。


Out*_*ech 5

这可以通过名为MKVToolNix的程序来完成

加载了 3 个音频流的 MKV 示例文件:

在此输入图像描述

正如您在此示例中所看到的。我有 3 个音频流。TrueHD、DTS-HD 和 AC-3 这与您的英语、德语情况相同。

只需将德语音频流拖到顶部即可。作为示例,我将把 AC-3 移动到顶部流。

在此输入图像描述

但这所做的只是将 AC-3 移动到音频顺序的顶部...但是您会注意到 TrueHD Atmos 仍然是文件启动时要播放的默认曲目。

为了使 AC-3(或您的情况下的德语)成为默认音频流,请单击德语轨道,然后在右侧属性下将默认轨道标志设置为YES

在此输入图像描述

完成所有这些后,按“开始多路复用”。这将使用您所做的新调整创建一个全新的文件。然后您可以丢弃旧文件。