返回顶部
大家都在看
相关推荐

[影音合成] 关于mkvtoolnix批量处理的经验分享

  [复制链接]

签到天数: 3598 天

[LV.Master]伴坛终老

635

主题

17

好友

6330

积分

风之精灵LV.2

Rank: 13Rank: 13Rank: 13

回帖
5039
雪点
196
阅读权限
80
性别
在线时间
3376 小时
注册时间
2014-1-10
最后登录
2025-1-22
evon 显示全部楼层 发表于 2014-7-16 09:37:54 |阅读模式
昨天见到@爱你BT 坛友求助mkvtoolnix的批量处理问题,相信很多坛友都有相同的问题,我就单独开贴,将自己的经验分享一下。

需要的工具:
mkvtoolnix、记事本

案例介绍:
用文件A的视频+文件B的音频+字幕合成新MKV,在文件列表中,按A、B、C顺序排列。其中A与B都是Mkv格式,所以A与B不能放在同一个文件夹中(就算不同名也不行),下面会解释。



步骤一:获取单次任务处理的命令行。
相信很多同学都知道了,看上图按UI下面中间的按钮就可以。然后新建记事本粘贴入去。将记事本后缀从TXT改成BAT,就成了一个批处理命令,直接双击运行就会自动调用mkvtoolnix执行任务。以下为案例的单次任务命令行。

@echo off
"C:\Program Files (x86)\mkvtoolnix\mkvmerge.exe" -o "E:\\DB_055_追到企鹅村.mkv"  "--language" "0:jpn" "--default-track" "0:yes" "--forced-track" "0:no" "--display-dimensions" "0:640x480" "--language" "1:chi" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "D:\\comic\\Dragon.Ball\\cc\\DB_055_追到企鹅村.mkv" ")" "--language" "0:chi" "--default-track" "0:yes" "--forced-track" "0:no" "-a" "0" "-D" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "D:\\comic\\Dragon.Ball\\aa\\DB_055_追到企鹅村.mkv" ")" "--language" "0:chi" "--forced-track" "0:no" "-s" "0" "-D" "-A" "-T" "--no-global-tags" "--no-chapters" "(" "D:\\comic\\Dragon.Ball\\aa\\DB_055_追到企鹅村.ssa" ")" "--track-order" "0:0,0:1,1:0,2:0"

大家睇到,命令行中有记录A、B、C文件的详细地址,出现的顺序分别为1.输出文件名,2.A文件名,3.B文件名,4.C文件名。可以简单归纳为先显示输出,然后显示输入(按输入列表的顺序)。

步骤二:将具体文件名变成变量。
为了让此批处理更有通用性,能重复使用,建议将一些具体名字变成变量。不考虑重复使用的同学可以不做这一步。以下将文件地址变成变更
@echo off
set topath="E:\\"
set frompath="D:\\comic\\Dragon.Ball\\cc\\"
set frompath1="D:\\comic\\Dragon.Ball\\aa\\"

"C:\Program Files (x86)\mkvtoolnix\mkvmerge.exe" -o "%topath%DB_055_追到企鹅村.mkv"  "--language" "0:jpn" "--default-track" "0:yes" "--forced-track" "0:no" "--display-dimensions" "0:640x480" "--language" "1:chi" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "%frompath%DB_055_追到企鹅村.mkv" ")" "--language" "0:chi" "--default-track" "0:yes" "--forced-track" "0:no" "-a" "0" "-D" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "%frompath1%DB_055_追到企鹅村.mkv" ")" "--language" "0:chi" "--forced-track" "0:no" "-s" "0" "-D" "-A" "-T" "--no-global-tags" "--no-chapters" "(" "%frompath1%DB_055_追到企鹅村.ssa" ")" "--track-order" "0:0,0:1,1:0,2:0"

步骤三:加入循环命令。
思路是,扫描frompath文件夹上的MKV文件,每扫描出一个就执行一次。所以如果两个源文件都是MKV,则不能都放在同一目录下。

@echo off
set topath="E:\\"
set frompath="D:\\comic\\Dragon.Ball\\cc\\"
set frompath1="D:\\comic\\Dragon.Ball\\aa\\"

pushd %frompath%
for /f "tokens=*" %%i in ('dir/b *.mkv') do call :merge %topath%%%~ni".mkv"   %frompath%%%i   %frompath1%%%i   %frompath1%%%~ni".ssa"
pause

