使用mkvtoolnix保留粤语音轨

文件信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
D:\software\mkvtoolnix>mkvinfo 难兄难弟-01.mkv
+ EBML 头
|+ EBML 版本: 1
|+ EBML 读取版本: 1
|+ EBML ID 最大长度: 4
|+ EBML 大小最大长度: 8
|+ 文档类型: matroska
|+ 文档类型版本: 4
|+ 文档类型读取版本: 2
+ 剪辑: 大小 880540184
|+ 定位头 (子条目将被跳过)
|+ EBML void: 大小 4027
|+ 剪辑信息
| + 时间戳缩放: 1000000
| + 混流应用程序: libebml v1.3.5 + libmatroska v1.4.8
| + 写入应用程序: mkvmerge v17.0.0 ('Be Ur Friend') 64-bit
| + 时长: 00:45:17.199000000
| + 日期: 2018-10-02 13:32:30 UTC
| + 剪辑 UID: 0xb1 0x6b 0xa9 0xaf 0x75 0x12 0xf5 0xa7 0xad 0xab 0xd6 0xaa 0x19 0xf5 0x91 0xbd
|+ 轨道
| + 轨道
| + 轨道编号: 1 (mkvmerge & mkvextract 的轨道 ID: 0)
| + 轨道 UID: 12099609334088513866
| + 轨道类型: 视频
| + 「紧缩」 标记: 0
| + 编码格式 ID: V_MPEG4/ISO/AVC
| + 编解码器私有数据: 大小 47 (H.264 档次: High @L4.1)
| + 默认帧时长: 00:00:00.040000000 (对应视频轨的 25.000 帧/场每秒)
| + 语言: chi
| + 视频轨道
| + 像素宽度: 1280
| + 像素高度: 720
| + 显示宽度: 1280
| + 显示高度: 720
| + 轨道
| + 轨道编号: 2 (mkvmerge & mkvextract 的轨道 ID: 1)
| + 轨道 UID: 11992976042516049637
| + 轨道类型: 音频
| + 编码格式 ID: A_AAC
| + 编解码器私有数据: 大小 2
| + 默认帧时长: 00:00:00.023219954 (对应视频轨的 43.066 帧/场每秒)
| + 语言: chi
| + 名称: 国语
| + 音频轨
| + 采样率: 44100
| + 声道数: 2
| + 轨道
| + 轨道编号: 3 (mkvmerge & mkvextract 的轨道 ID: 2)
| + 轨道 UID: 9059807628854784062
| + 轨道类型: 音频
| + 「默认轨」 标记: 0
| + 编码格式 ID: A_AAC
| + 编解码器私有数据: 大小 2
| + 默认帧时长: 00:00:00.023219954 (对应视频轨的 43.066 帧/场每秒)
| + 语言: chi
| + 名称: 粤语
| + 音频轨
| + 采样率: 44100
| + 声道数: 2
| + 轨道
| + 轨道编号: 4 (mkvmerge & mkvextract 的轨道 ID: 3)
| + 轨道 UID: 6875262301070943117
| + 轨道类型: 字幕
| + 「紧缩」 标记: 0
| + 编码格式 ID: S_TEXT/UTF8
| + 语言: chi
| + 名称: 简体中文
| + 轨道
| + 轨道编号: 5 (mkvmerge & mkvextract 的轨道 ID: 4)
| + 轨道 UID: 5198950236804616601
| + 轨道类型: 字幕
| + 「默认轨」 标记: 0
| + 「紧缩」 标记: 0
| + 编码格式 ID: S_TEXT/UTF8
| + 语言: chi
| + 名称: 繁体中文
|+ EBML void: 大小 1196
|+ 簇

单件处理

1
2
3
cd D:\software\mkvtoolnix

mkvmerge -o 难兄难弟-01-粤语.mkv --audio-tracks 2 --subtitle-tracks 3,4 难兄难弟-01.mkv

批量处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

REM 定义 mkvmerge 可执行文件路径
set "exe=D:\software\mkvtoolnix\mkvmerge.exe"

REM 输入文件夹路径
set "input=G:\video"

REM 输出文件夹路径
set "output=G:\video\done"

REM 检查 mkvmerge 是否存在
if not exist "%exe%" (
echo "%exe%" not found
goto end
)

REM 检查输入文件夹是否存在
if not exist "%input%" (
echo "%input%" not found
goto end
)

REM 创建输出文件夹(如果不存在)
md "%output%" 2>nul

REM 遍历 G:\video 下的一层子目录
for /d %%a in ("%input%\*") do (
if /i not "%%~nxa"=="done" (
call :process_directory "%%~fa"
)
)

:end
echo All directories processed.
pause
exit /b

:process_directory
REM 获取当前子目录路径
set "subdir=%~1"

REM 定义输出子目录路径
set "output_subdir=%output%\!subdir:%input%\=!"

REM 创建输出子目录(如果不存在)
md "!output_subdir!" 2>nul

REM 遍历当前子目录中的所有 .mkv 文件
for %%b in ("%subdir%\*.mkv") do (
call :process_file "%%b" "!output_subdir!"
)

exit /b

:process_file
REM 获取当前文件路径和输出目录
set "input_file=%~1"
set "output_dir=%~2"

REM 修改输出文件名,在原文件名后添加“粤语”
for %%c in ("%input_file%") do (
set "output_file=%output_dir%\%%~nc-粤语%%~xc"
)

REM 使用 mkvmerge 保留粤语声轨(音频轨 2)
echo Processing "!input_file!"
echo Output will be saved to "!output_file!"
"%exe%" -o "!output_file!" --audio-tracks 2 --default-track-flag 2:yes "!input_file!"

REM 处理完成提示
if !errorlevel! equ 0 (
echo Successfully processed: "!input_file!"
) else (
echo Failed to process: "!input_file!"
)

exit /b

输出效果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
G:\video>tree /F
卷 新加卷 的文件夹 PATH 列表
卷序列号为 D423-6A93
G:.
├─1
│ 难兄难弟-01.mkv
│ 难兄难弟-02.mkv

├─2
│ 难兄难弟-06.mkv
│ 难兄难弟-07.mkv

└─done
├─1
│ 难兄难弟-01-粤语.mkv
│ 难兄难弟-02-粤语.mkv

└─2
难兄难弟-06-粤语.mkv
难兄难弟-07-粤语.mkv