zoukankan      html  css  js  c++  java
  • [转载] 关于mkvtoolnix批量处理的

    需要的工具:
    mkvtoolnix、记事本

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



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

    @echo off
    "C:Program Files (x86)mkvtoolnixmkvmerge.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)mkvtoolnixmkvmerge.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)mkvtoolnixmkvmerge.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函数的输入参数组成,新的批处理文件就此生成。

  • 相关阅读:
    1012 The Best Rank (25 分)(排序)
    1011. World Cup Betting (20)(查找元素)
    1009 Product of Polynomials (25 分)(模拟)
    1008 Elevator (20 分)(数学问题)
    1006 Sign In and Sign Out (25 分)(查找元素)
    1005 Spell It Right (20 分)(字符串处理)
    Kafka Connect 出现ERROR Failed to flush WorkerSourceTask{id=local-file-source-0}, timed out while wait
    flume、kafka、avro组成的消息系统
    Java23种设计模式总结【转载】
    Java编程 思维导图
  • 原文地址:https://www.cnblogs.com/mengxiaotian/p/5140194.html
Copyright © 2011-2022 走看看