:merge
"C:\Program Files (x86)\mkvtoolnix\mkvmerge.exe" -o "%1"  "--language" "0:jpn" "--default-track" "0:yes" "--forced-track" "0:no" "--display-dimensions" "0:640x480" "--language" "1:chi" "--forced-track" "1:no" "-a" "1" "-d" "0" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "%2" ")" "--language" "0:chi" "--default-track" "0:yes" "--forced-track" "0:no" "-a" "0" "-D" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "%3" ")" "--language" "0:chi" "--forced-track" "0:no" "-s" "0" "-D" "-A" "-T" "--no-global-tags" "--no-chapters" "(" "%4" ")" "--track-order" "0:0,0:1,1:0,2:0"

解释一下代码含义。
Pushd %frompath% :将扫描的文件夹定位在
frompath

for /f "tokens=*" %%i in ('dir/b *.mkv') :扫描目标文件夹中后缀为mkv的文件,如果输入源是MP4,这里可以改成*.MP4。

do call :merge %topath%%%~ni".mkv" %frompath%%%i %frompath1%%%i %frompath1%%%~ni".ssa":每扫描出一个MKV文件则调用merge函数,后面用空格隔开的是函数的输入参数,%%i是扫描出来文件的带后缀文件名(不含路径信息),如DB_055_追到企鹅村.mkv。%%~ni是扫描出来文件的不带后缀文件名,如DB_055_追到企鹅村。案例中,字幕文件C与文件A同名,所以%%~ni“.ssa”就代表DB_055_追到企鹅村.ssa了。

%1、%2、%3、%4:对应函数
merge的4个输入变量,按顺序排列。

步骤四:如何变成比较通用的批处理文件。
按步骤一得到新的命令行,替换掉Merge函数的内容。将里面涉及的变更改成
%1、%2、%3、%4等。
变更Topath和Frompath的路径,如果有多个输入源路径,则新建多几个
Frompath变更。
按输入源文件的情况,替代
Merge函数的输入参数组成,新的批处理文件就此生成。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
16 80
分享

签到天数: 88 天

[LV.6]常住居民II

179

主题

80

好友

9695

积分

版主

Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23

回帖
6935
雪点
17638
阅读权限
200
在线时间
8087 小时
注册时间
2012-5-19
最后登录
2024-12-18

哈比夏露露松前緒花松前緒花水の人鱼森島遙基路仔初音未来安城鸣子Shiny Gift西雅爾·法多姆海貝L彭格列黑手党夢想の的愛~靈犀侵略!乌贼娘Haru櫻乃★丶悪魔の白娅骑士王Saber巡音露卡坂田銀時神樂志村新八定春桂小太郎见崎鸣梦想の的爱~初衷みほの梦想春风千樱绫崎飒波波朝风理沙花菱美希瀨川泉艾尔凡斯.艾力克莱.马斯丹赤司征十郎紫原敦黄濑凉太绿间真太郎藤林椋だんご大家族乔巴阪本先生

chrisrex 显示全部楼层 发表于 2014-7-16 10:32:33
呢个办法专业好多,不过对于初学者嚟讲会混乱啲........

签到天数: 3598 天

[LV.Master]伴坛终老

635

主题

17

好友

6330

积分

风之精灵LV.2

Rank: 13Rank: 13Rank: 13

回帖
5039
雪点
196
阅读权限
80
性别
在线时间
3376 小时
注册时间
2014-1-10
最后登录
2025-1-22
evon 显示全部楼层 发表于 2014-7-16 10:54:32
chrisrex 发表于 2014-7-16 10:32
呢个办法专业好多,不过对于初学者嚟讲会混乱啲........

我已尽量不要求读者懂代码了,。只要懂得替换部分东西就OK了
 成长值: 9140

签到天数: 1651 天

[LV.Master]伴坛终老

170

主题

25

好友

4222

积分

精灵魔法师☆★

Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25

回帖
1483
雪点
20265
阅读权限
150
性别
在线时间
4428 小时
注册时间
2012-6-1
最后登录
2025-1-18
alexz220 显示全部楼层 发表于 2014-7-16 11:07:12
其實放起同一目錄都得,可以張兩版視頻按一定規律批量重命名,然後利用字符串之類嘅命令自動獲取對應嘅兩個視頻作爲輸入,由於唔會帶黎几多方便,到目前爲止都無用過。
另一種辦法系批量改變其中一組視頻嘅擴展名,例如mkv變mp4或者avi。
如果本黎就系放起兩個文件夾入面,之前發過嘅教程應該就可以解決問題。

