mkvtoolnix封装操作
mkvtoolnix命令行批量封装添加字幕及更改默认音轨
mkvtoolnix命令行批量执行,添加字幕及更改默认音轨操作代码
准备工具:mkvtoolnix v58以上,视频文件与相应的字幕文件(影视文件与字幕,两者名称一一对应,放在同一个目录下)
代码:
for /f "delims=" %%x in ('dir /b *.ts') do ( D:\MKV2s\mkvmerge.exe --ui-language zh_CN --output ^"%%~nx.mkv^" --language 0:und --language 1:zh --track-name ^"1:国语^" --default-track 1:no --language 2:zh --track-name ^"2:粤语^" ^"^(^" ^"%%~nx.ts^" ^"^)^" --language 0:und --track-name ^"0:繁体^" ^"^(^" ^"%%~nx.srt^" ^"^)^" --track-order 0:0,0:1,0:2,1:0 ) pause
解释:
%%x :是文件名, %%~nx 是纯文件名,不带扩展名。在代码中,%%x等同于01.ts,%%~nx等同于01。
for /f "delims=" %%x in ('dir /b *.ts') do ():执行循环,('dir /b *.ts')是操作对象,do ()括号内是需要执行的具体操作。
for /f "delims=" %%x in :针对('dir /b *.ts')操作对象中的每一个对象进行do () 操作。
dir /b *.ts :列出本目录下所有扩展名为ts的文件,可以按实际需求修改为其它文件类型,比如 dir /b *.mp4 ,dir /b *.mkv
D:\MKV2s\mkvmerge.exe :mkvtoolnix工具包安装存放的具体目录,按自己实际修改,比如C:\program files\mkvtoolnix\mkvmerge.xe
mkvtoolnix 命令行参数遵循一个规则:1、结果文件名,2、输入源文件名A,3、输入源文件名B,...,每个具体参数以两横线(--)开头,空格分隔。
--ui-language zh_CN :ui语言选中文,可以在运行时输出中文提示,方便查看
--output ^"%%~nx.mkv^" :最后封装输出结果为01.mkv,02.mkv,...与源文件在同一目录下,也可以修改为其它目录
^"%%~nx.mkv^" :固定引用格式,尖括号加双引号,第一个参数基本不用修改
第一个输入源文件A参数:
--language 0:und :视频轨语言,纯视频文件没有声音,默认und
--language 1:zh --track-name ^"1:国语^" --default-track 1:no --language 2:zh --track-name ^"2:粤语^"
:将上面(^"1:国语^",^"2:粤语^")中的(国语,粤语)按自己需求修改音频轨名称,因为这里只有两条音轨,
第一条国语音轨设定了不是默认值:--default-track 1:no ,第二条粤语音轨就成了默认值。
如果有三条以上音轨,可以修改为:
--language 1:zh --track-name ^"1:央视国语^" --default-track 1:no --language 2:zh --track-name ^"2:粤语^" --default-track 2:yes --language 3:zh --track-name ^"3:台配国语^" --default-track 3:no --language 4:ja --track-name ^"4日语^" --default-track 4:no
--language 1:zh --track-name ^"1:央视国语^" --default-track 1:no 第一音频轨是中文国语,不设定为默认
--language 2:zh --track-name ^"2:粤语^" --default-track 2:yes 第二音频轨是中文粤语,设定为默认
第三、四条音频轨分别是中文与日文,不设定为默认。
注意一下,--language 3:zh这个zh是语言代码,所有轨道,不熟悉的都可以直接使用und,未定义。
^"^(^" ^"%%~nx.ts^" ^"^)^" :固定格式,只需要将%%~nx.ts中ts按实际修改即可,比如源文件是mp4,修改为 ^"^(^" ^"%%~nx.mp4^" ^"^)^"
第二个输入源文件B参数:
--language 0:und --track-name ^"0:繁体^" ^"^(^" ^"%%~nx.srt^" ^"^)^" :字幕文件参数,语言未定义,名称是繁体中文,文件名是相应的01.srt,02.srt,...
--track-order 0:0,0:1,0:2,1:0 :结果文件中轨道顺序,不熟悉的可以直接删除此段代码。
pause :操作完成后,屏幕暂停,方便检查看运行结果
这段代码,实际上是对某部电视剧进行封装使用到的。
该剧有01.ts, 01.srt, 02.ts,02.srt,...一系列文件,每个视频文件包含了视频、国语、粤语音轨,字幕文件是独立srt繁体文件 ,通过执行代码,
实现了将ts,srt文件打包成mkv文件,并将第二条粤语音轨设定为默认值。
复制代码,打开记事本,粘贴,另存为 “批量封装.bat”,把此文件放到需要操作的视频目录,双击运行即可。
重复一次代码:
for /f "delims=" %%x in ('dir /b *.ts') do (
D:\MKV2s\mkvmerge.exe --ui-language zh_CN --output ^"%%~nx.mkv^" --language 0:und --language 1:zh --track-name ^"1:国语^" --default-track 1:no --language 2:und --track-name ^"2:粤语^" ^"^(^" ^"%%~nx.ts^" ^"^)^" --language 0:und --track-name ^"0:繁体^" ^"^(^" ^"%%~nx.srt^" ^"^)^" --track-order 0:0,0:1,0:2,1:0
)
pause