mkvtoolnix封装操作

许老师技术分享1356

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


相关文章

Linux系统上Nginx+Python的web.py与Django框架环境

Linux系统上Nginx+Python的web.py与Django框架环境

1.编译nginx在网上买了一本《实战nginx-取代Apache的高性能服务器》,写的比较浅,主要是些配置方面的东西,不过却正是目前我所需要的。由于需要支持https和rewrite,所以除了ngi...

Python 虚拟环境venv详解

Python 虚拟环境venv详解

Python 虚拟环境主要是为不同 Python 项目创建一个隔离的环境,每个项目都可以拥有独立的依赖包环境,而项目间的依赖包互不影响,对Python 虚拟环境venv相关知识感兴趣的朋友一起看看吧+...

win版 postgresql配置简单说明

win版 postgresql配置简单说明

win版 postgresql配置简单说明官网下载最新win版本压缩包,本例中使用的是postgresql-11.5-1-windows-x64-binaries.zip解压缩到指定目录,比如D:\p...

开源--Prometheus

开源--Prometheus

前言Prometheus是CNCF的一个开源项目,Google BorgMon监控系统的开源版本,是一个系统和服务的监控系统。周期性采集metrics指标,匹配规则和展示结果,以及触发某些条件的告警发...

服务器  应用框架。

服务器 应用框架。

nginx是服务器,web.py是web应用框架。简言之,前者封装对网络io的处理,后者负责具体应用的逻辑,解决的问题是不一样的。形象点呢,一个请求来了,nginx先把请求拦下来,发现要的是现成的东西...

python环境的打包与加载

python环境的打包与加载

目录1 pip方式1.1 requirements.txt文件的生成1.2 requirements.txt环境的加载:2 conda方式2.1 env.yml文件的生成2.2 env.yml文件的加...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。