Martin Asked: 2019-05-24 23:24:36 +0800 CST2019-05-24 23:24:36 +0800 CST 2019-05-24 23:24:36 +0800 CST 更改 MKV 文件中的音轨顺序 772 我有一堆 MKV 文件,它们都是以相同的方式制作的: 一个视频轨道 音轨 1 是英语 音轨 2 是德语 现在我想更改音轨顺序,以便德语是音轨 1,英语是音轨 2。我如何才能对文件夹中的所有 MKV 文件实现此目的? video video-conversion 6 个回答 Voted Best Answer Martin 2019-05-29T12:06:33+08:002019-05-29T12:06:33+08:00 我找到了解决方案并mkvmerge从mkvtoolnix包中构建了以下脚本: #!/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 这将遍历文件夹中的所有 mkv 文件(假设它们都是以相同的方式构建的并且需要以相同的方式进行编辑)。由于第一个轨道通常是视频轨道,它会将第二个轨道更改为第三个 ( --edit track:2 --set track-number=3),将第三个轨道更改为第二个 ( --edit track:3 --set track-number=2)。 Outdated Computer Tech 2019-05-25T00:20:17+08:002019-05-25T00:20:17+08:00 这可以通过一个名为MKVToolNix的程序来完成 加载了 3 个音频流的 MKV 示例文件: 正如您在此示例中所见。我有 3 个音频流。TrueHD、DTS-HD 和 AC-3 这与您的英语、德语情况相同。 只需将德语音频流拖到顶部即可。作为示例,我会将 AC-3 移到顶部流。 但是所有这一切只是将 AC-3 移到音频顺序的顶部......但是您会注意到 TrueHD Atmos 仍然是文件开始时要播放的默认曲目。 为了使 AC-3(或您的情况下的德语)成为默认音频流,单击德语曲目,然后在右侧的属性下将默认曲目标志设置为是 完成所有这些后,按开始多路复用。这将使用您所做的新调整创建一个全新的文件。然后您可以丢弃旧文件。 Y.Terz 2020-10-15T16:21:33+08:002020-10-15T16:21:33+08:00 请不要像mkvpropedit接受的答案中那样用于订购曲目。这不会像mkvmerge. 如果您使用像 MediaInfo 这样的工具检查视频,您会看到有一个StreamOrder和ID字段。 根据我的经验(我很难学到这一点),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将是英语轨道。 希望这对未来的读者有所帮助。 Masutin 2020-12-01T06:34:40+08:002020-12-01T06:34:40+08:00 在 Windows 中,这适用于文件夹中的所有 MKV。它通过 remuxing 改变曲目的顺序,即在 1 分钟内重建整个文件。如有必要,请指定 MKV 工具的路径。 set path= for %%A in (*.mkv) do %path%mkvmerge -o "%%~nA_.mkv" "%%A" --track-order 0:0,0:2 如果您的播放器可以根据标志默认或强制选择音频,则重写索引需要 1 秒。 for %%A in (*.mkv) do %path%mkvpropedit "%%A" -e track:a2 -s flag-forced=1 -s flag-default=1 user1221013 2020-09-20T15:35:10+08:002020-09-20T15:35:10+08:00 如果不将轨道重新合并到新文件中,则无法对 mkv 文件中的轨道重新排序。我最近遇到了完全相同的问题并找到了解决方案。我创建了一个批处理文件来重新排序处理选定文件夹中所有 mkv 文件的音轨,并将具有重新排序的音轨的同名新 mkv 文件输出到新位置。它使用适用于 Windows 的 MKVToolNix 工具包(最新版本)的 mkvmerge.exe。而且,果然,与使用 mkvproedit 更改标志和属性相比,重新合并轨道需要一些时间。如果您仍然感兴趣,请告诉我。 Golden000 2022-02-05T21:38:55+08:002022-02-05T21:38:55+08:00 我知道我来晚了,但我想分享一个简单的解决方案 - Shutter Encoder,一个基于 ffmpeg 的 GUI。它可以轻松地批量重新包装和重新排列音轨,而无需重新编码。一个缺点是它不能很好地保留字幕并破坏我的 ASS 字幕中的所有字体格式。 希望能帮助到你。
我找到了解决方案并
mkvmerge
从mkvtoolnix
包中构建了以下脚本:这将遍历文件夹中的所有 mkv 文件(假设它们都是以相同的方式构建的并且需要以相同的方式进行编辑)。由于第一个轨道通常是视频轨道,它会将第二个轨道更改为第三个 (
--edit track:2 --set track-number=3
),将第三个轨道更改为第二个 (--edit track:3 --set track-number=2
)。这可以通过一个名为MKVToolNix的程序来完成
加载了 3 个音频流的 MKV 示例文件:
正如您在此示例中所见。我有 3 个音频流。TrueHD、DTS-HD 和 AC-3 这与您的英语、德语情况相同。
只需将德语音频流拖到顶部即可。作为示例,我会将 AC-3 移到顶部流。
但是所有这一切只是将 AC-3 移到音频顺序的顶部......但是您会注意到 TrueHD Atmos 仍然是文件开始时要播放的默认曲目。
为了使 AC-3(或您的情况下的德语)成为默认音频流,单击德语曲目,然后在右侧的属性下将默认曲目标志设置为是
完成所有这些后,按开始多路复用。这将使用您所做的新调整创建一个全新的文件。然后您可以丢弃旧文件。
请不要像
mkvpropedit
接受的答案中那样用于订购曲目。这不会像mkvmerge
.如果您使用像 MediaInfo 这样的工具检查视频,您会看到有一个
StreamOrder
和ID
字段。根据我的经验(我很难学到这一点),
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
将是英语轨道。希望这对未来的读者有所帮助。
在 Windows 中,这适用于文件夹中的所有 MKV。它通过 remuxing 改变曲目的顺序,即在 1 分钟内重建整个文件。如有必要,请指定 MKV 工具的路径。
如果您的播放器可以根据标志默认或强制选择音频,则重写索引需要 1 秒。
如果不将轨道重新合并到新文件中,则无法对 mkv 文件中的轨道重新排序。我最近遇到了完全相同的问题并找到了解决方案。我创建了一个批处理文件来重新排序处理选定文件夹中所有 mkv 文件的音轨,并将具有重新排序的音轨的同名新 mkv 文件输出到新位置。它使用适用于 Windows 的 MKVToolNix 工具包(最新版本)的 mkvmerge.exe。而且,果然,与使用 mkvproedit 更改标志和属性相比,重新合并轨道需要一些时间。如果您仍然感兴趣,请告诉我。
我知道我来晚了,但我想分享一个简单的解决方案 - Shutter Encoder,一个基于 ffmpeg 的 GUI。它可以轻松地批量重新包装和重新排列音轨,而无需重新编码。一个缺点是它不能很好地保留字幕并破坏我的 ASS 字幕中的所有字体格式。
希望能帮助到你。