文件信息 视频文件里的粤语音轨有些在轨道 ID 3: audio (AAC),有些在轨道 ID 2: audio (AAC)。
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 G:\>D:\software\mkvtoolnix\mkvmerge -i 灌篮高手.1080P.国粤日三语.软字幕.AVC.默认粤语音频.001.mkv 文件 「灌篮高手.1080P.国粤日三语.软字幕.AVC.默认粤语音频.001.mkv」: 容器: Matroska 轨道 ID 0: video (AVC/H.264/MPEG-4p10) 轨道 ID 1: audio (AAC) 轨道 ID 2: audio (FLAC) 轨道 ID 3: audio (AAC) 轨道 ID 4: subtitles (SubStationAlpha) G:\>D:\software\mkvtoolnix\mkvmerge -i 灌篮高手.1080P.国粤日三语.软字幕.AVC.默认粤语音频.002.mkv 文件 「灌篮高手.1080P.国粤日三语.软字幕.AVC.默认粤语音频.002.mkv」: 容器: Matroska 轨道 ID 0: video (AVC/H.264/MPEG-4p10) 轨道 ID 1: audio (AAC) 轨道 ID 2: audio (FLAC) 轨道 ID 3: audio (AAC) 轨道 ID 4: subtitles (SubStationAlpha) G:\>D:\software\mkvtoolnix\mkvmerge -i 灌篮高手.1080P.国粤日三语.软字幕.AVC.默认粤语音频.003.mkv 文件 「灌篮高手.1080P.国粤日三语.软字幕.AVC.默认粤语音频.003.mkv」: 容器: Matroska 轨道 ID 0: video (AVC/H.264/MPEG-4p10) 轨道 ID 1: audio (AAC) 轨道 ID 2: audio (AAC) 轨道 ID 3: audio (FLAC) 轨道 ID 4: subtitles (SubStationAlpha) 轨道 ID 5: subtitles (SubStationAlpha) G:\>D:\software\mkvtoolnix\mkvmerge -i 灌篮高手.1080P.国粤日三语.软字幕.AVC.默认粤语音频.004.mkv 文件 「灌篮高手.1080P.国粤日三语.软字幕.AVC.默认粤语音频.004.mkv」: 容器: Matroska 轨道 ID 0: video (AVC/H.264/MPEG-4p10) 轨道 ID 1: audio (AAC) 轨道 ID 2: audio (AAC) 轨道 ID 3: audio (FLAC) 轨道 ID 4: subtitles (SubStationAlpha)
单件处理 1 D:\software\mkvtoolnix\mkvpropedit.exe "灌篮高手.1080P.国粤日三语.软字幕.AVC.默认国语音频.001.mkv" --edit track:a1 --set flag-default=0 --set flag-forced=0 --edit track:a2 --set flag-default=0 --set flag-forced=0 --edit track:a3 --set flag-default=1 --set flag-forced=1
批量处理 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 @echo off setlocal enabledelayedexpansion :: 设置输入文件夹 set "input_folder=G:\" :: 遍历输入文件夹中的所有 MKV 文件 for %%f in ("%input_folder%\*.mkv") do ( echo Processing file: %%f :: 获取音轨信息并存储到临时文件 D:\software\mkvtoolnix\mkvmerge.exe -i "%%f" > temp_tracks.txt :: 初始化变量 set "hasAAC2=0" set "hasAAC3=0" set "hasFLAC=0" :: 检查音轨信息 for /f "tokens=*" %%a in (temp_tracks.txt) do ( echo Debug: %%a if "%%a"=="轨道 ID 2: audio (AAC)" ( set "hasAAC2=1" ) else if "%%a"=="轨道 ID 3: audio (AAC)" ( set "hasAAC3=1" ) else if "%%a"=="轨道 ID 3: audio (FLAC)" ( set "hasFLAC=1" ) ) :: 根据条件修改默认音轨 if "!hasAAC2!"=="1" ( echo Setting AAC track ID 2 as default for file: %%f D:\software\mkvtoolnix\mkvpropedit.exe "%%f" --edit track:a1 --set flag-default=0 --set flag-forced=0 --edit track:a2 --set flag-default=1 --set flag-forced=1 --edit track:a3 --set flag-default=0 --set flag-forced=0 ) else if "!hasAAC3!"=="1" ( echo Setting AAC track ID 3 as default for file: %%f D:\software\mkvtoolnix\mkvpropedit.exe "%%f" --edit track:a1 --set flag-default=0 --set flag-forced=0 --edit track:a2 --set flag-default=0 --set flag-forced=0 --edit track:a3 --set flag-default=1 --set flag-forced=1 ) else ( echo No valid AAC track found for file: %%f ) :: 删除临时文件 del temp_tracks.txt ) echo All files processed. pause
重新命名 保存rename.py,执行python rename.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import osfolder_path = r"G:\" # 遍历文件夹中的所有文件 for filename in os.listdir(folder_path): # 检查文件扩展名是否为.mkv if filename.endswith(" .mkv"): # 检查文件名是否符合特定模式 if " 国语音频" in filename: # 替换最后一个“国”字为“粤”字 new_name = filename.rsplit(" 国", 1)[0] + " 粤" + filename.rsplit(" 国", 1)[1] # 构造完整的文件路径 old_file_path = os.path.join(folder_path, filename) new_file_path = os.path.join(folder_path, new_name) # 重命名文件 os.rename(old_file_path, new_file_path) print(f" 重命名:{filename} -> {new_name}") print(" 所有符合条件的文件已重命名完成。")
处理结果 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 82 83 84 85 86 87 88 G:\>D:\software\mkvtoolnix\mkvinfo.exe 灌篮高手.1080P.国粤日三语.软字幕.AVC.默认粤语音频.001.mkv + EBML 头 |+ EBML 版本: 1 |+ EBML 读取版本: 1 |+ EBML ID 最大长度: 4 |+ EBML 大小最大长度: 8 |+ 文档类型: matroska |+ 文档类型版本: 4 |+ 文档类型读取版本: 2 + 剪辑: 大小 1397911679 |+ 定位头 (子条目将被跳过) |+ 轨道 | + 轨道 | + 轨道编号: 1 (mkvmerge & mkvextract 的轨道 ID: 0) | + 轨道 UID: 1 | + 轨道类型: 视频 | + 「紧缩」 标记: 0 | + 编码格式 ID: V_MPEG4/ISO/AVC | + 编解码器私有数据: 大小 45 (H.264 档次: High 10 @L5.1) | + 默认帧时长: 00:00:00.041708333 (对应视频轨的 23.976 帧/场每秒) | + 语言: jpn | + 名称: [Kagura] Slam Dunk - 001 [BDRip 1440x1080 x264 Hi10P FLAC] | + 视频轨道 | + 像素宽度: 1440 | + 像素高度: 1080 | + 显示宽度: 1440 | + 显示高度: 1080 | + 轨道 | + 轨道编号: 2 (mkvmerge & mkvextract 的轨道 ID: 1) | + 轨道 UID: 4259734031005461432 | + 轨道类型: 音频 | + 「强制显示」 标记: 0 | + 编码格式 ID: A_AAC | + 编解码器私有数据: 大小 5 | + 默认帧时长: 00:00:00.021333333 (对应视频轨的 46.875 帧/场每秒) | + 语言: chi | + 名称: 国语Mandarin | + 音频轨 | + 采样率: 48000 | + 声道数: 2 | + 「默认轨」 标记: 0 | + 轨道 | + 轨道编号: 3 (mkvmerge & mkvextract 的轨道 ID: 2) | + 轨道 UID: 17988462785428992699 | + 轨道类型: 音频 | + 「默认轨」 标记: 0 | + 「强制显示」 标记: 0 | + 编码格式 ID: A_FLAC | + 编解码器私有数据: 大小 113 | + 默认帧时长: 00:00:00.085333333 (对应视频轨的 11.719 帧/场每秒) | + 语言: jpn | + 音频轨 | + 采样率: 48000 | + 声道数: 2 | + 位深: 16 | + 轨道 | + 轨道编号: 4 (mkvmerge & mkvextract 的轨道 ID: 3) | + 轨道 UID: 4385456018886019507 | + 轨道类型: 音频 | + 「默认轨」 标记: 1 | + 编码格式 ID: A_AAC | + 编解码器私有数据: 大小 5 | + 默认帧时长: 00:00:00.046439909 (对应视频轨的 21.533 帧/场每秒) | + 语言: chi | + 名称: 粤语Cantonese | + 音频轨 | + 采样率: 22050 | + 输出采样频率: 44100 | + 「强制显示」 标记: 1 | + 轨道 | + 轨道编号: 5 (mkvmerge & mkvextract 的轨道 ID: 4) | + 轨道 UID: 4592099748104795573 | + 轨道类型: 字幕 | + 「紧缩」 标记: 0 | + 编码格式 ID: S_TEXT/ASS | + 编解码器私有数据: 大小 1488 | + 语言: chi | + 名称: 诸神简日双语字幕 |+ EBML void: 大小 1923 |+ 剪辑信息 | + 时间戳缩放: 1000000 | + 混流应用程序: libebml v1.3.6 + libmatroska v1.4.9 | + 写入应用程序: mkvmerge v24.0.0 ('Beyond The Pale') 64-bit | + 时长: 00:19:39.921000000 | + 日期: 2018-06-13 04:01:56 UTC | + 剪辑 UID: 0x1c 0xe1 0xb8 0x3d 0x99 0x9b 0x00 0x62 0x4c 0x68 0x7d 0x14 0x12 0xf2 0x71 0xf9 |+ EBML void: 大小 3282 |+ 簇