签到天数: 3598 天

[LV.Master]伴坛终老

635

主题

17

好友

6330

积分

风之精灵LV.2

Rank: 13Rank: 13Rank: 13

回帖
5039
雪点
196
阅读权限
80
性别
在线时间
3376 小时
注册时间
2014-1-10
最后登录
2025-1-22
evon 显示全部楼层 发表于 2014-7-16 11:44:40
alexz220 发表于 2014-7-16 11:07
其實放起同一目錄都得,可以張兩版視頻按一定規律批量重命名,然後利用字符串之類嘅命令自動獲取對應嘅兩個 ...

如果文件的命名是规律的,固定文字+序列,确实可以用你讲的方法。但更复杂的一种情况是,文件名用了那一集的集名,因此无法固定文字。不同输入源只能用相同的名字来匹配,无法用规律重命的方式。当然可以先将集名命名用批量改名工具导出一份,改成固定字符串,转换后再重新命名翻

签到天数: 114 天

[LV.6]常住居民II

36

主题

3

好友

1295

积分

土之精灵LV.3

Rank: 7Rank: 7Rank: 7

回帖
1114
雪点
483
阅读权限
60
性别
在线时间
1066 小时
注册时间
2014-3-14
最后登录
2025-1-11
554968700 显示全部楼层 发表于 2014-7-16 11:45:05
睇到蒙查查!

签到天数: 3733 天

[LV.Master]伴坛终老

946

主题

81

好友

16万

积分

超级精灵王☆★

Rank: 20Rank: 20Rank: 20Rank: 20

回帖
162679
雪点
3688
阅读权限
150
在线时间
22430 小时
注册时间
2014-5-26
最后登录
2025-1-22
dkmi 显示全部楼层 发表于 2014-7-16 11:48:07
个软件,既制作方法 睇起来好似复杂左D。但系,就早就左好多既用途,比D心机制作吧,楼主。
头像被屏蔽

签到天数: 6 天

[LV.2]偶尔看看I

15

主题

2

好友

843

积分

禁止访问

回帖
812
雪点
213
阅读权限
0
性别
保密
在线时间
473 小时
注册时间
2013-1-29
最后登录
2021-2-24
492550612 显示全部楼层 发表于 2014-7-16 11:54:08
提示: 作者被禁止或删除 内容自动屏蔽

签到天数: 261 天

[LV.8]以坛为家I

73

主题

7

好友

1289

积分

土之精灵LV.3

Rank: 7Rank: 7Rank: 7

回帖
566
雪点
4631
阅读权限
60
性别
在线时间
1259 小时
注册时间
2013-10-28
最后登录
2024-7-24
shenkee 显示全部楼层 发表于 2014-7-16 12:11:03
呢代码睇到我眼花花

签到天数: 3598 天

[LV.Master]伴坛终老

635

主题

17

好友

6330

积分

风之精灵LV.2

Rank: 13Rank: 13Rank: 13

回帖
5039
雪点
196
阅读权限
80
性别
在线时间
3376 小时
注册时间
2014-1-10
最后登录
2025-1-22
evon 显示全部楼层 发表于 2014-7-16 12:54:10
dengyumeng 发表于 2014-7-16 11:48
个软件,既制作方法 睇起来好似复杂左D。但系,就早就左好多既用途,比D心机制作吧,楼主。

批处理语法不在行,都是临时百度学的,唉
回帖须知:严禁发表粗言秽语、纯表情、纯数字等无意义内容,更多规则请参阅论坛总版规
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

粤梦缘是国内粤语爱好者社区,集动漫、影视、音乐的综合性分享及交流平台。 网站共设,动漫资讯、动漫分享、漫画分享、讨论等多个频道。
  • 官方手机版

  • 官方QQ群

  • 商务合作

  • Powered by Discuz! X3.4 | Copyright © 2001-2023, Tencent Cloud. | 粤梦缘
  • | 营业执照 |粤梦缘网络有限公司|鲁ICP备19001237号-21|鲁公网安备 4236902302000354号