https://www.nmm-hd.org/d/api.php?action=feedcontributions&user=XsLiDian&feedformat=atom
NMM Doc - 用户贡献 [zh]
2024-03-19T07:43:01Z
用户贡献
MediaWiki 1.36.1
https://www.nmm-hd.org/d/index.php?title=Reverse&diff=915
Reverse
2011-05-28T19:14:55Z
<p>XsLiDian:以内容“{{Template:FuncDef|Reverse(剪辑 ''剪辑'')}} 本滤镜可让剪辑反向播放。可以实现让人们听到魔咒倒着走。 注: 交错剪辑的 [[Parity|parity...”创建新页面</p>
<hr />
<div>{{Template:FuncDef|Reverse(剪辑 ''剪辑'')}}<br />
<br />
本滤镜可让剪辑反向播放。可以实现让人们听到魔咒倒着走。<br />
<br />
注: 交错剪辑的 [[Parity|parity]] 字段 (顶场优先/TFF - 底场优先/BFF)将被更改。<br />
<br />
<br />
[[Category:内部滤镜]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Interleave&diff=914
Interleave
2011-05-28T19:11:40Z
<p>XsLiDian:以内容“{{Template:FuncDef|Interleave(剪辑1, 剪辑2 [, ...])}} Interleave 可逐帧交错各剪辑的帧,例如如果您给定三个参数,输出视频的开头三帧...”创建新页面</p>
<hr />
<div>{{Template:FuncDef|Interleave(剪辑1, 剪辑2 [, ...])}}<br />
<br />
Interleave 可逐帧交错各剪辑的帧,例如如果您给定三个参数,输出视频的开头三帧将是三段源剪辑的第一帧,接下来的三帧将是源剪辑的第二帧,依此类推。<br />
<br />
较短剪辑的最后一帧将重复出现,直到最长剪辑结束。音频取自首个剪辑。<br />
<br />
<br />
[[Category:内部滤镜]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Loop&diff=913
Loop
2011-05-28T19:08:45Z
<p>XsLiDian:以内容“{{Template:FuncDef|Loop(剪辑 ''剪辑'' [, 整数 ''次数'' &#61; -1] [, 整数 ''起始帧'' &#61; 0] [, 整数 ''末尾帧'' &#61; inf])}} 循环从 ''起始帧''...”创建新页面</p>
<hr />
<div>{{Template:FuncDef|Loop(剪辑 ''剪辑'' [, 整数 ''次数'' &#61; -1] [, 整数 ''起始帧'' &#61; 0] [, 整数 ''末尾帧'' &#61; inf])}}<br />
<br />
循环从 ''起始帧'' 到 ''末尾帧'' 的片段指定次数。将 ''次数'' 设为 -1 可无限循环。<br />
<br />
<br />
'''示例:'''<br />
<br />
# 循环当前剪辑的第 100 到 110 帧 10 次:<br />
Loop(10,100,110)<br />
<br />
Loop() # 让剪辑(几乎)无限循环<br />
Loop(10) # 让剪辑循环十次<br />
Loop(10,20,29) # 在继续前重复第 20 到 29 帧十次,实际剪辑时长增加 90 帧<br />
Loop(0,20,29) # 删除第 20 到 29 帧,实际剪辑时长减少 10 帧<br />
Loop(-1,20,29) # (几乎)无限重复第 20 到 29 帧<br />
<br />
<br />
[[Category:内部滤镜]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=FreezeFrame&diff=912
FreezeFrame
2011-05-28T19:03:58Z
<p>XsLiDian:以内容“{{Template:FuncDef|FreezeFrame(剪辑 ''剪辑'', 整数 ''首帧'', 整数 ''末帧'', 整数 ''源帧'')}} FreezeFrame 滤镜可将 ''首帧'' 与 ''末帧'' 之间...”创建新页面</p>
<hr />
<div>{{Template:FuncDef|FreezeFrame(剪辑 ''剪辑'', 整数 ''首帧'', 整数 ''末帧'', 整数 ''源帧'')}}<br />
<br />
FreezeFrame 滤镜可将 ''首帧'' 与 ''末帧'' 之间的全部帧替换为 ''源帧'' 的副本。音轨不受影响。可在有类似的无毛刺帧可用时用于覆盖视频毛刺。<br />
<br />
[[Category:内部滤镜]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Invert&diff=911
Invert
2011-05-28T19:00:46Z
<p>XsLiDian:以内容“{{Template:FuncDef|Invert(剪辑 ''剪辑'' [, 字符串 ''通道'']) }} 翻转剪辑的一个或多个翻转通道。 ''通道''定义了要翻转的通道。默认...”创建新页面</p>
<hr />
<div>{{Template:FuncDef|Invert(剪辑 ''剪辑'' [, 字符串 ''通道'']) }}<br />
<br />
翻转剪辑的一个或多个翻转通道。<br />
<br />
''通道''定义了要翻转的通道。默认是当前色彩空间的全部通道。有效的通道有 R、G、B、A(RGB 剪辑)及 Y、U & V(YUY2 及 YV12 剪辑)。<br />
<br />
'''示例:'''<br />
AviSource("剪辑.avi")<br />
ConvertToRGB32()<br />
Invert("BG") # 翻转绿色与蓝色通道<br />
<br />
'''变更日志:'''<br />
{| border="1"<br />
|- <br />
| v2.55<br />
| 新增 RGB24、YUY2 及 YV12 模式。<br />
|- <br />
| v2.53<br />
| 初始发布<br />
|}<br />
<br />
<br />
[[Category:内部滤镜]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=DirectShow&diff=910
DirectShow
2011-05-28T18:55:39Z
<p>XsLiDian:以内容“Microsoft 说 DirectShow 是这嘛个东东: ''“Microsoft® DirectShow® 是在 Microsoft Windows® 平台对媒体进行流式处理的架构。DirectShow 提供...”创建新页面</p>
<hr />
<div>Microsoft 说 DirectShow 是这嘛个东东:<br />
<br />
''“Microsoft® DirectShow® 是在 Microsoft Windows® 平台对媒体进行流式处理的架构。DirectShow 提供了多媒体流的高质量捕获与回放。它支持格式广泛,包括 高级系统格式 (ASF)、运动画面专家组 (MPEG)、音视频交错 (AVI)、MPEG 音频Layer-3 (MP3) 以及 WAV 声音文件。它支持基于 Windows 驱动模型 (WDM) 或 Windows 视频接口(VfW)从数字或模拟设备捕获。DirectShow 与其他 DirectX 技术整合。能自动侦测并使用可用的视频与音频加速硬件,但同时也支持无加速硬件的系统。”''(译自 [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directshow/htm/introductiontodirectshow.asp msdn]。)<br />
<br />
Microsoft® DirectShow® 与 Video for Windows® 是 M$ 注册商标,ActiveMovie® 是 Microsoft Corporation 在美获及/或其他国家的商标。<br />
<br />
[[分类:词汇]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=DelayAudio&diff=909
DelayAudio
2011-05-28T18:47:43Z
<p>XsLiDian:</p>
<hr />
<div>{{Template:FuncDef|DelayAudio(剪辑, 浮点数 ''秒数'')}}<br />
<br />
本页翻译:MythCreator<br />
<br />
DelayAudio 使音频延迟由“秒数”值决定的时间。“秒数”可以为负数或分数。<br />
<br />
'''示例:'''<br />
<br />
#使音频提前半秒<br />
DelayAudio(-0.5)<br />
<br />
PS: 如果载入的音源是单独的音频文件 (比如 [[WavSource]] ), 最好不要在 [[AudioDub]] 之后使用本滤镜, 否则可能会导致某些问题。<br />
<br />
[[Category:内部滤镜]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=DGIndex&diff=908
DGIndex
2011-05-28T18:41:53Z
<p>XsLiDian:以内容“DGIndex,属于 DGMPGDec 包,是一款设计用来创建 MPEG 视频流索引的程序。盖索引,或者称项目文件,可被其 Avisynth 姊妹滤镜 [[DG...”创建新页面</p>
<hr />
<div>DGIndex,属于 [[DGMPGDec]] 包,是一款设计用来创建 MPEG 视频流索引的程序。盖索引,或者称项目文件,可被其 Avisynth 姊妹滤镜 [[DGDecode]] 用于通过 Avisynth 脚本提供精确到帧的视频。DGIndex 可解码并索引大多数 MPEG1/2 流,包括基本流(ES)、程序流(PS)、VOB、VCD、SVCD、PVA 文件以及传输流(TS)。<br />
<br />
其他功能包括:视频解流(demux)(m1v/m2v),音频解流 (ac3、dts、aac、mpa 及 lpcm)、优化的 iDCT、照明度(luminance)过滤、[[Crop|裁剪]]等。<br />
<br />
* [http://neuron2.net/dgmpgdec/DGIndexManual.html DGIndex 手册]<br />
* [http://neuron2.net/dgmpgdec/dgmpgdec.html 下载 DGMPGDec]<br />
<br />
[[Category:源滤镜]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=DGMPGDec&diff=907
DGMPGDec
2011-05-28T18:36:16Z
<p>XsLiDian:以内容“DGMPGDec 是一款 MPEG 解码器套件。用于解码源为 DVD VOB、捕获的传输流、*.mpg/*.m2v/*.pva 文件等 MPEG1 或 MPEG2 流。最常见的用途或许...”创建新页面</p>
<hr />
<div>DGMPGDec 是一款 MPEG 解码器套件。用于解码源为 DVD VOB、捕获的传输流、*.mpg/*.m2v/*.pva 文件等 MPEG1 或 MPEG2 流。最常见的用途或许是解码 DVD 中的 VOB 文件。<br />
<br />
该套件包含:<br />
* [[DGIndex]],用于创建 MPEG 视频流的索引,以及<br />
* [[DGDecode]],一款利用该索引解码视频的 AviSynth 插件<br />
<br />
[[分类:编解码器]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=DGDecode&diff=906
DGDecode
2011-05-28T18:32:57Z
<p>XsLiDian:以内容“{{Filter |neuron2 |1.5.7 (as of 2010-02-06) |[http://neuron2.net/dgmpgdec/dgmpgdec.html neuron2.net] |源滤镜 | |GPL }} == 描述 == DGDecode,属于 DGMPGDec ...”创建新页面</p>
<hr />
<div>{{Filter<br />
|neuron2<br />
|1.5.7 (as of 2010-02-06)<br />
|[http://neuron2.net/dgmpgdec/dgmpgdec.html neuron2.net]<br />
|源滤镜<br />
|<br />
|GPL<br />
}}<br />
<br />
== 描述 ==<br />
<br />
DGDecode,属于 [[DGMPGDec]] 包,是一款 MPEG-1/2 解码器插件。<br />
<br />
== 滤镜 ==<br />
<br />
{{PluginFilterTable}}<br />
| [[DGDecode/MPEG2Source|MPEG2Source]] <br />
| 读取 D2V 文件。<br />
| [[YV12]]<br />
|-<br />
| [[DGDecode/LumaYV12|LumaYV12]] <br />
| LumaYV12() 输出 0->255 YUV 区间,而不是 CCIR-601 16->235 区间。<br />
| [[YV12]]<br />
|-<br />
| [[DGDecode/BlindPP|BlindPP]] <br />
| 任意视频源 deblock(去块)与/或 dering(去环)。<br />
| [[YV12]]、[[YUY2]]<br />
|-<br />
| [[DGDecode/Deblock|Deblock]] <br />
| Manao 的 H.264 deblock 滤镜。(v0.9.5)<br />
| [[YV12]]<br />
|-<br />
[[Category:源滤镜]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Template:PluginFilterTable&diff=905
Template:PluginFilterTable
2011-05-28T18:27:26Z
<p>XsLiDian:</p>
<hr />
<div><includeonly>{| style="height:100px; width:100%" border="1" cellpadding="4"<br />
!width=25% style="background:lavender"| 滤镜<br />
!width=60% style="background:lavender"| 描述<br />
!width=15% style="background:lavender"| 色彩格式<br />
|-<br />
</includeonly><noinclude><br />
定义标准滤镜表(插件的滤镜)的表头,包含在所有插件描述页面中。无参数。<br />
[[Category:插件模板]]<br />
[[Category:表格模板]]<br />
[[Category:原文模板]]<br />
</noinclude></div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Template:PluginFilterTable&diff=904
Template:PluginFilterTable
2011-05-28T18:26:38Z
<p>XsLiDian:以内容“<includeonly>{| style="height:100px; width:100%" border="1" cellpadding="4" !width=25% style="background:lavender"| 滤镜 !width=60% style="background:lavender"| 描...”创建新页面</p>
<hr />
<div><includeonly>{| style="height:100px; width:100%" border="1" cellpadding="4"<br />
!width=25% style="background:lavender"| 滤镜<br />
!width=60% style="background:lavender"| 描述<br />
!width=15% style="background:lavender"| 色彩格式<br />
|-<br />
</includeonly><noiclude><br />
定义标准滤镜表(插件的滤镜)的表头,包含在所有插件描述页面中。无参数。<br />
[[Category:插件模板]]<br />
[[Category:表格模板]]<br />
[[Category:原文模板]]<br />
</noinclude></div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Template:Filter&diff=903
Template:Filter
2011-05-28T18:24:18Z
<p>XsLiDian:重定向页面到Template:滤镜信息</p>
<hr />
<div>#REDIRECT[[Template:滤镜信息]]<br />
<noinclude>[[Category:原文模板]]</noinclude></div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=VirtualDub&diff=902
VirtualDub
2011-05-28T18:20:30Z
<p>XsLiDian:以内容“Avery Lee 编写的[http://www.virtualdub.org 原创开源视频捕获与处理工具],是 Avisynth 开发的灵感源泉。 您还应该尝试一款社区修改版...”创建新页面</p>
<hr />
<div>Avery Lee 编写的[http://www.virtualdub.org 原创开源视频捕获与处理工具],是 Avisynth 开发的灵感源泉。<br />
<br />
您还应该尝试一款社区修改版,名为 [[VirtualDubMod]]。它含有诸多有用的新功能,还内置了一款 AviSynth 脚本编辑器。<br />
最新版可在[http://sourceforge.net/projects/virtualdubmod/ 这里]找到,但目前似乎已经不再开发。<br />
<br />
[[Category:词汇]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=VirtualDubMod&diff=901
VirtualDubMod
2011-05-28T18:17:31Z
<p>XsLiDian:以内容“VirtualDubMod 是 Avery Lee 编写的著名视频编辑软件 VirtualDub 各流行修改版的整合。 VirtualDubMod 含诸多针对 AviSynth 的优秀改进。...”创建新页面</p>
<hr />
<div>VirtualDubMod 是 Avery Lee 编写的著名视频编辑软件 [[VirtualDub]] 各流行修改版的整合。<br />
<br />
VirtualDubMod 含诸多针对 AviSynth 的优秀改进。它能生成简单脚本,直接打开很多文件。它附带了一款高级编辑器,支持语法高亮与帮助。容易更新,一键重新加载脚本。avisynth 狂热爱好者的必备品。<br />
<br />
它还允许以“快速”重新压缩模式提供 [[YV12]] 数据,这项功能在 VirtualDub 中没有。<br />
<br />
主页位于:<br />
<br />
http://virtualdubmod.sourceforge.net/<br />
<br />
项目页面为:<br />
<br />
http://sourceforge.net/projects/virtualdubmod/<br />
<br />
[[Category:词汇]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=AviSynth_%E8%AF%AD%E6%B3%95&diff=900
AviSynth 语法
2011-05-28T18:02:28Z
<p>XsLiDian:重定向页面到语法</p>
<hr />
<div>#REDIRECT[[语法]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=%E8%AF%AD%E6%B3%95:%E5%86%85%E9%83%A8%E5%87%BD%E6%95%B0&diff=899
语法:内部函数
2011-05-28T18:01:51Z
<p>XsLiDian:</p>
<hr />
<div>除了[[:Category:内部滤镜|内部滤镜]],Avisynth还有相当多的其他(非Clip)内部函数。这些函数的输入和/或输出不是Clip,而是可以在脚本中使用的其他变量。大致分类如下:<br />
<br />
* [[布尔函数]]<br />
: 如果满足测试条件或不满足测试条件,则返回 true(真)或 false(假)。<br />
* [[控制函数]]<br />
: 实现流控制(载入脚本、检查参数、调整全局设置等)。<br />
* [[转换函数]]<br />
: 把变量转换成不同的类型。<br />
* [[多线程函数]]<br />
: 允许 AviSynth 使用多个线程处理滤镜。如果您有多个 cpu 或多核或超线程会很有用。该功能仍属实验性质。<br />
* [[数值函数]]<br />
: 对数值变量进行运算。<br />
* [[运行函数]]<br />
: 这些内部函数每帧都会计算一次。用在传递给运行滤镜([[ConditionalFilter]]、[[ConditionalFilter|ScriptClip]]、[[ConditionalFilter|FrameEvaluate]])的脚本里,这些函数可以返回每帧的信息。<br />
* [[脚本函数]]<br />
: 提供 AviSynth 脚本信息。<br />
* [[字符串函数]]<br />
: 提供字符串变量常用操作。<br />
* [[版本函数]]<br />
: 提供 Avisynth 版本信息。<br />
<br />
----<br />
返回 [[AviSynth 语法]]。<br />
<br />
[[Category:AviSynth 语法]]<br />
[[Category:脚本基础]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=AviSource&diff=898
AviSource
2011-05-28T17:54:56Z
<p>XsLiDian:</p>
<hr />
<div>'''AVISource / OpenDMLSource / AVIFileSource / WAVSource'''<br />
<br />
{{Template:Func4Def|AviSource(字符串 文件名 [, ... ], [布尔 audio &#61; true], [字符串 pixel_type &#61; YV12], [字符串 fourCC])|OpenDMLSource(字符串 文件名 [, ... ], [布尔 audio &#61; true], [字符串 pixel_type &#61; YV12], [字符串 fourCC])|AviFileSource(字符串 文件名 [, ... ], [布尔 audio &#61; true], [字符串 pixel_type &#61; YV12], [字符串 fourCC])|WavSource(字符串 文件名 [, ... ])}}<br />
<br />
本页翻译:lititude 校对:Dgwxx<br />
<br />
AVISource 把引号内的一个或几个文件名作为参数,用Video-for-Windows(即vfw)的[[AVI|AVIFile]]接口或AviSynth的内置OpenDML解码器(来自VirtualDub) 读取。这个滤镜可以读取有AVI文件处理程序的任何文件 。不仅包括[[AVI]]文件,也包括[[WAV]]文件,[[AVS]](AviSynth脚本) 文件,和VDR([[VirtualDub]] [[frameserver]] ) 文件。如果你用了多个文件名作为参数,那么这些剪辑就会用[[UnalignedSplice]]连接在一起。Audio参数是可选项,默认值是 true。<br />
<br />
AVISource滤镜会检查文件,确认类型并送到AVI文件处理器或是[[OpenDML]]中适当的地方。如果你的某个处理程序有问题,你也可以用OpenDMLSource和AVIFileSource滤镜,可以强制使用一个处理程序。两个处理程序都可以读取普通的(小于2GB)的AVI文件,但是只有OpenDML处理程序才能读取更大的AVI文件,只有AVIFile处理程序才能读取像WAV,VDR和AVS等其他文件类型。<br />
<br />
v2.04之前,WAVSource只是AVIFileSource的一个别名。在以后的版本中,WAVSource不再试图打开视频流的文件了。如果一个AVI文件中的视频流部分损坏而音频仍然可用,或你的系统不支持解码视频部分,这个滤镜会很有用的。<br />
<br />
从v2.04起,开始内置的支持ACM (Audio Compression Manager)音频(比如mp3-AVIs )。AVISource也不再能够打开WAV文件了,用WAVSource却可以做到。<br />
<br />
从v2.06起,pixel_type 参数(默认是YUY2)允许你选择解码器输出的颜色空间类型。有效的值是"YUY2", "RGB32" 和 "RGB24"。如果省略,AviSynth会用第一个解码器支持的格式(in the 顺序是: YUY2, RGB32, RGB24)。这个参数不影响无压缩格式(YUY2, RGB32 或 RGB24)的视频,因为那种情况下不用解码器。从v2.5开始,默认的pixel_type 参数改成了YV12。也就是说:如果你不指定什么参数,AVI就会试着输出YV12,如果不行的话就试YUY2,再不行就试RGB。<br />
<br />
由于一个DivX的bug(5.02或以前版本),在AviSynth v2.5中载入DivX剪辑有的时候颜色会出现错误(色度通道U和V是相反的)。你可以用SwapUV来改正。<br />
<br />
从v2.53起,AviSource也可以打开Type-1型DV-AVI(只是视频,不含音频)。<br />
<br />
从v2.55起,添加了一个参数[[fourCC]]。<br />
<br />
在用AVISource时,有些MJPEG/DV编码器不提供正确的CCIR 601适应的 输出。如果输入和输出的色彩格式不一样,这个问题就会出现。比如输入的色彩格式是YUY2,但输出的是RGB,反之也是这样。有两种方法可以解决:<br />
<br />
1)强制输出的输入的色彩格式一直。比如(如果输入的是RGB)<br />
AVISource("file.avi", pixel_type="RGB32")<br />
2)用ColorYUV滤镜修正<br />
AVISource("file.avi").ColorYUV(levels="PC->TV")<br />
<br />
一些值得参考的帖子<br />
[http://forum.doom9.org/showthread.php?s=&postid=330657 MJPEG codecs]<br />
[http://forum.doom9.org/showthread.php?s=&threadid=58110 DV codecs]<br />
<br />
===例子===<br />
AVISource("d:\capture.avi") # 提醒C语言程序员: 只用一个反斜线。<br />
AVISource("c:/capture/00.avi") # forward slashes work too<br />
WAVSource("f:\soundtrack.wav") # 这个工作<br />
WAVSource("f:/soundtrack.wav") # 这个也工作<br />
AVISource("cap1.avi","cap2.avi") # 和 AVISource("cap1.avi")+AVISource("cap2.avi")一样<br />
AVISource("cap.avi",false,"RGB32") # 禁用声音并要求输出RGB32颜色空间。 <br />
AviSource("cap.avi", false, fourCC="CDVC") # 用Canopus DV Codec打开一个DV剪辑<br />
AviSource("cap.avi", false, fourCC="XVID") # 用XviD解码器打开一个avi(比如是DivX3编码的) <br />
<br />
===更新===<br />
v2.55 加入fourCC选项<br />
<br />
[[Category:内部滤镜]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Template:Func4Def&diff=897
Template:Func4Def
2011-05-28T17:54:13Z
<p>XsLiDian:以内容“<span {{Template:Style_FuncDef_Inline}}>{{{1}}}</span><br/> <span {{Template:Style_FuncDef_Inline}}>{{{2}}}</span><br/> <span {{Template:Style_FuncDef_Inline}}>{{{3}}}<...”创建新页面</p>
<hr />
<div><span {{Template:Style_FuncDef_Inline}}>{{{1}}}</span><br/><br />
<span {{Template:Style_FuncDef_Inline}}>{{{2}}}</span><br/><br />
<span {{Template:Style_FuncDef_Inline}}>{{{3}}}</span><br/><br />
<span {{Template:Style_FuncDef_Inline}}>{{{4}}}</span><noinclude>[[Category:原文模板]]</noinclude></div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=User:XsLiDian/Cat_Internal_filters&diff=896
User:XsLiDian/Cat Internal filters
2011-05-28T17:50:29Z
<p>XsLiDian:</p>
<hr />
<div><includeonly>[[Category:内部滤镜]]</includeonly></div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Category:%E5%86%85%E9%83%A8%E6%BB%A4%E9%95%9C&diff=895
Category:内部滤镜
2011-05-28T17:49:32Z
<p>XsLiDian:以内容“内部滤镜列表。 Category:AviSynth 使用”创建新页面</p>
<hr />
<div>内部滤镜列表。<br />
<br />
[[Category:AviSynth 使用]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Splice&diff=894
Splice
2011-05-28T17:48:21Z
<p>XsLiDian:Splice移动到连接</p>
<hr />
<div>#REDIRECT [[连接]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=%E8%BF%9E%E6%8E%A5&diff=893
连接
2011-05-28T17:48:21Z
<p>XsLiDian:Splice移动到连接</p>
<hr />
<div>{{Template:Func2Def|AlignedSplice(clip ''剪辑1'', clip ''剪辑2'' [,...])|UnalignedSplice(clip ''剪辑1'', clip ''剪辑2'' [,...])}}<br />
<br />
AlignedSplice 与 UnalignedSplice 可将两段或更多视频剪辑相连合并。两滤镜的不同之处在于处理音轨的方式。UnalignedSplice 只简单连接音轨,而不考虑与视频同步。AlignedSplice 将按需切去首段音轨的末端部分或插入静音以确保第二段音轨仍与视频同步。<br />
<br />
若音轨本来就连续——例如合并 AVI_IO 捕获的文件时——应该使用 UnalignedSplice。这种情况下使用 AlignedSplice 的话,微小的时间调整错误也可能导致声音毛刺。<br />
<br />
AviSynth 的脚本语言提供了分别与 UnalignedSplice 和 AlignedSplice 等义的 + 与 ++ [[运算符]]。<br />
<br />
'''示例:'''<br />
<br />
# 合并分段捕获的文件为单段剪辑:<br />
UnalignedSplice([[AviSource]]("cap1.avi"),AviSource("cap2.avi"),AviSource("cap3.avi"))<br />
# 或:<br />
AviSource("cap1.avi") + AviSource("cap2.avi") + AviSource("cap3.avi")<br />
<br />
# 从一段剪辑提取三段场景并以新顺序合并<br />
AviSource("video.avi")<br />
[[Trim]](2000,2500) ++ Trim(3000,3500) ++ Trim(1000,1500)<br />
<br />
<br />
[[Category:内部滤镜]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=%E8%BF%90%E7%AE%97%E7%AC%A6&diff=892
运算符
2011-05-28T17:47:22Z
<p>XsLiDian:重定向页面到语法:运算符号</p>
<hr />
<div>#REDIRECT[[语法:运算符号]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=%E8%BF%9E%E6%8E%A5&diff=891
连接
2011-05-28T17:46:00Z
<p>XsLiDian:以内容“{{Template:Func2Def|AlignedSplice(clip ''剪辑1'', clip ''剪辑2'' [,...])|UnalignedSplice(clip ''剪辑1'', clip ''剪辑2'' [,...])}} AlignedSplice 与 UnalignedSp...”创建新页面</p>
<hr />
<div>{{Template:Func2Def|AlignedSplice(clip ''剪辑1'', clip ''剪辑2'' [,...])|UnalignedSplice(clip ''剪辑1'', clip ''剪辑2'' [,...])}}<br />
<br />
AlignedSplice 与 UnalignedSplice 可将两段或更多视频剪辑相连合并。两滤镜的不同之处在于处理音轨的方式。UnalignedSplice 只简单连接音轨,而不考虑与视频同步。AlignedSplice 将按需切去首段音轨的末端部分或插入静音以确保第二段音轨仍与视频同步。<br />
<br />
若音轨本来就连续——例如合并 AVI_IO 捕获的文件时——应该使用 UnalignedSplice。这种情况下使用 AlignedSplice 的话,微小的时间调整错误也可能导致声音毛刺。<br />
<br />
AviSynth 的脚本语言提供了分别与 UnalignedSplice 和 AlignedSplice 等义的 + 与 ++ [[运算符]]。<br />
<br />
'''示例:'''<br />
<br />
# 合并分段捕获的文件为单段剪辑:<br />
UnalignedSplice([[AviSource]]("cap1.avi"),AviSource("cap2.avi"),AviSource("cap3.avi"))<br />
# 或:<br />
AviSource("cap1.avi") + AviSource("cap2.avi") + AviSource("cap3.avi")<br />
<br />
# 从一段剪辑提取三段场景并以新顺序合并<br />
AviSource("video.avi")<br />
[[Trim]](2000,2500) ++ Trim(3000,3500) ++ Trim(1000,1500)<br />
<br />
<br />
[[Category:内部滤镜]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Template:Func2Def&diff=890
Template:Func2Def
2011-05-28T17:45:17Z
<p>XsLiDian:</p>
<hr />
<div><span {{Template:Style_FuncDef_Inline}}>{{{1}}}</span><br/><br />
<span {{Template:Style_FuncDef_Inline}}>{{{2}}}</span><noinclude>[[Category:原文模板]]</noinclude></div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Template:Func2Def&diff=889
Template:Func2Def
2011-05-28T17:41:59Z
<p>XsLiDian:以内容“<span {{Template:Style_FuncDef_Inline}}>{{{1}}}</span><noinclude>Category:原文模板</noinclude>”创建新页面</p>
<hr />
<div><span {{Template:Style_FuncDef_Inline}}>{{{1}}}</span><noinclude>[[Category:原文模板]]</noinclude></div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Supersampling&diff=888
Supersampling
2011-05-28T17:31:22Z
<p>XsLiDian:Supersampling移动到超采样</p>
<hr />
<div>#REDIRECT [[超采样]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=%E8%B6%85%E9%87%87%E6%A0%B7&diff=887
超采样
2011-05-28T17:31:22Z
<p>XsLiDian:Supersampling移动到超采样</p>
<hr />
<div>超采样指将源视频放大(upscale)到更高分辨率以便应用滤镜(部分滤镜有更多可操作像素时效果更佳)。滤镜应用后,超采样的视频将被缩小(downscale)到所需的输出分辨率。<br />
<br />
[[LimitedSharpen]] 是一个采用超采样的扩展脚本函数滤镜的例子。<br />
<br />
[[Category:词汇]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=%E8%B6%85%E9%87%87%E6%A0%B7&diff=886
超采样
2011-05-28T17:30:00Z
<p>XsLiDian:以内容“超采样指将源视频放大(upscale)到更高分辨率以便应用滤镜(部分滤镜有更多可操作像素时效果更佳)。滤镜应用后,超采样...”创建新页面</p>
<hr />
<div>超采样指将源视频放大(upscale)到更高分辨率以便应用滤镜(部分滤镜有更多可操作像素时效果更佳)。滤镜应用后,超采样的视频将被缩小(downscale)到所需的输出分辨率。<br />
<br />
[[LimitedSharpen]] 是一个采用超采样的扩展脚本函数滤镜的例子。<br />
<br />
[[Category:词汇]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Category:%E8%AF%8D%E6%B1%87&diff=885
Category:词汇
2011-05-28T17:25:46Z
<p>XsLiDian:以内容“常见术语词汇。”创建新页面</p>
<hr />
<div>常见术语词汇。</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=%E7%AC%AC%E4%B8%80%E4%B8%AA%E8%84%9A%E6%9C%AC&diff=884
第一个脚本
2011-05-28T17:23:22Z
<p>XsLiDian:+ AviFileSource、OpenDmlSource</p>
<hr />
<div>首先,您需要[http://sourceforge.net/project/showfiles.php?group_id=57023 下载]并安装 AviSynth。然后,让我们从最最简单的脚本开始入门:<br />
<br />
AviSource("c:\folder\myclip.avi")<br />
<br />
随便找个文本编辑器,把上面这行贴进去(别忘了把引号中的文件换成一个你自己电脑里的avi文件),保存为"myclip.avs"。现在,你就有了一个可以被绝大多数播放器播放的脚本文件,比如 Windows Media Player 6.4。[[VirtualDubMod]] 或是 [[VirtualDub]] 也可以打开它。他们会将您刚编辑的这个文本文件当做 AVI 文件处理。<br />
<br />
视频文件有很多类型,每种都有其特点。简而言之,您不能使用 [[AviSource]] MPEG 文件,因为它不是 AVI。您可以使用 [[DirectShowSource]] 打开MPEG文件(更好的处理MPEG文件的方式下面会提及)。<br />
<br />
DirectShowSource("c:\folder\myclip.mpg", fps=25)<br />
<br />
尽管您可以使用 [[DirectShowSource]] ,但是用 [[DGDecode]] 来处理MPEG文件更好。<br />
其原因在以下页面中有更加详细的说明:[[AviSource]]、[[DirectShowSource]]、[[AviSource|AviFileSource]]、[[AviSource|OpenDmlSource]]。<br />
<br />
等您掌握 [[Frameserver]] 的精髓之处,您就可以不只是将一个 avi 原封不动地输出来,而是对它进行各种处理。欢迎继续阅读[[滤镜简介]]入门,在您的脚本中加入一些滤镜。您也可以直接看[[AviSynth2.5核心滤镜|内置滤镜表]]。<br />
<br />
您还可以在[[脚本示例]]页面找到更多例子。<br />
<br />
[[Category:AviSynth 使用]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Category:AviSynth_%E4%BD%BF%E7%94%A8&diff=883
Category:AviSynth 使用
2011-05-28T17:21:08Z
<p>XsLiDian:以内容“关于 AviSynth 使用的页面。”创建新页面</p>
<hr />
<div>关于 AviSynth 使用的页面。</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=%E8%84%9A%E6%9C%AC%E7%A4%BA%E4%BE%8B&diff=882
脚本示例
2011-05-28T17:17:26Z
<p>XsLiDian:/* 例 6:将整个视频中的闪光画面写为图像 */</p>
<hr />
<div>这里有一些 AviSynth 脚本示例,它们是按复杂程度分类的。首先下载并安装 AviSynth,然后将这些脚本以扩展名“.avs”保存,这样就可以在您最喜欢的视频播放器或编辑器中载入了。<br />
<br />
== 简单的示例 ==<br />
<br />
=== 例 1:剪辑片段 ===<br />
<code><br />
# 这是注释。<br />
# 注释行需以“#”符号开头,它们将被 AviSynth 忽略。<br />
<br />
# 载入与本脚本同目录的文件“somevideo.avi”<br />
[[AviSource|AVISource]]("somevideo.avi")<br />
<br />
# Trim 指定要'''保留'''的帧。<br />
# 下面几行保留区间 [0, 12000]、[20000, 32000]、[44000, 结尾] 的帧<br />
# 并将它们连接起来,也就是移除区间<br />
# [12001, 19999] 与 [32001, 43999] 的帧。<br />
#<br />
# 注意:闭区间 [a, b] 代表从 a 到 b 的所有帧,<br />
# 包括 a 与 b。<br />
#<br />
[[Trim]](0, 12000) ++ Trim(20000, 32000) ++ Trim(44000, 0)<br />
</code><br />
<br />
=== 例 2:调整画面尺寸 ===<br />
<code><br />
AVISource("somevideo.avi")<br />
<br />
# 调整视频帧的分辨率为 320x240<br />
[[Resize|LanczosResize]](320, 240)<br />
</code><br />
<br />
=== 例 3:混入音频 ===<br />
<code><br />
video = AVISource("somevideo.avi")<br />
<br />
# 也可以载入 wav 文件<br />
audio = [[AviSource|WAVSource]]("music.wav")<br />
<br />
# 将视频轨与音频轨混到一起<br />
[[AudioDub]](video, audio)<br />
</code><br />
<br />
=== 例 4:调节亮度、除噪、淡入淡出 ===<br />
<code><br />
AVISource("somevideo.avi")<br />
<br />
# TemporalSoften 是众多降噪滤镜之一<br />
[[Soften|TemporalSoften]](4, 4, 8, scenechange=15, mode=2)<br />
<br />
# 调高视频的 gamma 系数(与亮度相关)<br />
[[Levels]](0, 1.2, 255, 0, 255)<br />
<br />
# 开头 15 帧由黑色淡入<br />
[[Fade|FadeIn]](15)<br />
<br />
# 最后 15 帧淡出至黑色<br />
[[Fade|FadeOut]](15)<br />
</code><br />
<br />
== 更复杂的示例 ==<br />
<br />
=== 例 5:poptones 的 [[Layer]] 用法示例 ===<br />
<code><br />
[[LoadPlugin]]("MPEG2DEC.dll") <br />
clip1 = [[Mpeg2Source]]("combine.d2v").[[Crop]](16, 0, 688, 576).ConvertToRGB32<br />
noise = AviSource("noise.avs").[[ConvertToRGB32]]<br />
clip1 = clip1.[[Layer]](noise, "add", 8, 0, 0, use_chroma=true)<br />
<br />
clip2 = clip1.[[Trim]](125766, 0)<br />
clip = clip1.Layer(clip2, "add", 128, 0, 0, use_chroma=true).Trim(9180, \<br />
86780).[[AssumeFrameBased]].[[ComplementParity]].[[Bob]]<br />
<br />
# 建立 logo 遮罩层<br />
logosrc = AviSource("nologo.avi").[[Weave]].ConvertToRGB32.[[Resize|BilinearResize]](59, 13)<br />
masklogo = AviSource("whitelogo.avi").ConvertToRGB32<br />
logo = logosrc.[[Layer|Mask]](masklogo).BilinearResize(60, 27)<br />
<br />
# 现在把白色的丑 logo 盖起来...<br />
clip = clip.Layer(logo, "add", 255, 582, 36, use_chroma=true)<br />
<br />
blur = clip.[[GeneralConvolution]](0,<br />
"10 10 10 10 10 <br />
10 10 10 10 10<br />
10 10 16 10 10<br />
10 10 10 10 10<br />
10 10 10 10 10")<br />
# Sobel 边界侦测——矩阵的力量!<br />
hor = clip.GeneralConvolution(0,<br />
"-1 0 1<br />
-2 0 2<br />
-1 0 1")<br />
vert = clip.GeneralConvolution(0,<br />
"-1 -2 -1<br />
0 0 0<br />
1 2 1")<br />
edgemask = hor.Layer(vert,"lighten",255,0,0,1)<br />
<br />
# 现在锐化模糊图像的边缘...<br />
clip = clip.Mask(edgemask)<br />
clip = blur.Layer(clip, "add", 128, 0, 0)<br />
<br />
return clip<br />
</code><br />
<br />
=== 例 6:将整个视频中的闪光画面写为图像 ===<br />
==== params.avs ====<br />
<br />
<code><br />
filename="somefile.avi"<br />
logfile="output.txt" <br />
path="P:\ath\To\Files\" <br />
lumathresh=80 <br />
imageprefix="prefix_" <br />
</code><br />
<br />
==== FindFlash.avs ====<br />
<code><br />
Import("Params.avs")<br />
AviSource(path+filename).ConvertToYV12 <br />
WriteFileIf(path+logfile, "(AverageLuma>lumathresh) && (YDifferenceToNext() > 0)", "current_frame","space", "current_frame")<br />
</code><br />
<br />
==== SaveFlash.avs ====<br />
<code><br />
Import("Params.avs")<br />
AviSource(path+filename) <br />
ScriptClip(""" ImageWriter(path+imageprefix,myvar, myvar, "bmp",false) """)<br />
ConditionalReader(path+logfile, "myvar", false) <br />
</code><br />
<br />
== 参阅 ==<br />
<br />
* 请参阅 AviSynth 社群编撰的 [[外部插件|共享功能(以及外部插件)]]<br />
<br />
[[Category:AviSynth 使用]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=%E8%84%9A%E6%9C%AC%E8%8C%83%E4%BE%8B&diff=881
脚本范例
2011-05-28T17:14:06Z
<p>XsLiDian:重定向页面到脚本示例</p>
<hr />
<div>#REDIRECT[[脚本示例]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=AviSynth2.5%E5%88%9D%E6%AD%A5%E4%BA%86%E8%A7%A3&diff=880
AviSynth2.5初步了解
2011-05-28T17:13:14Z
<p>XsLiDian:+ Category:AviSynth 使用</p>
<hr />
<div>===视频编辑===<br />
<br />
基本上来说,AviSynth是这样工作的:首先,你会创建一个包含命令的简单文本文档,它叫做脚本。这些命令代表若干个你想要的视频以及想要运行的滤镜。然后,当你运行一个视频程序,例如VirtualDub,并且打开刚才的脚本时,AviSynth就会运作起来。它会加载脚本中的视频,并且运行指定的滤镜,然后将结果输出给视频程序。然而视频程序并不知道AviSynth在后台运行,而是以为自己在直接读取一个硬盘上的AVI文件。<br />
<br />
AviSynth2增加了很多新功能,为了突出这些功能(尤其因为他们在以前的文章中都没有被完好阐述过),我们在这篇文章中把它们标记为<font color="#F000F0">v2</font>''。<br />
<br />
由于v2.5在内核上做了较大的升级,请在使用前仔细阅读AviSynth v2.5。相关升级都被标记为<font color="#F000F0">v2.5</font>。<br />
<br />
====线性编辑:====<br />
<br />
在AVISynth里能做的最简单的事就好比在VirtualDub里的编辑视频。因为这些语句都太好写了,不需要担心变量以及复杂的表达式。<br />
<br />
作为测试,请先创建一个文件命名为“test.avs”,然后输入如下一行文字:<br />
<br />
Version<br />
<br />
现在用Windows Media Player或其他来打开这个文件,你会看到一个10秒钟的写有AVS版本号及版权信息内容的视频片段。<br />
<br />
Version叫做“源滤镜”,这意味着它的作用是生成片段而非修改。在AVISynth脚本中第一个命令永远是源滤镜。<br />
<br />
现在加入第二句,让它看起来是这样:<br />
<br />
Version<br />
ReduceBy2<br />
<br />
在Media Player中再次打开这个文件,你应该还可以看到那些版权信息,不过只有以前的一半大小。'''ReduceBy2'''是一个“变换滤镜”,它会以某种方式改变原有的视频片段。你可以连续使用多个变换滤镜就好像在VirtualDub里一样。<br />
<br />
让我们再加一句使视频变成淡出至黑色的结尾,它应该是这个样子:<br />
<br />
Version<br />
ReduceBy2<br />
FadeOut(10)<br />
<br />
现在再次打开文件,片段的前9秒应该是一样的,而最后一秒会平滑的淡出到黑色。<br />
<br />
FadeOut滤镜需要一个数值,用来代表淡出所需的帧数。<br />
<br />
渐变开始之前的时间太长了,所以我们需要修剪视频的起始部分以减少等待的时间。<br />
<br />
我们扔掉前120帧,保留120-150帧:<br />
<br />
Version<br />
ReduceBy2<br />
# 砍掉前119帧,保留120-150帧<br />
# (AVISynth的起始帧数是从0算起的)<br />
Trim(120,150)<br />
FadeOut(10)<br />
<br />
在这个例子中,我们第一次使用了注释。<br />
<br />
注视以”#”开头,一直到最后一个字母结束,是被AVISynth完全忽视掉的。Trim滤镜需要两个数值,以逗号“,”(英文半角,AVS脚本内一切皆为英文半角)分开,两个数分别代表视频中要保留的起始帧和中止帧,若最后一帧输入的是0,就代表到视频片段的最后一帧。所以如果要砍掉前119帧,可以输入Trim(120,0)。<br />
<br />
像这样把帧数仔细记录真是一件麻烦事,在VirtualDub等这样的程序里直接打开一个部分完成的脚本就方便多了,它会把帧数都为你显示出来。你还可以用ShowFrameNumber滤镜,它会把帧数直接打在视频上。<br />
<br />
其实实际使用中在AVISynth里有一个比Version实用很多的源滤镜,就是AVISource,它用来从硬盘中读取一个AVI(或其它视频格式)的文件。如果你手头上已经有了一个AVI文件,那么你可以试试把这些相同的滤镜加到你的文件上。<br />
<br />
AVISource("d:\capture.avi") # 这里要写你实际的路径和文件<br />
ReduceBy2<br />
FadeOut(15)<br />
Trim(120,0)<br />
<br />
只有单独一行AVISource命令的脚本可以为只支持小于2GB文件的视频程序提供大于2GB文件的支持。<br />
<br />
----<br />
<br />
====非线性编辑:====<br />
<br />
好了我们到了有趣的部分了,建立一个有如下语句的AVS文件:<br />
<br />
StackVertical(Version, Version)<br />
<br />
打开它,结果是这样:输出的视频中有两行一模一样的版本信息,一行在另一行之上。<br />
<br />
StackVertical不需要数值或是字符串作为参数,而是需要视频剪辑。在以上语句当中Version滤镜被两次调用,每一次都返回给StackVertical一个版本信息的视频,于是StackVertical把它们拼在一起(不管那视频从哪儿来的)。<br />
<br />
UnalignedSplice也是有用的此类滤镜之一,它可以将视频剪及首尾相接,这段语句就是将3段视频(例如可能是AVI_IO生成的)读取并连接在一起:<br />
<br />
UnalignedSplice(AVISource("d:\capture.00.avi"), \<br />
AVISource("d:\capture.01.avi"), \<br />
AVISource("d:\capture.02.avi"))<br />
<br />
StackVertical和UnalignedSplice都可以接受少到两个多到六七十个的视频。你也可以用加号“+”代替UnalignedSplice,作为速记。<br />
<br />
比如说这段语句,与上段语句的功能是一样的:<br />
<br />
AVISource("d:\capture.00.avi") + \<br />
AVISource("d:\capture.01.avi") + \<br />
AVISource("d:\capture.02.avi")<br />
<br />
现在假设你的一个程序捕捉到的视频存到了多个AVI片段里,但音频又存到了一个单独的WAV文件里,你能把他们重新组合在一起么?你说呢:<br />
<br />
AudioDub(AVISource("d:\capture.00.avi") + \<br />
AVISource("d:\capture.01.avi") + \<br />
AVISource("d:\capture.02.avi"), \<br />
WAVSource("d:\audio.wav"))<br />
<br />
----<br />
<br />
===语法===<br />
<br />
====表达====<br />
<br />
一个AVISynth的脚本当中会有形如以下的陈述:<br />
<br />
variable_name = expression (变量名 = 表达)<br />
<br />
在这个例子当中expression被求值并将结果赋予variable_name<br />
<br />
还有一个很重要的省略形式:<br />
<br />
expression<br />
<br />
以上语句当中expression被求值并将结果赋予一个特殊的视频片段变量last。<br />
<br />
功能与以下语句相同:<br />
<br />
last = expression<br />
<br />
结尾通常是这样:<br />
<br />
return expression<br />
<br />
在这里expression被求值并用作了这个脚本的返回值,也就是说,若这个AVS文件被打开,视频程序看到的仅是这个值的视频片断。<br />
<br />
若返回值没有被特意指派,那么last的值就会被用作返回值。<br />
<br />
基本的调用函数的表达如下:<br />
<br />
Function(args) 函数(参数)<br />
<br />
视频剪辑函数从来都是创建一段新视频而不更改现有视频。<br />
<br />
args是一串以逗号“,”分隔开的函数参数列表,这个列表可以是空的(意味着所有参数或者部分参数可选)。<br />
<br />
如果滤镜函数的第一个参数是一个视频剪辑,并且这个视频剪辑并没有被提供,那么将用特殊变量last来替代。<br />
<br />
AVISynth的滤镜可以识别指定参数(arg=expression),它们之间的顺序可以随意调换。没有被指定的参数将使用默认值,这会使某些滤镜用起来简单些。<br />
<br />
你可以写:<br />
<br />
Subtitle("Hello, World!", text_color=$00FF00, x=100, y=200)<br />
<br />
而不用这样:<br />
<br />
Subtitle("Hello, World!", 100, 200, 0, 999999, "Arial", 24, $00FF00)<br />
<br />
<br />
[[Category:AviSynth 使用]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=%E5%A4%96%E9%83%A8%E6%8F%92%E4%BB%B6&diff=879
外部插件
2011-05-28T17:11:26Z
<p>XsLiDian:重定向页面到AviSynth2.5扩展滤镜</p>
<hr />
<div>#REDIRECT [[AviSynth2.5扩展滤镜]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=%E7%AC%AC%E4%B8%80%E4%B8%AA%E8%84%9A%E6%9C%AC&diff=878
第一个脚本
2011-05-28T17:11:00Z
<p>XsLiDian:+ Category:AviSynth 使用</p>
<hr />
<div>首先,您需要[http://sourceforge.net/project/showfiles.php?group_id=57023 下载]并安装 AviSynth。然后,让我们从最最简单的脚本开始入门:<br />
<br />
AviSource("c:\folder\myclip.avi")<br />
<br />
随便找个文本编辑器,把上面这行贴进去(别忘了把引号中的文件换成一个你自己电脑里的avi文件),保存为"myclip.avs"。现在,你就有了一个可以被绝大多数播放器播放的脚本文件,比如 Windows Media Player 6.4。[[VirtualDubMod]] 或是 [[VirtualDub]] 也可以打开它。他们会将您刚编辑的这个文本文件当做 AVI 文件处理。<br />
<br />
视频文件有很多类型,每种都有其特点。简而言之,您不能使用 [[AviSource]] MPEG 文件,因为它不是 AVI。您可以使用 [[DirectShowSource]] 打开MPEG文件(更好的处理MPEG文件的方式下面会提及)。<br />
<br />
DirectShowSource("c:\folder\myclip.mpg", fps=25)<br />
<br />
尽管您可以使用 [[DirectShowSource]] ,但是用 [[DGDecode]] 来处理MPEG文件更好。<br />
其原因在以下页面中有更加详细的说明:[[AviSource]], [[DirectShowSource]]。<br />
<br />
等您掌握 Frameserver 的精髓之处,您就可以不只是将一个 avi 原封不动地输出来,而是对它进行各种处理。欢迎继续阅读[[滤镜简介]]入门,在您的脚本中加入一些滤镜。您也可以直接看[[AviSynth2.5核心滤镜|内置滤镜表]]。<br />
<br />
您还可以在[[脚本示例]]页面找到更多例子。<br />
<br />
[[Category:AviSynth 使用]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=%E6%BB%A4%E9%95%9C%E7%AE%80%E4%BB%8B&diff=877
滤镜简介
2011-05-28T17:10:23Z
<p>XsLiDian:以内容“编写第一个脚本时,您至少已经见到 AviSource。有认真阅读的话,可能还见到了它的同类 DirectShowSource。 只有先加载视...”创建新页面</p>
<hr />
<div>编写[[第一个脚本]]时,您至少已经见到 [[AviSource]]。有认真阅读的话,可能还见到了它的同类 [[DirectShowSource]]。<br />
只有先加载视频,各种滤镜才能有用武之地!<br />
<br />
与之前一样,根据片源,可能需要 [[Crop]](裁剪)视频,去掉黑边或噪点太多难以补救的区域。<br />
类似地,[[Resize|BicubicResize]](缩减采样以减小文件尺寸可采用 [[Resize|BilinearResize]])也是很常见的人物,尽管它们通常只在脚本尾端出现,除非您要进行[[supersampling|超采样]]。<br />
<br />
合并与编辑不同片段需要运用 [[Splice]] (亦作 '+') 与 [[Trim]];要漂亮些也容易掌握:[[Dissolve]](淡化)。<br />
<br />
来自图形世界的用户可能会认识下面这批滤镜:[[Levels]] 处理亮度/对比度/灰度,而 [[RgbAdjust]] 与 [[Tweak]] 可分别针对 [[RGB]] 与 [[YUV]] 颜色空间进行特定颜色的修正。<br />
<br />
您可能会很快就遇到交错视频。<br />
这里不细述,但确实有些网站有涉及:[http://www.lurkertech.com/lg/fields/fields.html Lurker's Guide] 与 [http://100fps.com 100fps.com]。<br />
用 PC 上的硬件与软件输入并处理基于场的视频并不科学,所以您很快就会熟悉 [[SeparateFields]](分场)与 [[Weave]](并场)滤镜。<br />
现在像 [[Trim]] 这些老朋友也能直接处理场了。<br />
根据需要,[[DoubleWeave]](交叉并场)与 [[SelectEvery]](隔取)有时也是重新合并场为帧的强大工具。<br />
<br />
对交错有所了解后便会发现,不处理这些场太对不起能将它们合并为帧(逐行扫描显示器上通常必须这样)的宝贝滤镜了。<br />
该了解下凡交错滤镜了:有一款 [[Bob]] 滤镜,但如之前的“100fps”网站上所说的,那只是冰山一角。<br />
要真正选对,应该去看看 Avisynth [[外部插件|插件]]——[[TomsMoComp]] 口碑颇好,但近期出现的一些滤镜更厉害。<br />
<br />
但别急,视频业界已在谋划让交错视频更为复杂:放映(或其他途径分发给 NTSC 受众,如通过 DVD) 24fps 的电影,会“胶转磁”(telecine)为 30fps。<br />
[[Pulldown]] 滤镜有详细描述,能修正此类基本问题,但现实中 pulldown 标记可能会被错误编码、不正确编辑,片源帧率多变——总之,重组逐行扫描视频时能有一款智能的[[外部插件|插件]],如 Donald Graft 的 [http://neuron2.net/decomb/decombnew.html Decomb] 将非常有用。<br />
<br />
到这里,您已将交错的谜团逐一解开;接下来呢?<br />
好吧,如果您的视频采集自模拟源,可能需要除噪一下。<br />
标准滤镜有 [[Soften|SpatialSoften]] 与 [[Soften|TemporalSoften]];需要一段时间熟悉。<br />
还有不少受欢迎的过滤[[外部插件|插件]],允许更好地控制,但稍有些复杂:比如说可以试试适合新手选择的这款 [[SmootherHiQ]]。<br />
<br />
本次常见滤镜的观光终点站是高级滤镜:视频大虾信手拈来的 [[Layer]]、[[Layer|Mask]]、[[Layer|ColorKeyMask]],[[GeneralConvolution]]、[[Overlay]] 与 [[Animate]],建议新手先阅读一些创建合成效果、除噪等的示例脚本。<br />
<br />
[[Category:AviSynth 使用]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Mmg&diff=291
Mmg
2010-08-01T06:19:27Z
<p>XsLiDian:以内容'''(作者:Moritz Bunkus;译者:~~~;复制自 [http://greatdreamers.cn/projects/mkvtoolnix/doc/mmg.html mmg])'' ==名称== mmg — mkvmerge 的 GUI,包含章…'创建新页面</p>
<hr />
<div>''(作者:Moritz Bunkus;译者:[[User:XsLiDian|XsLiDian]];复制自 [http://greatdreamers.cn/projects/mkvtoolnix/doc/mmg.html mmg])''<br />
<br />
==名称==<br />
<br />
mmg — mkvmerge 的 GUI,包含章节编辑器和头部字段编辑器<br />
<br />
==概要==<br />
<br />
<code class="command">mmg <nowiki>[[ {--edit-headers} {文件名.mkv} ] | [配置文件.mmg] | [源文件.扩展名]]</nowiki></code><br />
<br />
==说明==<br />
<br />
mmg 是 mkvmerge 的 GUI,它基于 wxWindows™。它提供了 mkvmerge 所有选项的简易使用途径。所有配置(例如源文件,轨道选项等)都可以保存和复原。它还包含了可以读取类似 OGM 中的简单章节与 XML 格式章节,输出 XML 格式章节文件,甚至还可以从 Matroska™ 文件中读取章节,也可以将章节直接写入 Matroska™ 文件。它还包含了一个头部编辑器,可用于快速修改现有 Matroska™ 文件的属性,且无须进行完整的重新混流。<br />
<br />
mmg 需要的选项很少。最可能的情况是附带一个文件名启动它。如果文件的扩展名为 '<code class="literal">.mmg</code>',则该文件将被当作配置文件处理,mmg 启动时将载入其中的配置。如果文件名包含其他扩展名,则将被理解为即将添加的输入文件名。<br />
<br />
第二个操作模式是附带选项 <code class="option">--edit-headers</code> 与一个文件名调用。这将使 mmg 运行它的头部字段编辑器并载入指定文件。<br />
<br />
另有完整的 [[mkvmerge GUI 指南|HTML 格式的文档]]。<br />
<br />
==参阅==<br />
<br />
* [[mkvmerge]]<br />
* [[mkvextract]]<br />
* [[mkvinfo]]<br />
* [[mkvpropedit]]]<br />
<br />
==网络==<br />
<br />
最新版本总可以在 [http://www.bunkus.org/videotools/mkvtoolnix/ MKVToolNix 主页] 找到。</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Mkvpropedit&diff=290
Mkvpropedit
2010-08-01T06:15:11Z
<p>XsLiDian:以内容'''(作者:Moritz Bunkus;译者:~~~;复制自 [http://greatdreamers.cn/projects/mkvtoolnix/doc/mkvpropedit.html mkvpropedit])'' ==名称== mkvpropedit — 在…'创建新页面</p>
<hr />
<div>''(作者:Moritz Bunkus;译者:[[User:XsLiDian|XsLiDian]];复制自 [http://greatdreamers.cn/projects/mkvtoolnix/doc/mkvpropedit.html mkvpropedit])''<br />
<br />
==名称==<br />
<br />
mkvpropedit — 在不进行完整的重新混流的情况下修改现有 Matroska™ 文件的属性<br />
<br />
==概要==<br />
<br />
<code class="command">mkvpropedit [选项] {源文件名} {操作}</code><br />
<br />
==说明==<br />
<br />
此程序可分析现有 Matroska™ 文件,并修改其部分属性。然后它将将变更写入现有文件。可修改的属性包括剪辑信息元素(如标题)和轨道头部(如语言代码、'默认轨' 标记或轨道名称)。<br />
<br />
选项:<br />
<br />
; <code class="option">-l</code>, <code class="option">--list-property-names</code><br />
: 列出所有已知的可编辑的属性名称、它们的类型(字符串型、整数型、布尔型等等)及简短说明。程序随后将退出执行。因此不必提供 ''<code>source-filename</code>'' 参数。<br />
; <code class="option">-p</code>, <code class="option">--parse-mode</code> ''<code>模式</code>''<br />
: 设置解析模式。参数 '''<code>模式</code>''' 可以为 '<code class="literal">fast(快速)</code>'(此项为默认值)或 '<code class="literal">full(完整)</code>'。'<code class="literal">fast(快速)</code>'模式不解析整个文件,而是使用元定位元素确定源文件中所需元素的位置。99% 的情况下这就足够了。但如果碰到不含元定位元素或者元定位元素损坏的文件,用户可能得考虑 '<code class="literal">full(完整)</code>' 解析模式。完整扫描文件可能要花费几分钟,而快速扫描只需要几秒钟。<br />
<br />
操作:<br />
<br />
; <code class="option">-e</code>, <code class="option">--edit</code> ''<code>选择器</code>''<br />
: 设置后续的 添加、设置 或 删除 操作所针对的 Matroska™ 文件区域(即剪辑信息或某个轨道的头部)。此选项可多次使用,以同时修改多个元素。关于完整的语法说明请参见关于 [[mkvpropedit#编辑选择器|编辑选择器]] 的段落。<br />
; <code class="option">-a</code>, <code class="option">--add</code> ''<code>名称</code>''<nowiki>=</nowiki>''<code>数值</code>''<br />
: 添加名为 ''<code>名称</code>''、值为 ''<code>数值</code>'' 的属性。即使已存在这样的属性,也将执行添加属性操作。注意大多数属性是唯一的,不能出现多个。<br />
; <code class="option">-s</code>, <code class="option">--set</code> ''<code>名称</code>''<nowiki>=</nowiki>''<code>数值</code>''<br />
: 设置所有名为 ''<code>名称</code>'' 的属性的数值为 ''<code>数值</code>''。如果不存在这样的属性,则将添加该属性。<br />
; <code class="option">-d</code>, <code class="option">--delete</code> ''<code>名称</code>''<br />
: 删除所有名为 ''<code>名称</code>'' 的属性。注意部分属性是必需的,不能删除。<br />
<br />
其他选项:<br />
<br />
; <code class="option">--command-line-charset</code> ''<code>字符集</code>''<br />
: 设定在命令行给出的字符串的字符集,用于转为其他字符集。默认为系统当前区域设置中所给定的字符集。<br />
; <code class="option">--output-charset</code> ''<code>字符集</code>''<br />
: 设置输出的字符串应被转换到何种字符集。默认为系统当前区域设置中所给定的字符集。<br />
; <code class="option">-r</code>, <code class="option">--redirect-output</code> ''<code>文件名</code>''<br />
: 将所有信息写入文件 ''<code>文件名</code>'' 而不是输出到命令行。 尽管该操作可以用输出重定向轻松实现,但在某些情况下还需要靠它:如当终端在写入文件之前重新解释(覆盖输出)时。将优先使用通过 <code class="option">--output-charset</code> 设定的字符集。<br />
; <code class="option">--ui-language</code> ''<code>语言代码</code>''<br />
: 强制使用语言代码为 ''<code>语言代码</code>'' 的翻译(如 '<code class="literal">de_DE</code>' 对应德文翻译)。使用 <code class="varname">LANG</code>, <code class="varname">LC_MESSAGES</code> 及 <code class="varname">LC_ALL</code> 这些环境变量更好。如果在 ''<code>语言代码</code>'' 处输入 '<code class="literal">list</code>',mkvextract 将输出可用翻译列表。<br />
; <code class="option">-v</code>, <code class="option">--verbose</code><br />
: 使输出信息更详尽,且每当读取到重要的 Matroska™ 元素时就将其显示。<br />
; <code class="option">-h</code>, <code class="option">--help</code><br />
: 显示用法信息并退出。<br />
; <code class="option">-V</code>, <code class="option">--version</code><br />
: 显示版本信息并退出。<br />
; <code class="option">@</code>选项文件<br />
: 从文件 ''<code>选项文件</code>'' 中读取额外的命令行参数。首个非空白字符为井号 ('<code class="literal"><nowiki>#</nowiki></code>') 的行将被当作注释对待,在处理过程中将被忽略。各行开头与结尾的空白将被除去。各行必须恰好含有一个选项。没有元字符转义。命令行 ''''mkvpropedit 源.mkv --edit track:a2 --set name=注释'''' 可以转换为下述选项文件:<br />
<pre> # 修改 源.mkv<br />
源.mkv<br />
#编辑第二条音频轨<br />
--edit<br />
track:a2<br />
# 并设置标题为 '注释'<br />
--set<br />
title=注释</pre><br />
<br />
==编辑选择器==<br />
<br />
<code class="option">--edit</code> 选项设置后续的 添加, 设置 或 删除 操作所影响的 Matroska™ 文件区域(剪辑信息或者特定轨道的头部)。在出现另一个 <code class="option">--edit</code> 选项之前,此选项将一直有效。此选项的参数就叫做编辑选择器。<br />
<br />
===剪辑信息===<br />
<br />
可以通过这三个词中的任意一个选择剪辑信息: '<code class="literal">info</code>'、'<code class="literal">segment_info</code>' 或 '<code class="literal">segmentinfo</code>'。剪辑信息包含的属性包括剪辑标题、剪辑 UID 等。<br />
<br />
===轨道头部===<br />
<br />
可用于选择轨道头部的选择器稍显复杂:所有以 '<code class="literal">track:</code>' 开头的变体。轨道头部属性包括如语言代码、'默认轨' 标记、轨道名称等属性。<br />
<br />
; <code class="option">track:</code>''<code>n</code>''<br />
: 如果参数 ''<code>n</code>'' 为数字,则将选择第 ''<code>n</code>'' 条轨道。轨道顺序与 mkvmerge 的 <code class="option">--identify</code> 选项所输出的相同。<br />
; <code class="option">track:</code>''<code>t</code>''''<code>n</code>''<br />
: 如果参数以字母 ''<code>t</code>'' 后接 ''<code>n</code>'' 开头,则将选择选定轨道类型中的第 ''<code>n</code>'' 条轨道。轨道类型参数 ''<code>t</code>'' 必须为下述四个字母中的一个: '<code class="literal">a</code>' 代表音频轨道,'<code class="literal">b</code>' 代表按钮轨道,'<code class="literal">s</code>' 代表字幕轨道,'<code class="literal">v</code>' 代表视频轨道。轨道顺序与 mkvmerge 的 <code class="option">--identify</code> 选项所输出的相同。<br />
; <code class="option">track:</code><nowiki>=</nowiki>''<code>uid</code>''<br />
: 如果参数以 '<code class="literal"><nowiki>=</nowiki></code>' 后接 ''<code>uid</code>'' 开头,则将选择轨道 UID 元素等于此 ''<code>uid</code>'' 的轨道。轨道 UID 可通过 mkvinfo 获取。<br />
; <code class="option">track:</code>@''<code>数字</code>''<br />
: 如果参数以 '<code class="literal">@</code>' 后接 ''<code>数字</code>'' 开头,则选择轨道号元素等于 ''<code>数字</code>'' 的轨道。轨道号可以通过 mkvinfo 获取。<br />
<br />
===注===<br />
<br />
由于轨道编辑选择器的特性,一些选择器所匹配的轨道头部可能是相同的。在此情况下,这些编辑选择器的所有操作将被按照在命令行给出的顺序合并运行。<br />
<br />
==示例==<br />
<br />
下面的示例将编辑一个名为 '<code class="literal">电影.mkv</code>' 的文件。示例中将设置剪辑标题并修改一条音频轨和一条字幕轨的语言代码。附注,本示例可以简写,即省去 <code class="option">--edit</code> 选项,因为在第一个 <code class="option">--edit</code> 选项之前的所有选项默认编辑的就是剪辑信息元素。<br />
<br />
$ mkvpropedit 电影.mkv --edit info --set "title=影片" --edit track:a1 --set language=fre --edit track:a2 --set language=ita<br />
<br />
第二个示例,将 '默认轨标记' 从第一条字幕轨移除并设置到第二条字幕轨上。注意 mkvpropedit 与 mkvmerge 不同,不会在将另一个轨道的 '默认轨标记'设为 '1' 的时候自动将其他轨道的标记设为 '0'。<br />
<br />
$ mkvpropedit 影片.mkv --edit tracks:s1 --set flag-default=0 --edit tracks:s2 --set flag-default=1<br />
<br />
==退出代码==<br />
<br />
mkvpropedit 退出时会返回以下三个退出代码中的一个:<br />
<br />
* <code class="constant">0</code> -- 此退出代码说明已成功完成修改。<br />
* <code class="constant">1</code> -- 这种情况下 mkvpropedit 至少输出了一条警告信息,但修改并未因之中止。 警告信息以文字 '<code class="literal">警告:</code>' 为前缀。根据问题的不同,生成的文件可能是好的,也可能不是。 强烈建议用户检查警告信息以及生成的文件。<br />
* <code class="constant">2</code> -- 此退出代码用于错误发生之后。 mkvpropedit 在输出错误信息后即中断处理。错误信息可能是错误的命令行参数,也可能是损坏文件的读取/写入错误。<br />
<br />
==参阅==<br />
<br />
* [[mkvmerge]]<br />
* [[mkvinfo]]<br />
* [[mkvextract]]<br />
* [[mmg]]<br />
<br />
==网络==<br />
<br />
最新版本总可以在 [http://www.bunkus.org/videotools/mkvtoolnix/ MKVToolNix 主页] 找到。</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Mkvextract&diff=289
Mkvextract
2010-08-01T06:06:45Z
<p>XsLiDian:以内容'''(作者:Moritz Bunkus;译者:~~~;复制自 [http://greatdreamers.cn/projects/mkvtoolnix/doc/mkvextract.html mkvextract])'' ==名称== mkvextract — 将 Mat…'创建新页面</p>
<hr />
<div>''(作者:Moritz Bunkus;译者:[[User:XsLiDian|XsLiDian]];复制自 [http://greatdreamers.cn/projects/mkvtoolnix/doc/mkvextract.html mkvextract])''<br />
<br />
==名称==<br />
<br />
mkvextract — 将 Matroska™ 文件中的轨道提取为另外的文件<br />
<br />
==概要==<br />
<br />
<code class="command">mkvextract {模式} {源文件名} [选项] [提取指令]</code><br />
<br />
==说明==<br />
<br />
本程序可以将 Matroska™ 文件的指定部分提取为其他有用的格式。第一个参数,<code class="option">模式</code>告诉 mkvextract 要提取什么。目前支持提取 [[mkvextract#轨道提取模式|tracks(轨道)]]、[[mkvextract#标签提取模式|tags(标签)]]、[[mkvextract#附件提取模式|attachments(附件)]]、[[mkvextract#章节提取模式|chapters(章节)]]、[[mkvextract#Cue 表单提取模式|CUE sheets(CUE 表单)]]以及[[mkvextract#时间码提取模式|timecodes(时间码)]]。第二个参数是源文件名。它必须是 Matroska™ 文件。以下参数为选项及提取指令;两者均依所选模式而定。<br />
<br />
===通用选项===<br />
<br />
以下选项在所有模式下可用,本段落只讲一遍,不赘述。<br />
<br />
; <code class="option">-f</code>, <code class="option">--parse-fully</code><br />
: 设置解析模式为 '<code class="literal">full(完整)</code>'。默认的解析模式不解析整个文件,而是使用元定位元素确定源文件中所需元素的位置。99% 的情况下这已经足够。但如果碰到不含元定位元素或者元定位元素损坏的文件,用户可能得考虑使用此模式。完整扫描文件可能要花费几分钟,而快速扫描只需要几秒钟。<br />
; <code class="option">--command-line-charset</code> ''<code>字符集</code>''<br />
: 设定在命令行给出的字符串的字符集,用于转为其他字符集。默认为系统当前区域设置中所给定的字符集。<br />
; <code class="option">--output-charset</code> ''<code>字符集</code>''<br />
: 设置输出的字符串应被转换到何种字符集。默认为系统当前区域设置中所给定的字符集。<br />
; <code class="option">-r</code>, <code class="option">--redirect-output</code> ''<code>文件名</code>''<br />
: 将所有信息输出至文件 ''<code>文件名</code>'' 而不是在命令行显示。尽管该操作可以用输出重定向轻松实现,但在某些情况下还需要靠它:如当终端在写入文件之前重新解释(覆盖输出)时。将优先使用通过 <code class="option">--output-charset</code> 设定的字符集。<br />
; <code class="option">--ui-language</code> ''<code>语言代码</code>''<br />
: 强制使用语言代码为 ''<code>语言代码</code>'' 的翻译(如 '<code class="literal">de_DE</code>' 对应德文翻译)。使用 <code class="varname">LANG</code>, <code class="varname">LC_MESSAGES</code> 及 <code class="varname">LC_ALL</code> 这些环境变量更好。如果在 ''<code>语言代码</code>'' 处输入 '<code class="literal">list</code>',mkvextract 将输出可用翻译列表。<br />
; <code class="option">-v</code>, <code class="option">--verbose</code><br />
: 使输出信息更详尽,且每当读取到重要的 Matroska™ 元素时就将其显示。<br />
; <code class="option">-h</code>, <code class="option">--help</code><br />
: 显示用法信息并退出。<br />
; <code class="option">-V</code>, <code class="option">--version</code><br />
: 显示版本信息并退出。<br />
; <code class="option">@</code>选项文件<br />
: 从文件 ''<code>选项文件</code>'' 中读取额外的命令行参数。首个非空白字符为井号 ('<code class="literal"><nowiki>#</nowiki></code>') 的行将被当作注释对待,在处理过程中将被忽略。各行开头与结尾的空白将被除去。各行必须恰好含有一个选项。没有元字符转义。命令行 ''''mkvextract tracks 源.mkv --raw 1:目标.raw'''' 可以转换为下面所示选项文件:<br />
<pre> # 从 源.mkv 提取轨道<br />
tracks<br />
源.mkv<br />
# 将轨道以原始数据形式输出。<br />
--raw<br />
1:目标.raw</pre><br />
<br />
===轨道提取模式===<br />
<br />
语法: '''mkvextract''' <code class="option">tracks</code> ''<code>源文件名</code>'' [''<code>选项</code>''] ''<code>TID1:目标文件名1</code>'' [''<code>TID2:目标文件名2</code>'' ...]<br />
<br />
以下命令行在 '<code class="literal">tracks</code>' 轨道提取模式下对各轨道可用。它们应当在所应用到的轨道指令(参阅下文)之前出现。<br />
<br />
; <code class="option">-c</code> ''<code>字符集</code>''<br />
: 设定下一个字幕轨应被转换为哪一字符集。仅当后面的轨道 ID 对应文本字幕轨时有效。默认为 UTF-8。<br />
; <code class="option">--blockadd</code> ''<code>层级</code>''<br />
: 只保留低于或等于此层级的 BlockAdditions 附加块。默认保留所有层级。 本选项仅影响特定类别的编解码器,如 WAVPACK4。<br />
; <code class="option">--cuesheet</code><br />
: 让 mkvextract 根据下一轨道的标签数据与章节信息提取出 CUE 表单,输出文件名为轨道的输出名后接 '<code class="literal">.cue</code>' 扩展名。<br />
; <code class="option">--raw</code><br />
: 将原始数据提取为文件,输出文件的周围没有任何容器数据。 与 <code class="option">--fullraw</code> 标记不同的是,此标记不会将 <code class="classname">CodecPrivate</code> 元素的内容写入输出文件。 此模式对所有 <code class="classname">CodecIDs</code> 有效,即使是 mkvextract 不支持处理的,然而生成的文件可能无法使用。<br />
; <code class="option">--fullraw</code><br />
: 提取原始数据,输出文件的周围没有任何容器数据。 如果轨道包含 <code class="classname">CodecPrivate</code> 编解码器私有元素,它的内容将先被写入文件。 此模式对所有 <code class="classname">CodecIDs</code> 有效,即使是 mkvextract 不支持的那些,但是生成的文件可能无法使用。<br />
; ''<code>TID:输出文件名</code>''<br />
: 如果源文件中存在 ID 为 ''<code>TID</code>'' 的轨道,则将其提取为文件 ''<code>输出文件名</code>''。本选项可多次给出。轨道 ID 与 mkvmerge 的 <code class="option">--identify</code> 选项所输出的相同。每个输出文件名只能用一次。但 RealAudio 与 RealVideo 轨道例外。如果您为不同轨道使用了同样的输出文件名,这些轨道将被存入同一个文件中。示例: <br />
$ mkvextract tracks input.mkv 1:output-two-tracks.rm 2:output-two-tracks.rm<br />
<br />
===标签提取模式===<br />
<br />
语法: '''mkvextract''' <code class="option">tags</code> ''<code>源文件名</code>'' [''<code>选项</code>'']<br />
<br />
提取出的标签将被输出到命令行,除非输出被重定向(详情参见关于 [[mkvextract#输出重定向|输出重定向]] 的章节)。<br />
<br />
===附件提取模式===<br />
<br />
语法: '''mkvextract''' <code class="option">attachments</code> ''<code>源文件名</code>'' [''<code>选项</code>''] ''<code>AID1:输出文件名1</code>'' [''<code>AID2:输出文件名2</code>'' ...]<br />
<br />
; AID:输出文件名<br />
: 如果源文件中存在 ID 为 ''<code>AID</code>'' 的附件,则将其提取为文件 ''<code>输出文件名</code>''。如果 ''<code>输出文件名</code>'' 处留空,将使用所用 Matroska™ 文件中的附件名称。本选项可多次给出。附件 ID 与 mkvmerge 的 <code class="option">--identify</code> 选项所输出的相同。<br />
<br />
===章节提取模式===<br />
<br />
语法: '''mkvextract''' <code class="option">chapters</code> ''<code>源文件名</code>'' [''<code>选项</code>'']<br />
<br />
; <code class="option">-s</code>, <code class="option">--simple</code><br />
: 将章节信息以 OGM tools 所用的简单格式 (<code>CHAPTER01=..., CHAPTER01NAME=...</code>) 导出。此模式下部分信息将被废弃。默认以 XML 格式输出章节。<br />
<br />
提取出的章节将被输出到命令行,除非输出被重定向(详情参见关于 [[mkvextract#输出重定向|输出重定向]] 的章节)。<br />
<br />
===Cue 表单提取模式===<br />
<br />
语法: '''mkvextract''' <code class="option">cuesheet</code> ''<code>源文件名</code>'' [''<code>选项</code>'']<br />
<br />
提取出的 cue 表单将被输出到命令行,除非输出被重定向(详情参见关于 [[mkvextract#输出重定向|输出重定向]] 的章节)。<br />
<br />
===时间码提取模式===<br />
<br />
语法: '''mkvextract''' <code class="option">timecodes_v2</code> ''<code>源文件名</code>'' [''<code>选项</code>'']<br />
<br />
提取出的时间码将被输出到命令行,除非输出被重定向(详情参见关于 [[mkvextract#输出重定向|输出重定向]] 的章节)。<br />
<br />
==输出重定向==<br />
<br />
有些提取模式会使 mkvextract 将提取出的数据输出到命令行。通常有两种方法将数据写入文件:一种由 shell 提供,另一种由 mkvextract 自身提供。<br />
<br />
shell 的报告重定向功能可以通过在命令行后追加 '<code class="literal">> 输出文件名.扩展名</code>' 命令实现。示例:<br />
<br />
<br />
$ mkvextract tags 源.mkv > 标签.xml<br />
<br />
<br />
mkvextract 自身的重定向功能可通过 <code class="option">--redirect-output</code> 选项唤出。示例:<br />
<br />
<br />
$ mkvextract tags 源.mkv --redirect-output 标签.xml<br />
<br />
===注意===<br />
<br />
在 Windows 平台上您应当使用 <code class="option">--redirect-output</code> 选项,因为 '''cmd.exe''' 有时会在写入文件之前对特殊字符进行转义,导致输出文件损坏。<br />
<br />
==输出文件格式==<br />
<br />
输出文件的格式取决于轨道的类型,而不是输出文件名的扩展名。目前支持以下轨道类型:<br />
<br />
; V_MPEG4/ISO/AVC<br />
: H.264 / AVC 视频轨将被输出为 H.264 基本流,可以使用如 GPAC™ 工具包中的 MP4Box™ 作进一步处理。<br />
; V_MS/VFW/FOURCC<br />
: 使用此 <code class="classname">CodecID</code> 且 FPS 恒定的视频轨将被输出为 AVI 文件。<br />
; V_REAL/*<br />
: RealVideo™ 轨道将被输出为 RealMedia™ 文件。<br />
; A_MPEG/L3, A_AC3<br />
: 这些将被输出为原始的 MP3 与 AC3 文件。<br />
; A_PCM/INT/LIT<br />
: 原始 PCM 数据将被输出为 WAV 文件。<br />
; A_AAC/MPEG2/*, A_AAC/MPEG4/*, A_AAC<br />
: 所有 AAC 文件将被输出为 AAC 文件,其中数据包前有 ADTS 头。ADTS 头将不含反增强字段(deprecated emphasis field)。<br />
; A_VORBIS<br />
: Vorbis 音频将被输出为 OggVorbis™ 文件。<br />
; A_REAL/*<br />
: RealAudio™ 轨道将被输出为 RealMedia™ 文件。<br />
; A_TTA1<br />
: TrueAudio™ 轨道将被输出为 TTA 文件。请注意,由于 Matroska™ 时间码的精度限制,解开来的文件的头部有两个字段不同:<code class="varname">data_length</code> (文件的总采样数) 与 CRC。<br />
; S_TEXT/UTF8<br />
: 简单的文本字幕将被输出为 SRT 文件。<br />
; S_TEXT/SSA, S_TEXT/ASS<br />
: SSA 与 ASS 文本字幕将分别被输出为 SSA/ASS 文件。<br />
; S_KATE<br />
: Kate™ 流将以 Ogg™ 为容器输出。<br />
; 标签<br />
: 标签将被转换为 XML 格式。此格式与 mkvmerge 所支持读取的标签格式相同。<br />
; 附件<br />
: 附件将被以原样输出。不会进行任何转换。<br />
; 章节<br />
: 章节将被转换为 XML 格式。此格式与 mkvmerge 所支持读取的章节格式相同。您也可以选择输出精简的简单 OGM 格式。<br />
; 时间码<br />
: 时间码会先被排序,然后以 timecode v2 格式文件输出,该文件适用于 mkvmerge。不支持提取为其他格式 (v1, v3 或 v4)。<br />
<br />
==退出代码==<br />
<br />
mkvextract 退出时会返回以下三个退出代码中的一个:<br />
<br />
* <code class="constant">0</code> -- 此退出代码说明已成功完成提取。<br />
* <code class="constant">1</code> -- 这种情况下 mkvextract 至少输出了一条警告信息,但提取并未因之中止。 警告信息以文字 '<code class="literal">警告:</code>' 为前缀。根据问题的不同,生成的文件可能是好的,也可能不是。 强烈建议用户检查警告信息以及生成的文件。<br />
* <code class="constant">2</code> -- 此退出代码用于错误发生之后。 mkvextract 在输出错误信息后即中断处理。错误信息可能是错误的命令行参数,也可能是损坏文件的读取/写入错误。<br />
<br />
==参阅==<br />
<br />
* [[mkvmerge]]<br />
* [[mkvinfo]]<br />
* [[mkvpropedit]]<br />
* [[mmg]]<br />
<br />
==网络==<br />
<br />
最新版本总可以在 [http://www.bunkus.org/videotools/mkvtoolnix/ MKVToolNix 主页] 找到。</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Mkvinfo&diff=288
Mkvinfo
2010-08-01T05:57:34Z
<p>XsLiDian:以内容'''(作者:Moritz Bunkus;译者:~~~;复制自 [http://greatdreamers.cn/projects/mkvtoolnix/doc/mkvinfo.html mkvinfo])'' ==名称== mkvinfo — 输出关于 Mat…'创建新页面</p>
<hr />
<div>''(作者:Moritz Bunkus;译者:[[User:XsLiDian|XsLiDian]];复制自 [http://greatdreamers.cn/projects/mkvtoolnix/doc/mkvinfo.html mkvinfo])''<br />
<br />
==名称==<br />
<br />
mkvinfo — 输出关于 Matroska™ 文件中各轨的信息<br />
<br />
==概要==<br />
<code class="command">mkvinfo [选项] {源文件名}</code><br />
<br />
==说明==<br />
<br />
本程序可列出 Matroska™文件中包含的所有轨道,输出信息可以限定为文件的轨道列表以及所用编解码器的信息。<br />
<br />
; <code class="option">-g</code>, <code class="option">--gui</code><br />
: 启动 GUI。本选项仅当 mkvinfo 编译时附加 GUI 支持时可用。<br />
; <code class="option">-c</code>, <code class="option">--checksums</code><br />
: 计算并显示各帧的 <code class="function">Adler32</code> 校验码。仅当调试时有用处。<br />
; <code class="option">-s</code>, <code class="option">--summary</code><br />
: 仅显示 mkvinfo 所获取信息的简要概述,而非各元素。<br />
; <code class="option">-x</code>, <code class="option">--hexdump</code><br />
: 以十六进制转储形式显示各帧的前 16 字节。<br />
; <code class="option">-X</code>, <code class="option">--full-hexdump</code><br />
: 以十六进制转储形式显示各帧的所有字节。<br />
; <code class="option">-z</code>, <code class="option">--size</code><br />
: 显示各元素的尺寸,含头部所占用的尺寸。<br />
; <code class="option">--command-line-charset</code> ''<code>字符集</code>''<br />
: 设定在命令行给出的字符串的字符集,用于转为其他字符集。默认为系统当前区域设置中所给定的字符集。<br />
; <code class="option">--output-charset</code> ''<code>字符集</code>''<br />
: 设置输出的字符串应被转换到何种字符集。默认为系统当前区域设置中所给定的字符集。<br />
; <code class="option">-r</code>, <code class="option">--redirect-output</code> ''<code>文件名</code>''<br />
: 将所有信息输出至文件 ''<code>文件名</code>'',而不是在命令行显示。尽管该操作可以用输出重定向轻松实现,但在特定情况下还是缺不得它:当终端写入文件之前重新解释(覆盖输出)时。 <code class="option">--output-charset</code> 中所选定的字符集将被优先选用。<br />
; <code class="option">--ui-language</code> ''<code>语言代码</code>''<br />
: 强制使用语言代码 ''<code>语言代码</code>'' 所对应的翻译(如 '<code class="literal">de_DE</code>' 对应德文翻译)。使用 <code class="varname">LANG</code>、<code class="varname">LC_MESSAGES</code> 及 <code class="varname">LC_ALL</code> 这些环境变量更好。如果在 ''<code>code</code>'' 处输入 '<code class="literal">list</code>',mkvinfo 将输出可用翻译的列表。<br />
; <code class="option">-v</code>, <code class="option">--verbose</code><br />
: 使输出更详尽。请参阅关于 [[mkvinfo#“详细”程度|“详细”程度]] 的段落获取在哪些层级将输出哪些信息的描述。<br />
; <code class="option">-h</code>, <code class="option">--help</code><br />
: 显示用法信息并退出。<br />
; <code class="option">-V</code>, <code class="option">--version</code><br />
: 显示版本信息并退出。<br />
; <code class="option">@</code>选项文件<br />
: 从文件 ''<code>选项文件</code>'' 中读取额外的命令行参数。首个非空白字符为井号 ('<code class="literal"><nowiki>#</nowiki></code>') 的行将被当作注释对待,在处理过程中将被忽略。各行开头与结尾的空白将被除去。各行必须恰好含有一个选项。没有元字符转义。命令行 ''''mkvinfo -v -v 输入.mkv --redirect-output 信息.txt'''' 可以转换为下面所示的选项文件: <br />
<pre> # 更为详尽<br />
-v<br />
-v<br />
# 解析 输入.mkv<br />
输入.mkv<br />
# 并将输出信息写入 信息.txt<br />
--redirect-output<br />
信息.txt</pre><br />
<br />
==“详细”程度==<br />
<br />
<code class="option">-v</code> 选项可以使 mkvinfo 增强其“详细”程度并输出关于当前文件的更多信息。<br />
<br />
在 level 0 mkvinfo 仅输出它发现的轨道头及其类型。头部解析完毕后(更专业地:遇到首个簇时),mkvinfo 将退出执行。在此层级,定位头项与 cue 索引不会显示出来——即使它们位于轨道信息之前。<br />
<br />
在 level 1 mkvinfo 同样将输出在整个文件中遇到的所有 Matroska™ 元素,此外还将输出定位头项与 cue 索引项。如果启用了简要模式,mkvinfo 还将输出各帧位置。<br />
<br />
在 level 2 mkvinfo 同样将输出定位头项与 cue 索引项,以及文件中各 Matroska™ 元素被发现的位置。<br />
<br />
在 level 3 及更高层级 mkvinfo 将输出一些与 Matroska™ 元素不直接相连的信息。对于其他元素,将只输出发现的基本信息。Level 3 增加了元信息以便调试(换句话说:它是为开发人员设计的)。Level 3 输出的所有行都以方括号嵌套以便过滤。<br />
<br />
==退出代码==<br />
<br />
mkvinfo 退出时会返回以下三个退出代码中的一个:<br />
<br />
* <code class="constant">0</code> -- 此退出代码说明已成功完成运行。<br />
* <code class="constant">1</code> -- 这种情况下 mkvinfo 至少输出了一条警告信息,但运行并未因之中止。 警告信息以文字 '<code class="literal">警告:</code>' 为前缀。<br />
* <code class="constant">2</code> -- 此退出代码用于错误发生之后。 mkvinfo 在输出错误信息后即中断运行。错误信息可能是错误的命令行参数,也可能是损坏文件的读取/写入错误。<br />
<br />
==参阅==<br />
<br />
* [[mkvmerge]]<br />
* [[mkvextract]]<br />
* [[mkvpropedit]]<br />
* [[mmg]]<br />
<br />
==网络==<br />
<br />
最新版本总可以在 [http://www.bunkus.org/videotools/mkvtoolnix/ MKVToolNix 主页] 找到。</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Mkvmerge&diff=287
Mkvmerge
2010-08-01T05:56:26Z
<p>XsLiDian:</p>
<hr />
<div>''(作者:Moritz Bunkus;译者:[[User:XsLiDian|XsLiDian]];复制自 [http://greatdreamers.cn/projects/mkvtoolnix/doc/mkvmerge.html mkvmerge])''<br />
==名称==<br />
<br />
mkvmerge — 将多媒体流合并到 Matroska™ 文件中<br />
<br />
==概要==<br />
<br />
<code class="command">mkvmerge [全局选项] {-o 输出文件} [选项1] {文件1} [ [选项2] {文件2} ] [@选项文件]</code><br />
<br />
==说明==<br />
<br />
本程序可读取多种媒体文件并将它们的数据流(全部或者按选择)合并到 Matroska™ 文件中去;参见 [http://www.matroska.org/ Matroska™ 网站]。<br />
<br />
全局选项:<br />
<br />
; <code class="option">-v</code>, <code class="option">--verbose</code><br />
: 增强“详细”程度。<br />
; <code class="option">-q</code>, <code class="option">--quiet</code><br />
: 取消状态输出。<br />
; <code class="option">-o</code>, <code class="option">--output</code> ''<code>文件名</code>''<br />
: 写至文件 ''<code>文件名</code>''。如果使用了切割功能,对此参数的处理将有所不同。 详情请参阅关于 <code class="option">--split</code> 选项的说明。<br />
; <code class="option">-w</code>, <code class="option">--webm</code><br />
: 创建 WebM 兼容文件。如果输出文件扩展名为 "webm" 则将自动开启本选项。此模式将实施一些限制。只允许使用编解码器为 VP8 视频与 Vorbis 音频的轨道。章节与标签功能都不允许使用。DocType 文档类型头项将更改为 "webm"。<br />
; <code class="option">--title</code> ''<code>标题</code>''<br />
: 设置整个生成文件的标题,比如电影名称。<br />
; <code class="option">--tags</code> ''<code>文件名</code>''<br />
: 从 XML 文件 ''<code>文件名</code>'' 中读取全局标签。详细情况请参阅下文关于标签的段落。<br />
; <code class="option">--default-language</code> ''<code>语言代码</code>''<br />
: 设置默认语言代码。所有轨道将使用此语言码,除非被用 <code class="option">--language</code> 选项覆盖。默认的语言代码是 '<code class="literal">und</code>' 代表 'undefined'(未定)。<br />
<br />
<br />
剪辑信息处理: (全局选项)<br />
<br />
; <code class="option">--segmentinfo</code> ''<code>文件名.xml</code>''<br />
: 从 XML 文件中读取剪辑信息。此文件可以包含剪辑族的 UID、剪辑的 UID、上一剪辑以及下一剪辑的 UID 元素。示例文件以及 DTD 已包含在 MKVToolNix 发布包中。<br />
; <code class="option">--segment-uid</code> ''<code>SID1,SID2,...</code>''<br />
: 设定要使用的剪辑 UID。这是个逗号分割的 128 位 UID 列表,UID 为通常的格式: 十六进制数字,"0x" 前缀可选,空格可选,但必须恰好有 32 个数位。创建的每个文件都包含一个剪辑,每个剪辑有一个剪辑 UID。如果指定的剪辑 UID 比创建的剪辑多,则多余的 UID 将被忽略。如果指定的 UID 比创建的剪辑少,则将随机创建 UID。<br />
<br />
<br />
章节与标签处理: (全局选项)<br />
<br />
; <code class="option">--chapter-language</code> ''<code>语言代码</code>''<br />
: 设置各章节项的 ISO639-2 语言代码。 默认为 '<code class="literal">eng</code>'。 详情参见下文中关于 [[mkvmerge#章节|章节]] 的段落。此选项可用于简单章节文件与包含章节但不含章节语言信息的源文件,如 MP4 与 OGM 文件。<br />
; <code class="option">--chapter-charset</code> ''<code>字符集</code>''<br />
: 设置简单章节文件所用的字符集,用以转为 UTF-8。关于 mkvmerge 如何在字符集之间转换的说明请参见关于 [[mkvmerge#文本文件与字符集转换|文本文件与字符集]] 的段落。此开关亦可应用到从特定容器类型,如 Ogg/OGM 和 MP4 文件中复制而来的章节。 详情参见下文关于章节的段落。<br />
; <code class="option">--cue-chapter-name-format</code> ''<code>格式</code>''<br />
: mkvmerge 支持读取音频文件的 CUE 表单作为章节输入。CUE 表单中各索引项通常含有 <code class="varname">PERFORMER(表演者)</code> 与 <code class="varname">TITLE(标题)</code> 项。mkvmerge 使用这两个字串构建章节名称。使用此选项可设定构建名称所用的格式。如果此选项未给定则 mkvmerge 默认使用 '<code class="code">%p - %t</code>' 格式 (表演者, 后接空格, 一个破折号, 另一个空格以及标题)。如果给定了格式,则除了后续的标签字符以外都将被原样复制,标签字符将被进行下述替换:<br />
:* ''<code>%p</code>'' 被当前项的 <code class="varname">PERFORMER(表演者)</code> 字符串替代,<br />
:* ''<code>%t</code>'' 被当前项的 <code class="varname">TITLE(标题)</code> 字符串替代,<br />
:* ''<code>%n</code>'' 被当前轨道编号替代,此外<br />
:* ''<code>%N</code>'' 被当前轨道衬式编号(小于 10 则在前面加零)替代。<br />
; <code class="option">--chapters</code> ''<code>文件名</code>''<br />
: 从文件 ''<code>文件名</code>'' 读取章节信息。详情参阅下文关于 [[mkvmerge#章节|章节]] 的段落。<br />
; <code class="option">--global-tags</code> ''<code>文件名</code>''<br />
: 从文件 ''<code>文件名</code>'' 读取全局标签。详情参阅下文关于 [[mkvmerge#标签|标签]] 的段落。<br />
<br />
<br />
全局输出控制 (高级全局选项):<br />
<br />
; <code class="option">--track-order</code> ''<code>FID1:TID1,FID2:TID2,...</code>''<br />
: 此选项更改输入文件创建时轨道的顺序。变量为逗号分隔的成对的 ID 列。每对先包含有文件 ID (''<code>FID1</code>''),即文件在命令行中的顺序,由 0 开始计数。第二个是在该文件中的轨道 ID (''<code>TID1</code>'')。 如果省去部分轨道的 ID,则这些轨道将在使用本选项给定的轨道创建之后创建。<br />
; <code class="option">--cluster-length</code> ''<code>指令</code>''<br />
: 限制每个簇中数据块的数量或数据的时长。''<code>指令</code>'' 参数可以是无单位的数字 ''<code>n</code>'',也可以是后缀有 '<code class="literal">ms</code>' 的 ''<code>d</code>''。如果未使用数字,mkvmerge 将在每个簇中放置最多 ''<code>n</code>'' 个数据块。最大块数是 65535。如果数字 ''<code>d</code>'' 后缀有 '<code class="literal">ms</code>',mkvmerge 将在每个簇中放置最多 ''<code>d</code>'' 毫秒的数据。''<code>d</code>'' 的最小值是 '<code class="literal">100ms</code>',最大值是 '<code class="literal">32000ms</code>'。mkvmerge defaults to putting at most 65535 data blocks and 5000ms of data into a cluster.尝试定位到特定帧的程序只能直接定位到簇,然后需要读取整个簇(来完成定位)。因此创建较大的簇将导致定位不精确或缓慢。<br />
; <code class="option">--no-cues</code><br />
: 让 mkvmerge 不要创建或写入 cue 索引( 可类比作 AVI 文件中的索引)。没有索引的 Matroska™ 文件也能播放,但定位可能不精确且缓慢。仅当您确实强求空间或用作测试时使用此选项。请参阅可为各输入文件指定的 <code class="option">--cues</code> 选项。<br />
; <code class="option">--clusters-in-meta-seek</code><br />
: 告诉 mkvmerge 在文件末尾创建包含所有簇的元定位元素。参阅关于 [[mkvmerge#Matroska™ 文件规划|Matroska™ 文件规划]] 的段落。<br />
; <code class="option">--disable-lacing</code><br />
: 禁用所有轨道的紧缩。这将增加文件大小,尤其是当有很多音频轨时。此选项不供日常之用。<br />
; <code class="option">--enable-durations</code><br />
: 为所有块写入时长。这将增大文件尺寸,而且目前对播放器来说不提供任何额外的益处。<br />
; <code class="option">--timecode-scale</code> ''<code>系数</code>''<br />
: 强制时间码缩放系数为 ''<code>系数</code>''。有效值域为 <code class="constant">1000</code>..<code class="constant">10000000</code> 或特殊值 <code class="constant">-1</code>。通常 mkvmerge 会使用数值 <code class="constant">1000000</code>,这样时间码和时长的精度为 1ms。对于不包含视频轨但含有至少一条音频轨的文件,mkvmerge 将自动选择一个时间码缩放系数以使各轨的音频采样精度相同。这将引起更大的额外开销,但将允许更为精确的定位与提取。如果使用了特殊值 <code class="constant">-1</code>,即使有视频轨,mkvmerge 也将使用采样精度。<br />
<br />
<br />
文件切割、链接与追加合并 (其他全局选项):<br />
<br />
; <code class="option">--split</code> ''<code>指令</code>''<br />
: 在给定尺寸或时间之后切割输出文件。请注意,各轨道只能在关键帧之前的位置切割开。由于缓冲原因,mkvmerge 将在达到切割点后发现的首个关键帧前的位置切割。因此实际切割点可能比用户指定的稍稍靠后些。目前 mkvmerge 支持三种不同模式。<br />
:# 按尺寸切割。语法: <code class="option">--split</code> [size:]''<code>d</code>''[k|m|g]示例: <code class="code">--split size:700m</code> 或者 <code class="code">--split 150000000</code>参数 ''<code>d</code>'' 可以以 '<code class="literal">k</code>'、'<code class="literal">m</code>' 或 '<code class="literal">g</code>' 结尾,分别说明尺寸的单位为 KB、MB 或 GB。若不加单位,则假定单位为字节。 当前输出文件达到此尺寸限制后将开始输出新的文件。为兼顾兼容性,'<code class="literal">size:</code>' 前缀可以省略。<br />
:# 在一定时长后切割。语法: <code class="option">--split</code> [duration:]''<code>HH:MM:SS.nnnnnnnnn</code>''<nowiki>|</nowiki>''<code>d</code>''s示例: <code class="code">--split duration:00:60:00.000</code> 或 <code class="code">--split 3600s</code>此参数可以用 ''<code>HH:MM:SS.nnnnnnnnn</code>'' 的形式指定纳秒精度的时长,也可以是后接字母 '<code class="literal">s</code>' 的指定秒数时长的数字 ''<code>d</code>''。''<code>HH</code>'' 为小时数,''<code>MM</code>'' 为分钟数,''<code>SS</code>'' 为秒数,而''<code>nnnnnnnnn</code>'' 为纳秒数。 小时数与纳秒数均可省略。 小数点后最多可以有九位。 当前输出内容的时长达到此限制后将开始输出新的输出文件。为兼顾兼容性,'<code class="literal">duration:</code>' 前缀可以省略。<br />
:# 在指定时间码后切割。语法: <code class="option">--split</code> timecodes:''<code>A</code>''[,''<code>B</code>''[,''<code>C</code>''...]]示例: <code class="code">--split timecodes:00:45:00.000,01:20:00.250,6300s</code>参数 ''<code>A</code>''、''<code>B</code>''、''<code>C</code>'' 等等的格式与按时长切割模式(见上文)所用的格式相同。时间码表以逗号分隔。 输入流达到当前切割点的时间码后将创建新的输出文件。然后将使用所给定的下一个切割点。'<code class="literal">timecodes:</code>' 前缀不得省略。此切割模式下输出文件名将以不同于常用操作的方式对待。可能会含有类似 <code class="function">printf</code> 的表达式 '<code class="literal">%d</code>',包括可选的字段宽度,如 '<code class="literal">%02d</code>'。如果含有上述表达式,当前文件序号将按相应格式生成,然后插入到文件名中的相应位置。 如果没有此类匹配模式,则假定匹配模式为在文件扩展名之前插入 '<code class="literal">-%03d</code>': '<code class="literal">-o 输出.mkv</code>' 将生成 '<code class="literal">输出-001.mkv</code>' 这样的一系列文件。如果没有扩展名,'<code class="literal">-%03d</code>' 将被追加在文件名之后。<br />
; <code class="option">--link</code><br />
: 切割输出文件时连接文件。详情请参阅下文 [[mkvmerge#文件链接|文件链接]] 段落。<br />
; <code class="option">--link-to-previous</code> ''<code>剪辑-UID</code>''<br />
: 连接第一个输出文件到指定 ''<code>剪辑-UID</code>'' 参数对应的剪辑。详情请参阅下文 [[mkvmerge#文件链接|文件链接]] 段落。<br />
; <code class="option">--link-to-next</code> ''<code>剪辑-UID</code>''<br />
: 连接最后一个输出文件到指定 ''<code>剪辑-UID</code>'' 参数对应的剪辑。详情请参阅下文 [[mkvmerge#文件链接|文件链接]] 段落。<br />
; <code class="option">--append-mode</code> ''<code>模式</code>''<br />
: 决定追加合并文件时如何计算时间码。 参数 ''<code>模式</code>'' 可以有两个数值: 默认的 '<code class="literal">file(文件)</code>' 和 '<code class="literal">track(轨道)</code>'。当 mkvmerge 将来自另一文件 (本段中假设为 '<code class="literal">文件2</code>') 的一条轨道 (假设为 '<code class="literal">轨道2_1</code>' ) 追加合并到首个文件 (假设为 '<code class="literal">文件1</code>')的一条轨道 (假设为 '<code class="literal">轨道1_1</code>') 时,它将为 '<code class="literal">轨道2_1</code>' 的所有时间码设定一定量的延时。 对于 '<code class="literal">file(文件)</code>' 模式此延时量是 '<code class="literal">文件1</code>' 中遇到的最大时间码,即使此时间码不属于轨道 '<code class="literal">轨道1_1</code>'。而在 track (轨道模式)下此延时为 '<code class="literal">轨道1_1</code>' 的最大时间码。不幸的是 mkvmerge 无法侦测使用哪种模式更为可靠。因此默认为 '<code class="literal">file(文件)</code>' 模式。'<code class="literal">file</code>' 模式对单独创建的文件的处理通常更好;例如在追加 AVI 或 MP4 文件时。'<code class="literal">track(轨道)</code>' 模式对一个大文件的完整分块的处理更好,例如对于 VOB 与 EVO 文件。即使选用了 '<code class="literal">track(轨道)</code>' 模式,字母轨道也将按照 '<code class="literal">file(文件)</code>' 模式处理。<br />
; <code class="option">--append-to</code> ''<code>SFID1:STID1:DFID1:DTID1[,...]</code>''<br />
: 此选项控制要追加合并哪些轨道与哪些轨道。 各指令由四个 ID 组成: 源文件 ID, 源轨道 ID, 目标文件 ID 和目标轨道 ID。 第一对,"源文件 ID" 与 "源轨道 ID"确定要追加合并的轨道。 第二对,"目标文件 ID" 与 "目标轨道 ID",确定源轨道要追加合并到的轨道。如果忽略本选项,则将使用标准映射。 标准映射即将当前文件的各个轨道追加到前一个文件的相应轨道(轨道 ID 相同)。 当影片被切割为多段,且各文件中轨道数和轨道 ID 相同时,这将允许简单的追加合并,命令行为 '''mkvmerge -o 输出.mkv 第一段.mkv +第二段.mkv'''。<br />
; <code class="option">+</code><br />
: 单个 '+' 将追加后面的文件,而不是添加。'+' 也可以直接放在下一个文件名的前面。因此以下两条命令等效: <br />
$ mkvmerge -o 完整.mkv 文件1.mkv + 文件2.mkv<br />
$ mkvmerge -o 完整.mkv 文件1.mkv +文件2.mkv<br />
<br />
<br />
<br />
附件支持(其他全局选项):<br />
<br />
; <code class="option">--attachment-description</code> ''<code>描述</code>''<br />
: 对后面附件的纯文字描述。将应用到下一个 <code class="option">--attach-file</code> 或 <code class="option">--attach-file-once</code> 选项。<br />
; <code class="option">--attachment-mime-type</code> ''<code>MIME 类型</code>''<br />
: 后面附件的 MIME 类型。将应用到下一个 <code class="option">--attach-file</code> 或 <code class="option">--attach-file-once</code> 选项。 官方认可的 MIME 类型列表可以在如 [http://www.iana.org/assignments/media-types/ IANA 主页] 找到。MIME 类型对附件来说是必需的。<br />
; <code class="option">--attachment-name</code> ''<code>名称</code>''<br />
: 设置此附件将在输出文件中储存的名称。 如果未给出此选项则将由 <code class="option">--attach-file</code> 或 <code class="option">--attach-file-once</code> 选项所设的文件名推得。<br />
; <code class="option">--attach-file</code> ''<code>文件名</code>'', <code class="option">--attach-file-once</code> ''<code>文件名</code>'' <br />
: 在 Matroska™ 文件中创建文件附件。MIME 类型必须在使用此选项之前设定。两种形式的不同之处在于使用 <code class="option">--attach-file</code> 附加的文件在切割过程中将被附加到所有输出文件中,而使用 <code class="option">--attach-file-once</code> 附加的文件只被附加到创建的首个文件中。如果未使用切割功能,两种形式效果相同。可以使用 mkvextract 从 Matroska™ 文件中提取附件文件。<br />
<br />
<br />
用于各输入文件的选项:<br />
<br />
; <code class="option">-a</code>, <code class="option">--audio-tracks</code> ''<code>n,m,...</code>''<br />
: 复制 ''<code>n</code>''、''<code>m</code>'' 等音频轨。数字是可以通过 <code class="option">--identify</code> 开关获取的轨道 ID。他们不只是简单的轨道序号(参见 [[mkvmerge#轨道 ID|轨道 ID]] 段落)。默认: 复制所有音频轨道。<br />
; <code class="option">-d</code>, <code class="option">--video-tracks</code> ''<code>n,m,...</code>''<br />
: 复制 ''<code>n</code>''、''<code>m</code>'' 等视频轨。数字是可以通过 <code class="option">--identify</code> 开关获取的轨道 ID。他们不只是简单的轨道序号(参见 [[mkvmerge#轨道 ID|轨道 ID]] 段落)。默认: 复制所有视频轨道。<br />
; <code class="option">-s</code>, <code class="option">--subtitle-tracks</code> ''<code>n,m,...</code>''<br />
: 复制 ''<code>n</code>''、''<code>m</code>'' 等字幕轨。数字是可以通过 <code class="option">--identify</code> 开关获取的轨道 ID。他们不只是简单的轨道序号(参见 [[mkvmerge#轨道 ID|轨道 ID]] 段落)。默认: 复制所有字幕轨道。<br />
; <code class="option">-b</code>, <code class="option">--button-tracks</code> ''<code>n,m,...</code>''<br />
: 复制 ''<code>n</code>''、''<code>m</code>'' 等按钮轨。数字是可以通过 <code class="option">--identify</code> 开关获取的轨道 ID。他们不只是简单的轨道序号(参见 [[mkvmerge#轨道 ID|轨道 ID]] 段落)。默认: 复制所有按钮轨道。<br />
; <code class="option">--track-tags</code> ''<code>n,m,...</code>''<br />
: 复制 ''<code>n</code>''、''<code>m</code>'' 等轨道的标签。数字是可以通过 <code class="option">--identify</code> 开关获取的轨道 ID。他们不只是简单的轨道序号(参见 [[mkvmerge#轨道 ID|轨道 ID]] 段落)。默认: 复制所有轨道的标签。<br />
; <code class="option">-m</code>, <code class="option">--attachments</code> ''<code>n[<nowiki>:all|first</nowiki>],m[<nowiki>:all|first</nowiki>],...</code>''<br />
: 复制 ID 为 ''<code>n</code>''、''<code>m</code>'' 等的附件到所有或者仅首个输出文件中。各 ID 后可接 '<code class="literal"><nowiki>:all</nowiki></code>'(如果两可选数值均未输入,此为默认值)或者 '<code class="literal"><nowiki>:first</nowiki></code>'。如果切割功能已被起用,则 ID 被指定为 '<code class="literal"><nowiki>:all</nowiki></code>' 的附件将被复制到所有生成的输出文件中,而其他附件只被复制到首个输出文件中。如果未使用切割功能则两变量等效。默认复制所有附件到所有输出文件中。<br />
; <code class="option">-A</code>, <code class="option">--no-audio</code><br />
: 不要从此文件中复制任何音频轨。<br />
; <code class="option">-D</code>, <code class="option">--no-video</code><br />
: 不要从此文件中复制任何视频轨。<br />
; <code class="option">-S</code>, <code class="option">--no-subtitles</code><br />
: 不要从此文件中复制任何字幕轨。<br />
; <code class="option">-B</code>, <code class="option">--no-buttons</code><br />
: 不要从此文件中复制任何按钮轨。<br />
; <code class="option">-T</code>, <code class="option">--no-track-tags</code><br />
: 不要从此文件中复制任何轨道细节标签。<br />
; <code class="option">--no-chapters</code><br />
: 不要从此文件中复制章节。<br />
; <code class="option">-M</code>, <code class="option">--no-attachments</code><br />
: 不要从此文件中复制附件。<br />
; <code class="option">--no-global-tags</code><br />
: 不要从此文件中复制全局标签。<br />
; <code class="option">--chapter-charset</code> ''<code>字符集</code>''<br />
: 设置源文件中章节信息的字符集,以供转为 UTF-8 之用。关于 mkvmerge 如何在字符集之间进行转换的说明,请参阅下文 [[mkvmerge#文本文件与字符集转换|文本文件与字符集]] 段落。<br />
; <code class="option">--chapter-language</code> ''<code>语言代码</code>''<br />
: 选择各章节项所用的 ISO639-2 语言代码。 此选项可用于包含章节但不含关于章节语言的信息的源文件,如 MP4 与 OGM 文件。<br />
; <code class="option">-y</code>, <code class="option">--sync</code> ''<code>TID:d[,o[/p]]</code>''<br />
: 将 id 为 ''<code>TID</code>'' 的轨道的时间码按 ''<code>d</code>'' ms 进行调整。轨道 ID 与 <code class="option">--identify</code> 所给出的相同 (参见 [[mkvmerge#轨道 ID|轨道 ID]] 段落)。''<code>o</code>''/''<code>p</code>''<nowiki>: 按 </nowiki>''<code>o</code>''/''<code>p</code>'' 调整时间戳以修复线性偏移。如果省略 ''<code>p</code>'' 则默认为 1。''<code>o</code>'' 与 ''<code>p</code>'' 均可为浮点数。默认: 无手动同步校正 (与 ''<code>d</code>'' = <code class="constant">0</code> 及 ''<code>o</code>''/''<code>p</code>'' = <code class="constant">1.0</code> 效果相同)。此选项可以对同一输入文件多次使用,通过每次选择不同轨道 ID 分别应用到多个轨道。<br />
; <code class="option">--cues</code> ''<code>TID:none|iframes|all</code>''<br />
: 控制为指定轨道 (参阅 [[mkvmerge#轨道 ID|轨道 ID]] 段落) 创建何种 cue 索引。'<code class="literal">none(无)</code>' 将阻止 cue 索引的创建。 而 '<code class="literal">iframes(仅 i 帧)</code>' 表示仅将没有前后参考的块 ( = 视频轨道中的 I 帧) 置于 cue 索引项中。'<code class="literal">all(全部)</code>' 将使 mkvmerge 为所有区块创建索引,会使生成的文件非常大。默认视频轨为 '<code class="literal">iframes(仅 i 帧)</code>',其他所有轨道均为 '<code class="literal">none(无)</code>'. 参见不论是否使用 <code class="option">--cues</code> 选项时都能阻止创建 cue 索引项的 <code class="option">--no-cues</code> 选项。此选项可以对同一输入文件多次使用,通过每次选择不同轨道 ID 分别应用到多个轨道。<br />
; <code class="option">--default-track</code> ''<code>TID[<nowiki>:bool</nowiki>]</code>''<br />
: 当为设定可选变量 ''<code>bool</code>'' 时为指定轨道 (参见 [[mkvmerge#轨道 ID|轨道 ID]] 段落) 设置 '默认轨' 标记。 当用户未明确选定一个轨道时,播放器将优先选用设有 '默认轨' 标记的轨道。各类 (音频、视频、字幕、按钮) 轨道只能有一条设置 '默认轨' 标记。 如果用户希望所有轨道都不被设置默认轨标记,可以将所有轨道的 ''<code>bool</code>'' 设为 <code class="constant">0</code>。此选项可以对同一输入文件多次使用,通过每次选择不同轨道 ID 分别应用到多个轨道。<br />
; <code class="option">--forced-track</code> ''<code>TID[<nowiki>:bool</nowiki>]</code>''<br />
: 若未给出可选参数 ''<code>bool</code>'',则为指定轨道 (参见 [[mkvmerge#轨道 ID|轨道 ID]] 段落) 设置“强制轨”标记。播放器必须播放“强制轨”标记为 <code class="constant">1</code> 的所有轨道。此选项可以对同一输入文件多次使用,通过每次选择不同轨道 ID 分别应用到多个轨道。<br />
; <code class="option">--blockadd</code> ''<code>TID:层级</code>''<br />
: 只保留选定轨道中高达 ''<code>层级</code>'' 层级的 <code class="classname">BlockAdditions</code> 附加块。 默认保留所有层级。 此选项只影响特定类型的编解码器,如 WAVPACK4。<br />
; <code class="option">--track-name</code> ''<code>TID:名称</code>''<br />
: 将指定轨道 (参见 [[mkvmerge#轨道 ID|轨道 ID]] 段落) 的轨道名称设为 ''<code>名称</code>''。<br />
; <code class="option">--language</code> ''<code>TID:语言</code>''<br />
: 为指定轨道 (参见 [[mkvmerge#轨道 ID|轨道 ID]] ) 设置语言。允许使用 ISO639-2 语言代码与 ISO639-1 国家代码。国家代码将被自动转换为语言代码。 可以使用 <code class="option">--list-languages</code> 选项列出所有语言以及它们的 ISO639-2 代码。此选项可以对同一输入文件多次使用,通过每次选择不同轨道 ID 分别应用到多个轨道。<br />
; <code class="option">-t</code>, <code class="option">--tags</code> ''<code>TID:文件名</code>''<br />
: 从文件 ''<code>文件名</code>'' 读取轨道号为 ''<code>TID</code>'' 的轨道的标签。详情参见下文 [[mkvmerge#标签|标签]] 段落。<br />
; <code class="option">--aac-is-sbr</code> ''<code>TID[<nowiki>:0|1</nowiki>]</code>''<br />
: 告诉 mkvmerge ID 为 ''<code>TID</code>'' 的轨道是 SBR AAC (亦作 HE-AAC 或 AAC+)。下述情况下需要此选项:a) 源文件是 AAC 文件 (''不是'' Matroska™ 文件) 且 b) 该 AAC 文件含有 SBR AAC 数据。 设置此开关的原因是目前技术上无法在不解码一个完整的 AAC 帧的情况下自动分辨普通的 AAC 数据与 SBR AAC 数据。由于 AAC 解码器的诸多专利问题,mkvmerge 永远不会包含此解码层。因此此开关对于 SBR AAC 文件是必需的。如果忽略了此开关,生成的文件可能无法正常回放,甚至可能根本无法播放。如果源文件是 Matroska™ 文件,则已有足够侦测 SBR AAC 的 <code class="classname">CodecID</code> 了。然而,如果 <code class="classname">CodecID</code> 标注错误,此开关可用于更正之。如果 mkvmerge 错将 AAC 文件侦测为 SBR,您可以将 '<code class="literal"><nowiki>:0</nowiki></code>' 添加到轨道 ID。<br />
; <code class="option">--timecodes</code> ''<code>TID:文件名</code>''<br />
: 从 ''<code>文件名</code>'' 读取要应用到指定轨道 ID 的时间码。 这些时间码将强制覆盖 mkvmerge 默认计算出的时间码。参阅关于 [[mkvmerge#外部时间码文件|外部时间码文件]] 的章节。<br />
; <code class="option">--default-duration</code> ''<code>TID:x</code>''<br />
: 强制指定轨道的默认时长为指定数值。 将同时修改轨道的时间码以匹配该默认时长。 变量 ''<code>x</code>'' 必须有 '<code class="literal">s</code>', '<code class="literal">ms</code>', '<code class="literal">us</code>', '<code class="literal">ns</code>' 或 '<code class="literal">fps</code>' 后缀,分别说明默认时长的单位为秒、毫秒、微秒、纳秒以及帧每秒。 数字 ''<code>x</code>'' 本身可为浮点数或分数。如果未强定默认时长,mkvmerge 将尝试根据使用的容器和/或编解码器推定轨道的默认时长。 此选项有用的一种情况是当添加 ''AVC/h.264'' 基本流时,因为此类流不含关于帧数及各帧默认时长的信息。 对此类文件 mkvmerge 将假定默认时长为 '<code class="literal">25fps</code>',除非被(用户设置)覆盖。此选项也可用于在不使用外部时间码文件的情况下更改视频轨的 FPS(帧率)。<br />
; <code class="option">--nalu-size-length</code> ''<code>TID:n</code>''<br />
: 强制 NALU 长度为 ''<code>n</code>'' 字节。 此变量仅当使用 ''AVC/h.264'' 基本流分包器时使用。 如果留空,则默认为 4 字节,然而有的文件包含的所有帧或切片都小于 65536 字节。 对此类文件您可以使用此参数并将长度降为 2。<br />
<br />
<br />
仅用于视频轨的选项:<br />
<br />
; <code class="option">-f</code>, <code class="option">--fourcc</code> ''<code>TID:FourCC</code>''<br />
: 强制 <code class="classname">FourCC</code> 为指定值。仅对 '''微软兼容模式''' 的视频轨有效。<br />
; <code class="option">--display-dimensions</code> ''<code>TID:宽度x高度</code>''<br />
: Matroska™ 文件含有两个设定播放器回放时应当将画面缩放到的显示属性值: 显示宽度与显示高度。 可以使用本选项设定这些数值,如 '<code class="literal">1:640x480</code>'。指定所用数值的其他方法是使用 <code class="option">--aspect-ratio</code> 或 <code class="option">--aspect-ratio-factor</code> 选项 (参见下文)。 这些选项是互相独立的。<br />
; <code class="option">--aspect-ratio</code> ''<code>TID:宽高比|宽度/高度</code>''<br />
: Matroska™ 文件含有两个设定播放器回放时应当将画面缩放到的显示属性值: 显示宽度与显示高度。 通过本选项 mkvmerge 可自动根据画面原始宽高和本选项给定的宽高比计算出显示宽度和显示高度。 宽高比可以以浮点数 ''<code>宽高比</code>'' 或分数 '''<code>宽度</code>''/''<code>高度</code>''' 的形式给出,如 '<code class="literal">16/9</code>'。指定所用数值的其他方法是使用 <code class="option">--aspect-ratio-factor</code> 或 <code class="option">--display-dimensions</code> 选项 (参见上下文)。这些选项相互独立。<br />
; <code class="option">--aspect-ratio-factor</code> ''<code>TID:系数|n/d</code>''<br />
: 另一种设置宽高比的方法是指定一个 ''<code>系数</code>''。将将原始宽高比与 ''<code>系数</code>'' 相乘后用作目标宽高比。指定所用数值的其他方法是使用 <code class="option">--aspect-ratio</code> 或 <code class="option">--display-dimensions</code> 选项 (参见上文)。这些选项互相独立。<br />
; <code class="option">--cropping</code> ''<code>TID:左,上,右,下</code>''<br />
: 将视频轨道的像素裁减参数设为指定数值。<br />
; <code class="option">--stereo-mode</code> ''<code>TID:n|关键词</code>''<br />
: 设置 ID 为 ''<code>TID</code>'' 的视频轨的立体视法。 模式既可以是 <code class="constant">0</code> 到 <code class="constant">3</code> 之间的数字 ''<code>n</code>'',也可以是 '<code class="literal">none(无立体视法)</code>' (与 ''<code>n</code>''<nowiki>=</nowiki><code class="constant">0</code> 相同), '<code class="literal">right(右眼视角)</code>' (与 ''<code>n</code>''<nowiki>=</nowiki><code class="constant">1</code> 相同), '<code class="literal">left(左眼视角)</code>' (与 ''<code>n</code>''<nowiki>=</nowiki><code class="constant">2</code> 相同) or '<code class="literal">both(双眼视角)</code>' (与 ''<code>n</code>''<nowiki>=</nowiki><code class="constant">3</code> 相同)。<br />
; <code class="option">--compression</code> ''<code>TID:压缩方式</code>''<br />
: 选择用于 VobSub 轨道的压缩方式。注意播放器也得支持该方式。有效的值有 '<code class="literal">none(无压缩)</code>'、'<code class="literal">zlib</code>'、'<code class="literal">lzo</code>'/'<code class="literal">lxo1x</code>'、'<code class="literal">bz2</code>'/'<code class="literal">bzlib</code>' 与 '<code class="literal">mpeg4_p2</code>'/'<code class="literal">mpeg4p2</code>'。值 '<code class="literal">lzo</code>'/'<code class="literal">lxo1x</code>' 与 '<code class="literal">bz2</code>'/'<code class="literal">bzlib</code>' 仅当 mkvmerge 附加相应的 liblzo™ 和 bzlib™ 压缩库编译时有效。压缩方式 '<code class="literal">mpeg4_p2</code>'/'<code class="literal">mpeg4p2</code>' 是一种称为 '''header removal''' 的特殊压缩方式,只对 MPEG4 part 2 视频轨可用。其他压缩方式是可用于所有类型轨道的通用压缩方式。默认为 '<code class="literal">zlib</code>' 压缩。此压缩方式也是几乎所有回放程序都支持的压缩方式。无法保证对除 '<code class="literal">none(无压缩)</code>' 以外的其他压缩方式的支持。<br />
<br />
<br />
仅适用于文本字幕轨道的选项:<br />
<br />
; <code class="option">--sub-charset</code> ''<code>TID:字符集</code>''<br />
: 为指定轨道 ID 指定所用字符集,用以转为 UTF-8 编码的 UTF-8 字幕。如果未指定字符集,则将根据当前区域设置推算字符集。注意对于从 Matroska™ 文件或 Kate 流中读取的字幕不必指定字符集,因为在这些格式中已使用 UTF-8 编码储存。关于 mkvmerge 如何在字符集间进行转换的说明请参见关于 [[mkvmerge#文本文件与字符集转换|文本文件与字符集]] 的段落。此选项可以对同一输入文件多次使用,通过每次选择不同轨道 ID 分别应用到多个轨道。<br />
<br />
<br />
其他选项:<br />
<br />
; <code class="option">-i</code>, <code class="option">--identify</code> ''<code>文件名</code>''<br />
: 将使 mkvmerge 探查单个文件并报告其类型、文件中包含的轨道及其轨道 ID。如果使用了本选项,唯一可用的其他选项就是文件名。<br />
; <code class="option">-l</code>, <code class="option">--list-types</code><br />
: 列出受支持的输入文件类型。<br />
; <code class="option">--list-languages</code><br />
: 列出所有语言及其 ISO639-2 代码,这些代码可以在 <code class="option">--language</code> 选项中使用。<br />
; <code class="option">--priority</code> ''<code>优先级</code>''<br />
: 设置 mkvmerge 运行时的进程优先级。有效的值为 '<code class="literal">lowest(最低)</code>', '<code class="literal">lower(较低)</code>', '<code class="literal">normal(普通)</code>', '<code class="literal">higher(较高)</code>' 与 '<code class="literal">highest(最高)</code>'。如果未予设定,则使用 '<code class="literal">normal(普通优先级)</code>'。在 类-Unix 系统中 mkvmerge 将使用 nice(2) 功能。因此只有超级用户才能使用 '<code class="literal">higher(较高优先级)</code>' 与 '<code class="literal">highest(最高优先级)</code>'。对于 Windows 用户来说所有值都可用。<br />
; <code class="option">--command-line-charset</code> ''<code>字符集</code>''<br />
: 设定在命令行给出的字符串的字符集,用于转为其他字符集。默认为系统当前区域设置中所给定的字符集。此设置将应用到以下选项的变量: <code class="option">--title</code>、<code class="option">--track-name</code> 及 <code class="option">--attachment-description</code>。<br />
; <code class="option">--output-charset</code> ''<code>字符集</code>''<br />
: 设置输出的字符串应被转换到何种字符集。默认为系统当前区域设置中所给定的字符集。<br />
; <code class="option">-r</code>, <code class="option">--redirect-output</code> ''<code>文件名</code>''<br />
: 将所有信息输出至文件 ''<code>文件名</code>'' 而不是在命令行显示。 尽管该操作可以用输出重定向轻松实现,但在某些情况下还需要靠它:如当终端在写入文件之前重新解释(覆盖输出)时。 将优先使用通过 <code class="option">--output-charset</code> 设定的字符集。<br />
; <code class="option">--ui-language</code> ''<code>语言代码</code>''<br />
: 强制使用语言代码为 ''<code>语言代码</code>'' 的翻译(如 '<code class="literal">de_DE</code>' 对应德文翻译)。使用 <code class="varname">LANG</code>, <code class="varname">LC_MESSAGES</code> 及 <code class="varname">LC_ALL</code> 这些环境变量更好。如果在 ''<code>语言代码</code>'' 处输入 '<code class="literal">list</code>',mkvmerge 将输出可用翻译列表。<br />
; <code class="option">@</code>选项文件<br />
: 从文件 ''<code>选项文件</code>'' 中读取额外的命令行参数。首个非空白字符为井号 ('<code class="literal"><nowiki>#</nowiki></code>') 的行将被当作注释对待,在处理过程中将被忽略。各行开头与结尾的空白将被除去。各行必须恰好含有一个选项。没有元字符转义。命令行 ''''mkvmerge -o "我的文件.mkv" -A "一部影片.avi" 声音.ogg'''' 可以转换为下述选项文件: <br />
<pre> # 输出到文件 "我的文件.mkv"。<br />
-o<br />
我的文件.mkv<br />
# 只取 "一部影片.avi" 中的视频。<br />
-A<br />
一部影片.avi<br />
声音.ogg</pre><br />
; <code class="option">--capabilities</code><br />
: 列出编译时附加的可选功能并退出。输出信息的第一行是版本信息。接下来的每行包含一个单词,各单词的出现意味着编译时附加了相应功能。这些功能包括:<br />
:* '<code class="literal">BZ2</code>' -- bzlib™ 压缩库。影响 <code class="option">--compression</code> 选项可用的压缩方式。<br />
:* '<code class="literal">LZO</code>' -- lzo™ 压缩库。影响 <code class="option">--compression</code> 选项可用的压缩方式。<br />
:* '<code class="literal">FLAC</code>' -- 读取原始 FLAC 文件,以及处理其他容器中的 FLAC 轨道,例如 Ogg™ 或 Matroska™ 容器中的。<br />
; <code class="option">-h</code>, <code class="option">--help</code><br />
: 显示用法信息并退出。<br />
; <code class="option">-V</code>, <code class="option">--version</code><br />
: 显示版本信息并退出。<br />
<br />
==用法==<br />
<br />
用户可以选择各文件中 mkvmerge 应该使用的轨道。它们都将被封装到 <code class="option">-o</code>所指定的文件中。可通过 <code class="option">-l</code> 选项获取已知(且受支持的)来源格式列表。<br />
<br />
==示例==<br />
<br />
假定您有个名为 我的影片.avi 的文件,以及分开存放的音频轨如 '<code class="literal">我的影片.wav</code>'。您希望先将音频编码为 OggVorbis™:<br />
<br />
$ oggenc -q4 -o 我的影片.ogg 我的影片.wav<br />
<br />
几分钟后您就可以合并视频和音频了:<br />
<br />
$ mkvmerge -o 我的有声影片.mkv 我的影片.avi 我的影片.ogg<br />
<br />
如果您的 AVI 文件已经含有一条音频轨,则将同时复制该轨道(只要 mkvmerge 支持该音频格式)。要避免此状况,只需要这样<br />
<br />
$ mkvmerge -o 我的有声影片.mkv -A 我的影片.avi 我的影片.ogg<br />
<br />
又过了几分钟,您又制作了另一条音频轨,如 导演评论或者是另一种语言的配音,您生成的文件名是 '<code class="literal">我影片的另一音轨.wav</code>'。 再进行一次编码操作,然后将其合并:<br />
<br />
<br />
$ oggenc -q4 -o 我影片的另一音轨.ogg 我影片的另一音轨.wav<br />
$ mkvmerge -o 我的影片-成品.mkv 我的有声影片.mkv 我影片的另一音轨.ogg<br />
<br />
<br />
照下面的做法结果相同<br />
<br />
$ mkvmerge -o 我的影片-成品.mkv -A 我的影片.avi 我的影片.ogg 我影片的另一音轨.ogg<br />
<br />
现在开启 mplayer™ 尽情享受吧。如果您有多条音频轨(或者甚至是视频轨),那么您可以通过 '<code class="option">-vid</code>' 与 '<code class="option">-aid</code>' 选项告诉 mplayer™ 应该播放哪些轨道。这些是基础功能,不区分视频与音频。<br />
<br />
如果您需要同步音频轨,会非常容易。首先找清 Vorbis 轨道的轨道 ID<br />
<br />
$ mkvmerge --identify 错开了的.ogg<br />
<br />
现在您可以在下述命令行中使用该 ID:<br />
<br />
$ mkvmerge -o 同步了的.mkv -A 源.avi -y 12345:200 错开了的.ogg<br />
<br />
这将在 '<code class="literal">错开了的.ogg</code>' 中 ID 为 <code class="constant">12345</code> 的音频轨的开头添加 200ms 的静音。<br />
<br />
有些影片在开头同步正常,但音画同步会慢慢偏离开。对此类影片您可以指定延时系数,该系数将被应用到所有时间戳 -- 不添加或移除任何数据。因此如果您所设定的系数过大或过小会造成很糟糕的结果。例如我转码的一期节目有 <code class="constant">77340</code> 帧长,在结尾处有 <code class="constant">0.2</code> 秒的同步偏离。在 <code class="constant">29.97fps</code> 帧率下大约是每 <code class="constant">6</code> 帧错开 <code class="constant">0.2</code> 秒。于是我这样操作<br />
<br />
$ mkvmerge -o 同步了的.mkv -y 23456:0,77346/77340 错开了的.mkv<br />
<br />
搞定了。<br />
<br />
同步选项对字幕同样起作用。<br />
<br />
对于文本字幕,您既可以选用一些 Windows 软件(如 SubRipper™)或 '<code class="literal">contrib/subrip</code>' 目录 transcode(1) 的源码中的 subrip™ 包。大体过程是这样的:<br />
<br />
# 从源文件中提取原始字幕流: $ tccat -i /path/to/copied/dvd/ -T 1 -L | tcextract -x ps1 -t vob -a 0x20 | subtitle2pgm -o mymovie<br />
# 使用 gocr 将生成的 PGM 图像转为文本: $ pgm2txt mymovie<br />
# 对生成的文本文件进行拼写检查: $ ispell -d american *txt<br />
# 将文本文件转为 SRT 文件: $ srttool -s -w -i mymovie.srtx -o mymovie.srt<br />
<br />
<br />
这样生成的文件可用作 mkvmerge 的输入文件:<br />
<br />
$ mkvmerge -o mymovie.mkv mymovie.avi mymovie.srt<br />
<br />
如果您希望为指定轨道指定语言,这将很容易完成。首先找到您所需语言的 ISO639-2 代码。mkvmerge 会为您列出所有代码:<br />
<br />
$ mkvmerge --list-languages<br />
<br />
在列表中找到您所需的语言。假定您已在 Matroska™ 文件中放入两条音轨,并希望设置它们的语言代码,两条轨道的轨道 ID 为 2 和 3。可以这样操作<br />
<br />
$ mkvmerge -o 含语言代码的.mkv --language 2:ger --language 3:dut 无语言代码的.mkv<br />
<br />
如您所见,<code class="option">--language</code> 开关可多次使用。<br />
<br />
或许您还想让荷兰语作为默认语言。您还有其他语言的字幕,如英语和法语的,并希望让播放器默认显示法语字幕。可以这样操作<br />
<br />
$ mkvmerge -o 含语言代码的.mkv --language 2:ger --language 3:dut --default-track 3 无语言代码的.mkv --language 0:eng 英语.srt --default-track 0 --language 0:fre 法语.srt<br />
<br />
如果您在 mkvinfo 的输出信息中没找到您指定的语言或默认轨标记,请参阅关于 [[mkvmerge#默认值|默认值]] 的段落。<br />
<br />
==轨道 ID==<br />
<br />
mkvmerge 的一些选项要求提供轨道 ID 以指定应应用到的轨道。 当读取器分离当前输入文件时,或者使用 <code class="option">--identify</code> 选项调用 mkvmerge 时这些轨道 ID 会被显示出来。此类输出的一个示例:<br />
<br />
<br />
$ mkvmerge -i v.mkv<br />
File 'v.mkv': container: Matroska™<br />
Track ID 1: video (V_MS/VFW/FOURCC, DIV3)<br />
Track ID 2: audio (A_MPEG/L3)<br />
<br />
<br />
轨道 ID 通常这样分配:<br />
<br />
* AVI 文件: 视频轨 ID 为 0。音频轨的 ID 由 1 开始升序分配。<br />
* AAC、AC3、MP3、SRT 与 WAV 文件: 此类文件中唯一的 '轨道' 的 ID 为 0。<br />
* Ogg/OGM 文件: 轨道 ID 按在文件中被找到的顺序由 0 开始分配。<br />
* Matroska™ 文件: 轨道 ID 与 mkvinfo 所报告的相同。注意 ''不是'' 轨道 UID。<br />
<br />
<br />
特殊的轨道 ID '<code class="constant">-1</code>' 是个百搭号,它将使给定的开关应用到从输入文件中读到的所有轨道。<br />
<br />
使用轨道 ID 的选项的描述中均含有 '<code class="literal">TID</code>'。此外下列选项也使用轨道 ID: <code class="option">--atracks</code>、<code class="option">--vtracks</code>、<code class="option">--stracks</code> 以及 <code class="option">--btracks</code>。<br />
<br />
==文本文件与字符集转换==<br />
<br />
===注意===<br />
<br />
此段落可应用到 MKVToolNix 中的所有程序,尽管该段仅提及了 mkvmerge。<br />
<br />
<br />
Matroska™ 文件中的所有文本均使用 UTF-8 编码。这意味着 mkvmerge 需要将读取到的文本文件以及从命令行收到的文本从其他字符集转换为 UTF-8。相反,这意味着 mkvmerge 的输出信息同样需要由 UTF-8 转回原来的字符集,例如来自 <code class="option">--ui-language</code> 所选的非英语界面或来自 Matroska™ 文件中的文本。<br />
<br />
mkvmerge 根据是否有 ''字节顺序标记'' (英文缩写: BOM) 出现以及系统的当前区域来进行自动转换。如何根据区域推定字符集取决于 mkvmerge 所执行在的操作系统。<br />
<br />
以 BOM 开头的文本文件已经使用一种 UTF 模式编码。mkvmerge 支持以下五种模式: UTF-8、UTF-16 小端序 及 大端序、UTF-32 小端序 及 大端序。含 BOM 的文本文件将被自动转换为 UTF-8。对此类文件设定字符集的参数 (如 <code class="option">--sub-charset</code>) 将被直接忽略,无通知。<br />
<br />
在 类-Unix 系统 mkvmerge 将使用 setlocale(3) 系统指令,它将返回环境变量 <code class="varname">LANG</code>、<code class="varname">LC_ALL</code> 及 <code class="varname">LC_CYPE</code>。输出的字符集通常是 UTF-8 或 ISO-8859-* 家族之一,将被用于所有文本文件操作以及编码命令行上的字符串和输出到命令行。<br />
<br />
在 Windows 上 mkvmerge 实际上使用两种不同的字符集,因为要执行 Windows shell 程序 '''cmd.exe'''。第一个字符集由 <code class="function">GetCP()</code> 系统指令决定。此字符集用作文本文件转换和 MKVToolNix 工具包中 GUI 程序所显示的所有元素的默认字符集。'''cmd.exe''' 使用另一个字符集,由 <code class="function">GetACP()</code> 系统指令决定。这是命令行读入的所有字符串以及输出到命令行的所有字符串的默认字符集。<br />
<br />
现有下述选项支持指定字符集:<br />
<br />
* <code class="option">--sub-charset</code> 用于文本字幕文件以及存储于字符集含糊的容器格式(如 Ogg 文件)中的文本字幕轨,<br />
* <code class="option">--chapter-charset</code> 用于章节文本文件以及存储于字符集含糊的容器格式(如 Ogg 文件的章节信息,轨道和文件标题等;MP4 文件的章节信息)中的章节和文件标题,<br />
* <code class="option">--command-line-charset</code> 用于所有命令行上的字符串,<br />
* <code class="option">--output-charset</code> 用于输出到命令行或文件(当使用 <code class="option">--redirect-output</code> 选项重定向输出时)的字符串。<br />
<br />
==字幕==<br />
<br />
可在 Matroska™ 文件中嵌入多种文本字幕格式目前 mkvmerge 支持纯文本、VobSub 以及 Kate 字幕格式。文本字幕将被重新编码为 UTF-8 以确保播放器能准确显示(关于 mkvmerge 如何在字符集间进行转换的说明请参见关于 [[mkvmerge#文本文件与字符集转换|文本文件与字符集]] 的段落)。Kate 字幕已经是 UTF-8 编码,因此不会被重新编码。<br />
<br />
目前支持以下字幕格式:<br />
<br />
* Subtitle Ripper (SRT) 文件<br />
* Substation Alpha (SSA) / 高级 Substation Alpha 脚本 (ASS)<br />
* OggKate 流<br />
* VobSub 位图字幕文件<br />
<br />
==文件链接==<br />
<br />
Matroska™ 支持文件链接,即声明当前文件的前趋与后继文件是哪个文件。严谨地讲,被连接的不是文件而是 Matroska™ 剪辑。鉴于大多数文件只含有一个 Matroska™ 剪辑,以下说明中将使用术语 '文件链接',尽管 '剪辑链接' 更为贴切。<br />
<br />
各剪辑由唯一的 128 位宽的剪辑 UID 确定。此 UID 是由 mkvmerge 自动创建的。链接主要通过将前后文件的剪辑 UID (英文缩写: SID) 置于剪辑头部信息中完成。mkvinfo 会在找到 SID 时输出它们。<br />
<br />
如果文件被切割为多段,且启用了链接功能,则文件的时间码不会重新从 0 开始,而是会从上一个文件结束的地方继续计算。这样可以保留绝对时间,即使之前的文件不可用 (如进行流式处理时)。如果未使用链接功能,各文件的时间码应从 0 开始。mkvmerge 默认不启用文件链接。如果您希望启用,可以通过 <code class="option">--link</code> 选项打开。此选项仅当同时启用切割功能时有用。<br />
<br />
无论是否开启了切割功能,用户都可以让 mkvmerge 将生成的文件与指定的 SID 建立链接。可通过 <code class="option">--link-to-previous</code> 与 <code class="option">--link-to-next</code> 选项实现。 这些选项只接受 mkvinfo 所输出的 SID 格式: 16 个 <code class="constant">0x00</code> 与 <code class="constant">0xff</code> 之间的十六进制数,各数字带有 '<code class="literal">0x</code>' 前缀,如 '<code class="literal">0x41 0xda 0x73 0x66 0xd9 0xcf 0xb2 0x1e 0xae 0x78 0xeb 0xb4 0x5e 0xca 0xb3 0x93</code>'。还可以选用另一种较短的格式: 16 个 <code class="constant">0x00</code> 与<code class="constant">0xff</code> 之间的十六进制数,无 '<code class="literal">0x</code>' 前缀,无空格,如 '<code class="literal">41da7366d9cfb21eae78ebb45ecab393</code>'。<br />
<br />
如果启用了切割功能,第一个文件将与通过 <code class="option">--link-to-previous</code> 给定的 SID 建立链接,而最后一个文件将与通过 <code class="option">--link-to-next</code> 给定的 SID 建立链接。如果未启用切割功能,唯一的输出文件将同时与给定的两个 SID 建立链接。<br />
<br />
==默认值==<br />
<br />
Matroska™ 规范提到,一些元素有其默认值。通常为了节省空间,如果一个元素的值等同于其默认值,它将不被写入文件。用户在 mkvinfo 的输出信息中可能发现缺失的元素有 ''<code>语言</code>'' 和 ''<code>默认轨标记</code>''。 ''<code>语言</code>'' 的默认值是 English ('<code class="literal">eng</code>'),''<code>默认轨标记</code>'' 的默认值是 ''<code>true</code>''。因此如果您对一条轨道应用选项 <code class="option">--language 0:eng</code> ,它将不在 mkvinfo 的输出信息中显示。<br />
<br />
==附件==<br />
<br />
或许您希望将一些照片与您的 Matroska™ 文件一起存放,或者您正在使用 SSA 字幕,需要一个非常稀有的特殊 TrueType™ 字体。这种情况下您可以将这些文件附加到 Matroska™ 文件中。它们不会被追加到文件当中,而是被嵌入到文件中。然后播放器就可以显示这些文件 (如 '照片' 一例) 或者用它们来渲染字幕 (如 'TrueType™ 字体' 一例)。<br />
<br />
这是关于如何在输出文件中附加照片和 TrueType™ 字体的示例:<br />
<br />
<br />
$ mkvmerge -o 输出.mkv -A 视频.avi 声音.ogg --attachment-description "乐队与我在后台小聚" --attachment-mime-type image/jpeg --attach-file 乐队与我.jpg --attachment-description "难得一见的绝美字体" --attachment-type application/octet-stream --attach-file 很酷的字体.ttf<br />
<br />
<br />
如果含有附件的 Matroska™ 文件被用作输入文件,mkvmerge 会将附件复制到新文件中。要复制哪些文件、不复制那些文件的选择可以通过 <code class="option">--attachments</code> 与 <code class="option">--no-attachments</code> 选项修改。<br />
<br />
==章节==<br />
<br />
Matroska™ 章节系统比大家知道的旧系统—— OGM 中所使用的——更为强大。完整的规范可以在 [http://www.matroska.org/ Matroska™ 网站] 找到。<br />
<br />
mkvmerge 支持输入两种章节文件。第一种格式,叫作 '''简单章节格式''',与 OGM tools 所用的相同。第二种是基于 XML 的章节格式,它支持 Matroska™ 的所有章节功能。<br />
<br />
===简单章节格式===<br />
<br />
此格式由成对的相继以 '<code class="literal">CHAPTERxx=</code>' 与 '<code class="literal">CHAPTERxxNAME=</code>' 开头的行组成。单数行包含起始时间码,而双数行包含标题。这是一个示例:<br />
<br />
<br />
CHAPTER01=00:00:00.000<br />
CHAPTER01NAME=导入部分<br />
CHAPTER02=00:02:30.000<br />
CHAPTER02NAME=宝宝准备摇<br />
CHAPTER03=00:02:42.300<br />
CHAPTER03NAME=宝宝摇屋子<br />
<br />
<br />
mkvmerge 将转换每两行为一个 Matroska™ <code class="classname">章节单位(ChapterAtom)</code>。这种情况不会设定任何 <code class="classname">章节轨道号(ChapterTrackNumber)</code>,也就是说所有章节被应用到文件的所有轨道。<br />
<br />
由于是文本文件,可能需要进行字符集转换。关于 mkvmerge 如何在字符集间进行转换的说明请参见关于 [[mkvmerge#文本文件与字符集转换|文本文件与字符集]] 的段落。<br />
<br />
===基于 XML 的章节格式===<br />
<br />
基于 XML 的章节格式看起来与这个示例类似:<br />
<br />
<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<!DOCTYPE Chapters SYSTEM "matroskachapters.dtd"><br />
<Chapters><br />
<EditionEntry><br />
<ChapterAtom><br />
<ChapterTimeStart>00:00:30.000</ChapterTimeStart><br />
<ChapterTimeEnd>00:01:20.000</ChapterTimeEnd><br />
<ChapterDisplay><br />
<ChapterString>短短的一节</ChapterString><br />
<ChapterLanguage>eng</ChapterLanguage><br />
</ChapterDisplay><br />
<ChapterAtom><br />
<ChapterTimeStart>00:00:46.000</ChapterTimeStart><br />
<ChapterTimeEnd>00:01:10.000</ChapterTimeEnd><br />
<ChapterDisplay><br />
<ChapterString>那短短的一节的一部分</ChapterString><br />
<ChapterLanguage>eng</ChapterLanguage><br />
</ChapterDisplay><br />
</ChapterAtom><br />
</ChapterAtom><br />
</EditionEntry><br />
</Chapters><br />
<br />
<br />
使用此格式可以做到三件简单章节格式做不到的事:<br />
<br />
# 可以设置章节终止处的时间戳,<br />
# 章节可以嵌套,<br />
# 可以设置语言与国家。<br />
<br />
<br />
mkvtoolnix 分发包的 <code class="filename">doc</code> 子目录包含了一些典型示例文件。<br />
<br />
===一般性备注===<br />
<br />
mkvmerge 切割文件时会同时适当调整章节。这意味着每个文件只包含应用到该文件的章节项,时间码也将被调整到与各输出文件相匹配。<br />
<br />
mkvmerge 能够从 Matroska™ 源文件中复制章节,除非使用 <code class="option">--no-chapters</code> 选项明令禁用。来自各类来源 (Matroska™ 文件、Ogg 文件、MP4 文件、章节文本文件) 的章节通常不被合并,而是分成多个 <code class="classname">ChapterEditions(章节版本)</code>。仅当从多个 Matroska™ 或 XML 文件读取的章节具有相同的版本 UID 时,章节才会被合并为单个 <code class="classname">ChapterEdition</code>。如果在其他情况下需要此类合并,用户需要先用 mkvextract 从所有来源提取章节,手动合并 XML 文件然后再混流。<br />
<br />
==标签==<br />
<br />
===介绍===<br />
<br />
Matroska™ 广泛支持废弃标签,还支持一种新式的、类似其他大多数容器使用的较简单的标签系统: ''<code>KEY=VALUE</code>''。然而,在 Matroska™ 中这些标签也可以嵌套,''<code>KEY</code>'' 与 ''<code>VALUE</code>'' 都是属于它们自身的元素。示例文件 <code class="filename">example-tags-2.xml</code> 展示了如何使用这个新系统。<br />
<br />
===标签细述===<br />
<br />
Matroska™ 标签不会自动应用到整个文件上。它们可以应用到整个文件,还可以应用到文件的不同部分: 一个或多个轨道, 一个或多个章节, 甚至是两者的组合。[http://matroska.org/technical/specs/index.html Matroska™ 规范] 有这方面的更多详情。<br />
<br />
重要的一点是标签通过 <code class="classname">Targets</code> Matroska™ 标签元素与轨道或章节相连,而用于此链接的 UID ''并非'' mkvmerge 常用的轨道 ID。而是 mkvmerge 自动计算而来 (当轨道来自非 Matroska™ 文件时) 或当轨道源文件是 Matroska™ 文件时复制而来的 的 UID。因此在文件被 mkvmerge 处理过之前很难知道应该在标签文件中使用哪些 UID。<br />
<br />
mkvmerge 支持两个为 Matroska™ 文件添加标签的选项: <code class="option">--global-tags</code> 与 <code class="option">--tags</code> 选项。不同之处在于前者,<code class="option">--global-tags</code>,将通过移除所有上文提到的 <code class="classname">Targets</code> 元素使标签应用到整个文件。 而后者,<code class="option">--tags</code>,将使 mkvmerge 为通过 <code class="option">--tags</code> 选项的 ''<code>TID</code>'' 部分指定的标签自动插入 UID。<br />
<br />
===示例===<br />
<br />
假定您希望为从一个 AVI 文件读取的视频轨道添加标签。'''mkvmerge --identify 文件.avi''' 告诉您该视频轨道的 ID (不要将此 ID 与 UID 混淆!) 为 0。于是您创建了一个标签文件,省去了所有 <code class="classname">Targets</code> 元素,然后这样调用 mkvmerge<nowiki>: </nowiki><br />
<br />
<br />
$ mkvmerge -o 文件.mkv --tags 0:标签.xml 文件.avi<br />
<br />
<br />
===标签文件格式===<br />
<br />
mkvmerge 支持基于 XML 的标签文件格式。此格式是以 [http://matroska.org/technical/specs/index.html Matroska™ 规范] 为依据严格制定的。MKVToolNix 的程序以及源码分发包都含有名为 <code class="filename">example-tags-2.xml</code> 的示例文件,该文件已简明地列出了所有已知的可用作实际处理的基本标签。<br />
<br />
基本要点有:<br />
<br />
* 最外层的元素必须为 <code class="classname"><Tags></code>。<br />
* 实际意义上的标签放在 <code class="classname"><Tag></code> XML 标签对中。<br />
* 标签内容前后的空白将被忽略。<br />
<br />
===数据类型===<br />
<br />
新的 Matroska™ 标签系统只识别两种数据类型,UTF-8 字串与二进制类型。前者用于标签名称和 <code class="classname"><String></code> 元素,而二进制类型用于 <code class="classname"><Binary></code> 元素。<br />
<br />
由于二进制数据自身与 XML 文件不相容,mkvmerge 支持另两种储存二进制数据的方法。如果 XML 标签的内容以 '<code class="literal">@</code>' 开头,则后续文本将被作为文件名对待。相应文件的内容将被复制到 Matroska™ 元素中。<br />
<br />
还有一种可能,即数据经 ''Base64'' 编码。这是将二进制数据转换为一定的 ASCII 字集字符,在电子邮件等程序中有所应用。mkvextract 将将二进制元素以 ''Base64'' 编码的数据的形式输出。<br />
<br />
已被废弃的标签系统可识别更多的数据类型,这在 Matroska™ 官方的标签规范中可以找到。由于 mkvmerge 不再支持此系统,此处不对这些类型作多余说明。<br />
<br />
==Matroska™ 文件规划==<br />
<br />
Matroska™ 文件规划非常灵活。mkvmerge 将按预先定义的方式渲染文件。生成的文件是这样的:<br />
<br />
[EBML 头] [剪辑 {元定位 #1} [剪辑信息] [轨道信息] {附件} {章节} [簇 1] {簇 2} ... {簇 n} {索引} {元定位 #2} {标签}]<br />
<br />
大括号中的元素是可选的,依所用的内容和选项而定。有两点要注意的:<br />
<br />
* 元定位 #1 只包含很少量的 level 1 元素,且仅当它们存在时才包含:附件、章节、索引、标签以及元定位 #2。较早版本的 mkvmerge 亦曾将簇放置在元定位元素中。因此应留给不精确的传言一些空间——真相总会大白。 现在只有簇才被储存在元定位 #2 中,元定位 #1 将引用元定位元素 #2。<br />
* 附件、章节和标签元素仅当被添加后才会出现。<br />
<br />
<br />
允许的最短小的 Matroska 文件是像这样的:<br />
<br />
[EBML 头] [剪辑 [剪辑信息] [轨道信息] [簇 1]]<br />
<br />
这也是纯音频文件的样子。<br />
<br />
==外部时间码文件==<br />
<br />
mkvmerge 允许用户为各轨道选择特定的时间码。这可用来创建包含可变帧率视频或音频中有空隙的文件。这种情况下的帧是 mkvmerge 创建各 Matroska™ 块的单位。对视频来说恰好是一帧,对音频来说是相应音频类型的一个数据包。例如对 AC3 来说是包含 <code class="constant">1536</code> 采样的一个数据包。<br />
<br />
用于轨道追加合并的时间码必须只指定给一系列(同一)轨道的第一部分。例如当您追加合并两个文件,v1.avi 与 v2.avi,且希望使用时间码时,您的命令行必须像这样组织:<br />
<br />
<br />
mkvmerge ... --timecodes 0:我的时间码.txt v1.avi +v2.avi<br />
<br />
<br />
mkvmerge 可识别四种格式的时间码。版本号在时间码文件的第一行内。空行,只含有空格的行,以及以 '<code class="literal"><nowiki>#</nowiki></code>' 开头的行在处理时将被忽略。<br />
<br />
===时间码文件格式 v1===<br />
<br />
此格式的第一行是版本声明。第二行则声明默认的帧率。 接下来的各行包含由逗号分隔的三个数字: 起始帧(<code class="constant">0</code> 代表第一帧)、终止帧以及此范围内的帧率。FPS(帧率) 为浮点数,小数点用 '<code class="literal">.</code>' 表示。各行定义的范围间可以有间隔,间隔内将使用默认的 FPS。一个示例:<br />
<br />
<nowiki><br />
# timecode format v1<br />
assume 27.930<br />
800,1000,25<br />
1500,1700,30<br />
</nowiki><br />
<br />
===时间码文件格式 v2===<br />
<br />
此格式中每行包含相应帧的时间码。此时间码必须以毫秒为精度。可以使浮点数,但不强求。您指定的时间码行数 ''必须'' 不少于对应轨道的帧数。此类文件中的时间码必须经过排序。 以 25fps 为例:<br />
<br />
<nowiki><br />
# timecode format v2<br />
0<br />
40<br />
80<br />
</nowiki><br />
<br />
===时间码文件格式 v3===<br />
<br />
此格式中各行包含时长(秒数),后接(可选)帧率。 二者均可为浮点数。 如果未提供帧率,则采用默认的帧率。 对于音频,您应当让编解码器自行计算各帧的时间码。 这样您应当使用 <code class="constant">0.0</code> 作为帧率。 您可以使用 '<code class="literal">gap</code>' 关键词后接空隙时长在流中创建空隙。 以音频文件为例:<br />
<br />
<nowiki><br />
# timecode format v3<br />
assume 0.0<br />
25.325<br />
7.530,38.236<br />
gap, 10.050<br />
2.000,38.236<br />
</nowiki><br />
<br />
===时间码文件格式 v4===<br />
<br />
此格式与 v2 格式相似。 唯一的不同在于时间码不必经过排序。 通常不应使用此格式。<br />
<br />
==退出代码==<br />
<br />
mkvmerge 退出时会返回以下三个退出代码中的一个:<br />
<br />
* <code class="constant">0</code> -- 此退出代码说明已成功完成混流。<br />
* <code class="constant">1</code> -- 这种情况下 mkvmerge 至少输出了一条警告信息,但混流并未因之中止。 警告信息以文字 '<code class="literal">警告:</code>' 为前缀。根据问题的不同,生成的文件可能是好的,也可能不是。 强烈建议用户检查警告信息以及生成的文件。<br />
* <code class="constant">2</code> -- 此退出代码用于错误发生之后。 mkvmerge 在输出错误信息后即中断处理。错误信息可能是错误的命令行参数,也可能是损坏文件的读取/写入错误。<br />
<br />
==参阅==<br />
<br />
* [[mkvinfo]]<br />
* [[mkvextract]]<br />
* [[mkvpropedit]]<br />
* [[mmg]]<br />
<br />
==网络==<br />
<br />
最新版本总可以在 [http://www.bunkus.org/videotools/mkvtoolnix/ MKVToolNix 主页] 找到。</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Mkvmerge&diff=286
Mkvmerge
2010-08-01T05:39:36Z
<p>XsLiDian:以内容'''(作者:Moritz Bunkus; 译者:~~~; 复制自 [http://greatdreamers.cn/projects/mkvtoolnix/doc/mkvmerge.html mkvmerge])'' ==名称== mkvmerge — 将多媒体…'创建新页面</p>
<hr />
<div>''(作者:Moritz Bunkus;<br />
译者:[[User:XsLiDian|XsLiDian]];<br />
复制自 [http://greatdreamers.cn/projects/mkvtoolnix/doc/mkvmerge.html mkvmerge])''<br />
==名称==<br />
<br />
mkvmerge — 将多媒体流合并到 Matroska™ 文件中<br />
<br />
==概要==<br />
<br />
<code class="command">mkvmerge [全局选项] {-o 输出文件} [选项1] {文件1} [ [选项2] {文件2} ] [@选项文件]</code><br />
<br />
==说明==<br />
<br />
本程序可读取多种媒体文件并将它们的数据流(全部或者按选择)合并到 Matroska™ 文件中去;参见 [http://www.matroska.org/ Matroska™ 网站]。<br />
<br />
全局选项:<br />
<br />
; <code class="option">-v</code>, <code class="option">--verbose</code><br />
: 增强“详细”程度。<br />
; <code class="option">-q</code>, <code class="option">--quiet</code><br />
: 取消状态输出。<br />
; <code class="option">-o</code>, <code class="option">--output</code> ''<code>文件名</code>''<br />
: 写至文件 ''<code>文件名</code>''。如果使用了切割功能,对此参数的处理将有所不同。 详情请参阅关于 <code class="option">--split</code> 选项的说明。<br />
; <code class="option">-w</code>, <code class="option">--webm</code><br />
: 创建 WebM 兼容文件。如果输出文件扩展名为 "webm" 则将自动开启本选项。此模式将实施一些限制。只允许使用编解码器为 VP8 视频与 Vorbis 音频的轨道。章节与标签功能都不允许使用。DocType 文档类型头项将更改为 "webm"。<br />
; <code class="option">--title</code> ''<code>标题</code>''<br />
: 设置整个生成文件的标题,比如电影名称。<br />
; <code class="option">--tags</code> ''<code>文件名</code>''<br />
: 从 XML 文件 ''<code>文件名</code>'' 中读取全局标签。详细情况请参阅下文关于标签的段落。<br />
; <code class="option">--default-language</code> ''<code>语言代码</code>''<br />
: 设置默认语言代码。所有轨道将使用此语言码,除非被用 <code class="option">--language</code> 选项覆盖。默认的语言代码是 '<code class="literal">und</code>' 代表 'undefined'(未定)。<br />
<br />
<br />
剪辑信息处理: (全局选项)<br />
<br />
; <code class="option">--segmentinfo</code> ''<code>文件名.xml</code>''<br />
: 从 XML 文件中读取剪辑信息。此文件可以包含剪辑族的 UID、剪辑的 UID、上一剪辑以及下一剪辑的 UID 元素。示例文件以及 DTD 已包含在 MKVToolNix 发布包中。<br />
; <code class="option">--segment-uid</code> ''<code>SID1,SID2,...</code>''<br />
: 设定要使用的剪辑 UID。这是个逗号分割的 128 位 UID 列表,UID 为通常的格式: 十六进制数字,"0x" 前缀可选,空格可选,但必须恰好有 32 个数位。创建的每个文件都包含一个剪辑,每个剪辑有一个剪辑 UID。如果指定的剪辑 UID 比创建的剪辑多,则多余的 UID 将被忽略。如果指定的 UID 比创建的剪辑少,则将随机创建 UID。<br />
<br />
<br />
章节与标签处理: (全局选项)<br />
<br />
; <code class="option">--chapter-language</code> ''<code>语言代码</code>''<br />
: 设置各章节项的 ISO639-2 语言代码。 默认为 '<code class="literal">eng</code>'。 详情参见下文中关于 [[mkvmerge#章节|章节]] 的段落。此选项可用于简单章节文件与包含章节但不含章节语言信息的源文件,如 MP4 与 OGM 文件。<br />
; <code class="option">--chapter-charset</code> ''<code>字符集</code>''<br />
: 设置简单章节文件所用的字符集,用以转为 UTF-8。关于 mkvmerge(1) 如何在字符集之间转换的说明请参见关于 [[mkvmerge#文本文件与字符集转换|文本文件与字符集]] 的段落。此开关亦可应用到从特定容器类型,如 Ogg/OGM 和 MP4 文件中复制而来的章节。 详情参见下文关于章节的段落。<br />
; <code class="option">--cue-chapter-name-format</code> ''<code>格式</code>''<br />
: mkvmerge(1) 支持读取音频文件的 CUE 表单作为章节输入。CUE 表单中各索引项通常含有 <code class="varname">PERFORMER(表演者)</code> 与 <code class="varname">TITLE(标题)</code> 项。mkvmerge(1) 使用这两个字串构建章节名称。使用此选项可设定构建名称所用的格式。如果此选项未给定则 mkvmerge(1) 默认使用 '<code class="code">%p - %t</code>' 格式 (表演者, 后接空格, 一个破折号, 另一个空格以及标题)。如果给定了格式,则除了后续的标签字符以外都将被原样复制,标签字符将被进行下述替换:<br />
:* ''<code>%p</code>'' 被当前项的 <code class="varname">PERFORMER(表演者)</code> 字符串替代,<br />
:* ''<code>%t</code>'' 被当前项的 <code class="varname">TITLE(标题)</code> 字符串替代,<br />
:* ''<code>%n</code>'' 被当前轨道编号替代,此外<br />
:* ''<code>%N</code>'' 被当前轨道衬式编号(小于 10 则在前面加零)替代。<br />
; <code class="option">--chapters</code> ''<code>文件名</code>''<br />
: 从文件 ''<code>文件名</code>'' 读取章节信息。详情参阅下文关于 [[mkvmerge#章节|章节]] 的段落。<br />
; <code class="option">--global-tags</code> ''<code>文件名</code>''<br />
: 从文件 ''<code>文件名</code>'' 读取全局标签。详情参阅下文关于 [[mkvmerge#标签|标签]] 的段落。<br />
<br />
<br />
全局输出控制 (高级全局选项):<br />
<br />
; <code class="option">--track-order</code> ''<code>FID1:TID1,FID2:TID2,...</code>''<br />
: 此选项更改输入文件创建时轨道的顺序。变量为逗号分隔的成对的 ID 列。每对先包含有文件 ID (''<code>FID1</code>''),即文件在命令行中的顺序,由 0 开始计数。第二个是在该文件中的轨道 ID (''<code>TID1</code>'')。 如果省去部分轨道的 ID,则这些轨道将在使用本选项给定的轨道创建之后创建。<br />
; <code class="option">--cluster-length</code> ''<code>指令</code>''<br />
: 限制每个簇中数据块的数量或数据的时长。''<code>指令</code>'' 参数可以是无单位的数字 ''<code>n</code>'',也可以是后缀有 '<code class="literal">ms</code>' 的 ''<code>d</code>''。如果未使用数字,mkvmerge(1) 将在每个簇中放置最多 ''<code>n</code>'' 个数据块。最大块数是 65535。如果数字 ''<code>d</code>'' 后缀有 '<code class="literal">ms</code>',mkvmerge(1) 将在每个簇中放置最多 ''<code>d</code>'' 毫秒的数据。''<code>d</code>'' 的最小值是 '<code class="literal">100ms</code>',最大值是 '<code class="literal">32000ms</code>'。mkvmerge(1) defaults to putting at most 65535 data blocks and 5000ms of data into a cluster.尝试定位到特定帧的程序只能直接定位到簇,然后需要读取整个簇(来完成定位)。因此创建较大的簇将导致定位不精确或缓慢。<br />
; <code class="option">--no-cues</code><br />
: 让 mkvmerge(1) 不要创建或写入 cue 索引( 可类比作 AVI 文件中的索引)。没有索引的 Matroska™ 文件也能播放,但定位可能不精确且缓慢。仅当您确实强求空间或用作测试时使用此选项。请参阅可为各输入文件指定的 <code class="option">--cues</code> 选项。<br />
; <code class="option">--clusters-in-meta-seek</code><br />
: 告诉 mkvmerge(1) 在文件末尾创建包含所有簇的元定位元素。参阅关于 [[mkvmerge#Matroska™ 文件规划|Matroska™ 文件规划]] 的段落。<br />
; <code class="option">--disable-lacing</code><br />
: 禁用所有轨道的紧缩。这将增加文件大小,尤其是当有很多音频轨时。此选项不供日常之用。<br />
; <code class="option">--enable-durations</code><br />
: 为所有块写入时长。这将增大文件尺寸,而且目前对播放器来说不提供任何额外的益处。<br />
; <code class="option">--timecode-scale</code> ''<code>系数</code>''<br />
: 强制时间码缩放系数为 ''<code>系数</code>''。有效值域为 <code class="constant">1000</code>..<code class="constant">10000000</code> 或特殊值 <code class="constant">-1</code>。通常 mkvmerge(1) 会使用数值 <code class="constant">1000000</code>,这样时间码和时长的精度为 1ms。对于不包含视频轨但含有至少一条音频轨的文件,mkvmerge(1) 将自动选择一个时间码缩放系数以使各轨的音频采样精度相同。这将引起更大的额外开销,但将允许更为精确的定位与提取。如果使用了特殊值 <code class="constant">-1</code>,即使有视频轨,mkvmerge(1) 也将使用采样精度。<br />
<br />
<br />
文件切割、链接与追加合并 (其他全局选项):<br />
<br />
; <code class="option">--split</code> ''<code>指令</code>''<br />
: 在给定尺寸或时间之后切割输出文件。请注意,各轨道只能在关键帧之前的位置切割开。由于缓冲原因,mkvmerge(1) 将在达到切割点后发现的首个关键帧前的位置切割。因此实际切割点可能比用户指定的稍稍靠后些。目前 mkvmerge(1) 支持三种不同模式。<br />
:# 按尺寸切割。语法: <code class="option">--split</code> [size:]''<code>d</code>''[k|m|g]示例: <code class="code">--split size:700m</code> 或者 <code class="code">--split 150000000</code>参数 ''<code>d</code>'' 可以以 '<code class="literal">k</code>'、'<code class="literal">m</code>' 或 '<code class="literal">g</code>' 结尾,分别说明尺寸的单位为 KB、MB 或 GB。若不加单位,则假定单位为字节。 当前输出文件达到此尺寸限制后将开始输出新的文件。为兼顾兼容性,'<code class="literal">size:</code>' 前缀可以省略。<br />
:# 在一定时长后切割。语法: <code class="option">--split</code> [duration:]''<code>HH:MM:SS.nnnnnnnnn</code>''<nowiki>|</nowiki>''<code>d</code>''s示例: <code class="code">--split duration:00:60:00.000</code> 或 <code class="code">--split 3600s</code>此参数可以用 ''<code>HH:MM:SS.nnnnnnnnn</code>'' 的形式指定纳秒精度的时长,也可以是后接字母 '<code class="literal">s</code>' 的指定秒数时长的数字 ''<code>d</code>''。''<code>HH</code>'' 为小时数,''<code>MM</code>'' 为分钟数,''<code>SS</code>'' 为秒数,而''<code>nnnnnnnnn</code>'' 为纳秒数。 小时数与纳秒数均可省略。 小数点后最多可以有九位。 当前输出内容的时长达到此限制后将开始输出新的输出文件。为兼顾兼容性,'<code class="literal">duration:</code>' 前缀可以省略。<br />
:# 在指定时间码后切割。语法: <code class="option">--split</code> timecodes:''<code>A</code>''[,''<code>B</code>''[,''<code>C</code>''...]]示例: <code class="code">--split timecodes:00:45:00.000,01:20:00.250,6300s</code>参数 ''<code>A</code>''、''<code>B</code>''、''<code>C</code>'' 等等的格式与按时长切割模式(见上文)所用的格式相同。时间码表以逗号分隔。 输入流达到当前切割点的时间码后将创建新的输出文件。然后将使用所给定的下一个切割点。'<code class="literal">timecodes:</code>' 前缀不得省略。此切割模式下输出文件名将以不同于常用操作的方式对待。可能会含有类似 <code class="function">printf</code> 的表达式 '<code class="literal">%d</code>',包括可选的字段宽度,如 '<code class="literal">%02d</code>'。如果含有上述表达式,当前文件序号将按相应格式生成,然后插入到文件名中的相应位置。 如果没有此类匹配模式,则假定匹配模式为在文件扩展名之前插入 '<code class="literal">-%03d</code>': '<code class="literal">-o 输出.mkv</code>' 将生成 '<code class="literal">输出-001.mkv</code>' 这样的一系列文件。如果没有扩展名,'<code class="literal">-%03d</code>' 将被追加在文件名之后。<br />
; <code class="option">--link</code><br />
: 切割输出文件时连接文件。详情请参阅下文 [[mkvmerge#文件链接|文件链接]] 段落。<br />
; <code class="option">--link-to-previous</code> ''<code>剪辑-UID</code>''<br />
: 连接第一个输出文件到指定 ''<code>剪辑-UID</code>'' 参数对应的剪辑。详情请参阅下文 [[mkvmerge#文件链接|文件链接]] 段落。<br />
; <code class="option">--link-to-next</code> ''<code>剪辑-UID</code>''<br />
: 连接最后一个输出文件到指定 ''<code>剪辑-UID</code>'' 参数对应的剪辑。详情请参阅下文 [[mkvmerge#文件链接|文件链接]] 段落。<br />
; <code class="option">--append-mode</code> ''<code>模式</code>''<br />
: 决定追加合并文件时如何计算时间码。 参数 ''<code>模式</code>'' 可以有两个数值: 默认的 '<code class="literal">file(文件)</code>' 和 '<code class="literal">track(轨道)</code>'。当 mkvmerge 将来自另一文件 (本段中假设为 '<code class="literal">文件2</code>') 的一条轨道 (假设为 '<code class="literal">轨道2_1</code>' ) 追加合并到首个文件 (假设为 '<code class="literal">文件1</code>')的一条轨道 (假设为 '<code class="literal">轨道1_1</code>') 时,它将为 '<code class="literal">轨道2_1</code>' 的所有时间码设定一定量的延时。 对于 '<code class="literal">file(文件)</code>' 模式此延时量是 '<code class="literal">文件1</code>' 中遇到的最大时间码,即使此时间码不属于轨道 '<code class="literal">轨道1_1</code>'。而在 track (轨道模式)下此延时为 '<code class="literal">轨道1_1</code>' 的最大时间码。不幸的是 mkvmerge 无法侦测使用哪种模式更为可靠。因此默认为 '<code class="literal">file(文件)</code>' 模式。'<code class="literal">file</code>' 模式对单独创建的文件的处理通常更好;例如在追加 AVI 或 MP4 文件时。'<code class="literal">track(轨道)</code>' 模式对一个大文件的完整分块的处理更好,例如对于 VOB 与 EVO 文件。即使选用了 '<code class="literal">track(轨道)</code>' 模式,字母轨道也将按照 '<code class="literal">file(文件)</code>' 模式处理。<br />
; <code class="option">--append-to</code> ''<code>SFID1:STID1:DFID1:DTID1[,...]</code>''<br />
: 此选项控制要追加合并哪些轨道与哪些轨道。 各指令由四个 ID 组成: 源文件 ID, 源轨道 ID, 目标文件 ID 和目标轨道 ID。 第一对,"源文件 ID" 与 "源轨道 ID"确定要追加合并的轨道。 第二对,"目标文件 ID" 与 "目标轨道 ID",确定源轨道要追加合并到的轨道。如果忽略本选项,则将使用标准映射。 标准映射即将当前文件的各个轨道追加到前一个文件的相应轨道(轨道 ID 相同)。 当影片被切割为多段,且各文件中轨道数和轨道 ID 相同时,这将允许简单的追加合并,命令行为 '''mkvmerge -o 输出.mkv 第一段.mkv +第二段.mkv'''。<br />
; <code class="option">+</code><br />
: 单个 '+' 将追加后面的文件,而不是添加。'+' 也可以直接放在下一个文件名的前面。因此以下两条命令等效: <br />
$ mkvmerge -o 完整.mkv 文件1.mkv + 文件2.mkv<br />
$ mkvmerge -o 完整.mkv 文件1.mkv +文件2.mkv<br />
<br />
<br />
<br />
附件支持(其他全局选项):<br />
<br />
; <code class="option">--attachment-description</code> ''<code>描述</code>''<br />
: 对后面附件的纯文字描述。将应用到下一个 <code class="option">--attach-file</code> 或 <code class="option">--attach-file-once</code> 选项。<br />
; <code class="option">--attachment-mime-type</code> ''<code>MIME 类型</code>''<br />
: 后面附件的 MIME 类型。将应用到下一个 <code class="option">--attach-file</code> 或 <code class="option">--attach-file-once</code> 选项。 官方认可的 MIME 类型列表可以在如 [http://www.iana.org/assignments/media-types/ IANA 主页] 找到。MIME 类型对附件来说是必需的。<br />
; <code class="option">--attachment-name</code> ''<code>名称</code>''<br />
: 设置此附件将在输出文件中储存的名称。 如果未给出此选项则将由 <code class="option">--attach-file</code> 或 <code class="option">--attach-file-once</code> 选项所设的文件名推得。<br />
; <code class="option">--attach-file</code> ''<code>文件名</code>'', <code class="option">--attach-file-once</code> ''<code>文件名</code>'' <br />
: 在 Matroska™ 文件中创建文件附件。MIME 类型必须在使用此选项之前设定。两种形式的不同之处在于使用 <code class="option">--attach-file</code> 附加的文件在切割过程中将被附加到所有输出文件中,而使用 <code class="option">--attach-file-once</code> 附加的文件只被附加到创建的首个文件中。如果未使用切割功能,两种形式效果相同。可以使用 mkvextract 从 Matroska™ 文件中提取附件文件。<br />
<br />
<br />
用于各输入文件的选项:<br />
<br />
; <code class="option">-a</code>, <code class="option">--audio-tracks</code> ''<code>n,m,...</code>''<br />
: 复制 ''<code>n</code>''、''<code>m</code>'' 等音频轨。数字是可以通过 <code class="option">--identify</code> 开关获取的轨道 ID。他们不只是简单的轨道序号(参见 [[mkvmerge#轨道 ID|轨道 ID]]段落)。默认: 复制所有音频轨道。<br />
; <code class="option">-d</code>, <code class="option">--video-tracks</code> ''<code>n,m,...</code>''<br />
: 复制 ''<code>n</code>''、''<code>m</code>'' 等视频轨。数字是可以通过 <code class="option">--identify</code> 开关获取的轨道 ID。他们不只是简单的轨道序号(参见 [[mkvmerge#轨道 ID|轨道 ID]]段落)。默认: 复制所有视频轨道。<br />
; <code class="option">-s</code>, <code class="option">--subtitle-tracks</code> ''<code>n,m,...</code>''<br />
: 复制 ''<code>n</code>''、''<code>m</code>'' 等字幕轨。数字是可以通过 <code class="option">--identify</code> 开关获取的轨道 ID。他们不只是简单的轨道序号(参见 [[mkvmerge#轨道 ID|轨道 ID]]段落)。默认: 复制所有字幕轨道。<br />
; <code class="option">-b</code>, <code class="option">--button-tracks</code> ''<code>n,m,...</code>''<br />
: 复制 ''<code>n</code>''、''<code>m</code>'' 等按钮轨。数字是可以通过 <code class="option">--identify</code> 开关获取的轨道 ID。他们不只是简单的轨道序号(参见 [[mkvmerge#轨道 ID|轨道 ID]]段落)。默认: 复制所有按钮轨道。<br />
; <code class="option">--track-tags</code> ''<code>n,m,...</code>''<br />
: 复制 ''<code>n</code>''、''<code>m</code>'' 等轨道的标签。数字是可以通过 <code class="option">--identify</code> 开关获取的轨道 ID。他们不只是简单的轨道序号(参见 [[mkvmerge#轨道 ID|轨道 ID]]段落)。默认: 复制所有轨道的标签。<br />
; <code class="option">-m</code>, <code class="option">--attachments</code> ''<code>n[<nowiki>:all|first</nowiki>],m[<nowiki>:all|first</nowiki>],...</code>''<br />
: 复制 ID 为 ''<code>n</code>''、''<code>m</code>'' 等的附件到所有或者仅首个输出文件中。各 ID 后可接 '<code class="literal"><nowiki>:all</nowiki></code>'(如果两可选数值均未输入,此为默认值)或者 '<code class="literal"><nowiki>:first</nowiki></code>'。如果切割功能已被起用,则 ID 被指定为 '<code class="literal"><nowiki>:all</nowiki></code>' 的附件将被复制到所有生成的输出文件中,而其他附件只被复制到首个输出文件中。如果未使用切割功能则两变量等效。默认复制所有附件到所有输出文件中。<br />
; <code class="option">-A</code>, <code class="option">--no-audio</code><br />
: 不要从此文件中复制任何音频轨。<br />
; <code class="option">-D</code>, <code class="option">--no-video</code><br />
: 不要从此文件中复制任何视频轨。<br />
; <code class="option">-S</code>, <code class="option">--no-subtitles</code><br />
: 不要从此文件中复制任何字幕轨。<br />
; <code class="option">-B</code>, <code class="option">--no-buttons</code><br />
: 不要从此文件中复制任何按钮轨。<br />
; <code class="option">-T</code>, <code class="option">--no-track-tags</code><br />
: 不要从此文件中复制任何轨道细节标签。<br />
; <code class="option">--no-chapters</code><br />
: 不要从此文件中复制章节。<br />
; <code class="option">-M</code>, <code class="option">--no-attachments</code><br />
: 不要从此文件中复制附件。<br />
; <code class="option">--no-global-tags</code><br />
: 不要从此文件中复制全局标签。<br />
; <code class="option">--chapter-charset</code> ''<code>字符集</code>''<br />
: 设置源文件中章节信息的字符集,以供转为 UTF-8 之用。关于 mkvmerge(1) 如何在字符集之间进行转换的说明,请参阅下文 [[mkvmerge#文本文件与字符集转换|文本文件与字符集]] 段落。<br />
; <code class="option">--chapter-language</code> ''<code>语言代码</code>''<br />
: 选择各章节项所用的 ISO639-2 语言代码。 此选项可用于包含章节但不含关于章节语言的信息的源文件,如 MP4 与 OGM 文件。<br />
; <code class="option">-y</code>, <code class="option">--sync</code> ''<code>TID:d[,o[/p]]</code>''<br />
: 将 id 为 ''<code>TID</code>'' 的轨道的时间码按 ''<code>d</code>'' ms 进行调整。轨道 ID 与 <code class="option">--identify</code> 所给出的相同 (参见 [[mkvmerge#轨道 ID|轨道 ID]] 段落)。''<code>o</code>''/''<code>p</code>''<nowiki>: 按 </nowiki>''<code>o</code>''/''<code>p</code>'' 调整时间戳以修复线性偏移。如果省略 ''<code>p</code>'' 则默认为 1。''<code>o</code>'' 与 ''<code>p</code>'' 均可为浮点数。默认: 无手动同步校正 (与 ''<code>d</code>'' = <code class="constant">0</code> 及 ''<code>o</code>''/''<code>p</code>'' = <code class="constant">1.0</code> 效果相同)。此选项可以对同一输入文件多次使用,通过每次选择不同轨道 ID 分别应用到多个轨道。<br />
; <code class="option">--cues</code> ''<code>TID:none|iframes|all</code>''<br />
: 控制为指定轨道 (参阅 [[mkvmerge#轨道 ID|轨道 ID]] 段落) 创建何种 cue 索引。'<code class="literal">none(无)</code>' 将阻止 cue 索引的创建。 而 '<code class="literal">iframes(仅 i 帧)</code>' 表示仅将没有前后参考的块 ( = 视频轨道中的 I 帧) 置于 cue 索引项中。'<code class="literal">all(全部)</code>' 将使 mkvmerge(1) 为所有区块创建索引,会使生成的文件非常大。默认视频轨为 '<code class="literal">iframes(仅 i 帧)</code>',其他所有轨道均为 '<code class="literal">none(无)</code>'. 参见不论是否使用 <code class="option">--cues</code> 选项时都能阻止创建 cue 索引项的 <code class="option">--no-cues</code> 选项。此选项可以对同一输入文件多次使用,通过每次选择不同轨道 ID 分别应用到多个轨道。<br />
; <code class="option">--default-track</code> ''<code>TID[<nowiki>:bool</nowiki>]</code>''<br />
: 当为设定可选变量 ''<code>bool</code>'' 时为指定轨道 (参见 [[mkvmerge#轨道 ID|轨道 ID]] 段落) 设置 '默认轨' 标记。 当用户未明确选定一个轨道时,播放器将优先选用设有 '默认轨' 标记的轨道。各类 (音频、视频、字幕、按钮) 轨道只能有一条设置 '默认轨' 标记。 如果用户希望所有轨道都不被设置默认轨标记,可以将所有轨道的 ''<code>bool</code>'' 设为 <code class="constant">0</code>。此选项可以对同一输入文件多次使用,通过每次选择不同轨道 ID 分别应用到多个轨道。<br />
; <code class="option">--forced-track</code> ''<code>TID[<nowiki>:bool</nowiki>]</code>''<br />
: 若未给出可选参数 ''<code>bool</code>'',则为指定轨道 (参见 [[mkvmerge#轨道 ID|轨道 ID]] 段落) 设置“强制轨”标记。播放器必须播放“强制轨”标记为 <code class="constant">1</code> 的所有轨道。此选项可以对同一输入文件多次使用,通过每次选择不同轨道 ID 分别应用到多个轨道。<br />
; <code class="option">--blockadd</code> ''<code>TID:层级</code>''<br />
: 只保留选定轨道中高达 ''<code>层级</code>'' 层级的 <code class="classname">BlockAdditions</code> 附加块。 默认保留所有层级。 此选项只影响特定类型的编解码器,如 WAVPACK4。<br />
; <code class="option">--track-name</code> ''<code>TID:名称</code>''<br />
: 将指定轨道 (参见 [[mkvmerge#轨道 ID|轨道 ID]] 段落) 的轨道名称设为 ''<code>名称</code>''。<br />
; <code class="option">--language</code> ''<code>TID:语言</code>''<br />
: 为指定轨道 (参见 [[mkvmerge#轨道 ID|轨道 ID]]) 设置语言。允许使用 ISO639-2 语言代码与 ISO639-1 国家代码。国家代码将被自动转换为语言代码。 可以使用 <code class="option">--list-languages</code> 选项列出所有语言以及它们的 ISO639-2 代码。此选项可以对同一输入文件多次使用,通过每次选择不同轨道 ID 分别应用到多个轨道。<br />
; <code class="option">-t</code>, <code class="option">--tags</code> ''<code>TID:文件名</code>''<br />
: 从文件 ''<code>文件名</code>'' 读取轨道号为 ''<code>TID</code>'' 的轨道的标签。详情参见下文 [[mkvmerge#标签|标签]] 段落。<br />
; <code class="option">--aac-is-sbr</code> ''<code>TID[<nowiki>:0|1</nowiki>]</code>''<br />
: 告诉 mkvmerge(1) ID 为 ''<code>TID</code>'' 的轨道是 SBR AAC (亦作 HE-AAC 或 AAC+)。下述情况下需要此选项:a) 源文件是 AAC 文件 (''不是'' Matroska™ 文件) 且 b) 该 AAC 文件含有 SBR AAC 数据。 设置此开关的原因是目前技术上无法在不解码一个完整的 AAC 帧的情况下自动分辨普通的 AAC 数据与 SBR AAC 数据。由于 AAC 解码器的诸多专利问题,mkvmerge(1) 永远不会包含此解码层。因此此开关对于 SBR AAC 文件是必需的。如果忽略了此开关,生成的文件可能无法正常回放,甚至可能根本无法播放。如果源文件是 Matroska™ 文件,则已有足够侦测 SBR AAC 的 <code class="classname">CodecID</code> 了。然而,如果 <code class="classname">CodecID</code> 标注错误,此开关可用于更正之。如果 mkvmerge 错将 AAC 文件侦测为 SBR,您可以将 '<code class="literal"><nowiki>:0</nowiki></code>' 添加到轨道 ID。<br />
; <code class="option">--timecodes</code> ''<code>TID:文件名</code>''<br />
: 从 ''<code>文件名</code>'' 读取要应用到指定轨道 ID 的时间码。 这些时间码将强制覆盖 mkvmerge(1) 默认计算出的时间码。参阅关于 [[mkvmerge#外部时间码文件|外部时间码文件]] 的章节。<br />
; <code class="option">--default-duration</code> ''<code>TID:x</code>''<br />
: 强制指定轨道的默认时长为指定数值。 将同时修改轨道的时间码以匹配该默认时长。 变量 ''<code>x</code>'' 必须有 '<code class="literal">s</code>', '<code class="literal">ms</code>', '<code class="literal">us</code>', '<code class="literal">ns</code>' 或 '<code class="literal">fps</code>' 后缀,分别说明默认时长的单位为秒、毫秒、微秒、纳秒以及帧每秒。 数字 ''<code>x</code>'' 本身可为浮点数或分数。如果未强定默认时长,mkvmerge 将尝试根据使用的容器和/或编解码器推定轨道的默认时长。 此选项有用的一种情况是当添加 ''AVC/h.264'' 基本流时,因为此类流不含关于帧数及各帧默认时长的信息。 对此类文件 mkvmerge(1) 将假定默认时长为 '<code class="literal">25fps</code>',除非被(用户设置)覆盖。此选项也可用于在不使用外部时间码文件的情况下更改视频轨的 FPS(帧率)。<br />
; <code class="option">--nalu-size-length</code> ''<code>TID:n</code>''<br />
: 强制 NALU 长度为 ''<code>n</code>'' 字节。 此变量仅当使用 ''AVC/h.264'' 基本流分包器时使用。 如果留空,则默认为 4 字节,然而有的文件包含的所有帧或切片都小于 65536 字节。 对此类文件您可以使用此参数并将长度降为 2。<br />
<br />
<br />
仅用于视频轨的选项:<br />
<br />
; <code class="option">-f</code>, <code class="option">--fourcc</code> ''<code>TID:FourCC</code>''<br />
: 强制 <code class="classname">FourCC</code> 为指定值。仅对 '''微软兼容模式''' 的视频轨有效。<br />
; <code class="option">--display-dimensions</code> ''<code>TID:宽度x高度</code>''<br />
: Matroska™ 文件含有两个设定播放器回放时应当将画面缩放到的显示属性值: 显示宽度与显示高度。 可以使用本选项设定这些数值,如 '<code class="literal">1:640x480</code>'。指定所用数值的其他方法是使用 <code class="option">--aspect-ratio</code> 或 <code class="option">--aspect-ratio-factor</code> 选项 (参见下文)。 这些选项是互相独立的。<br />
; <code class="option">--aspect-ratio</code> ''<code>TID:宽高比|宽度/高度</code>''<br />
: Matroska™ 文件含有两个设定播放器回放时应当将画面缩放到的显示属性值: 显示宽度与显示高度。 通过本选项 mkvmerge(1) 可自动根据画面原始宽高和本选项给定的宽高比计算出显示宽度和显示高度。 宽高比可以以浮点数 ''<code>宽高比</code>'' 或分数 '''<code>宽度</code>''/''<code>高度</code>''' 的形式给出,如 '<code class="literal">16/9</code>'。指定所用数值的其他方法是使用 <code class="option">--aspect-ratio-factor</code> 或 <code class="option">--display-dimensions</code> 选项 (参见上下文)。这些选项相互独立。<br />
; <code class="option">--aspect-ratio-factor</code> ''<code>TID:系数|n/d</code>''<br />
: 另一种设置宽高比的方法是指定一个 ''<code>系数</code>''。将将原始宽高比与 ''<code>系数</code>'' 相乘后用作目标宽高比。指定所用数值的其他方法是使用 <code class="option">--aspect-ratio</code> 或 <code class="option">--display-dimensions</code> 选项 (参见上文)。这些选项互相独立。<br />
; <code class="option">--cropping</code> ''<code>TID:左,上,右,下</code>''<br />
: 将视频轨道的像素裁减参数设为指定数值。<br />
; <code class="option">--stereo-mode</code> ''<code>TID:n|关键词</code>''<br />
: 设置 ID 为 ''<code>TID</code>'' 的视频轨的立体视法。 模式既可以是 <code class="constant">0</code> 到 <code class="constant">3</code> 之间的数字 ''<code>n</code>'',也可以是 '<code class="literal">none(无立体视法)</code>' (与 ''<code>n</code>''<nowiki>=</nowiki><code class="constant">0</code> 相同), '<code class="literal">right(右眼视角)</code>' (与 ''<code>n</code>''<nowiki>=</nowiki><code class="constant">1</code> 相同), '<code class="literal">left(左眼视角)</code>' (与 ''<code>n</code>''<nowiki>=</nowiki><code class="constant">2</code> 相同) or '<code class="literal">both(双眼视角)</code>' (与 ''<code>n</code>''<nowiki>=</nowiki><code class="constant">3</code> 相同)。<br />
; <code class="option">--compression</code> ''<code>TID:压缩方式</code>''<br />
: 选择用于 VobSub 轨道的压缩方式。注意播放器也得支持该方式。有效的值有 '<code class="literal">none(无压缩)</code>'、'<code class="literal">zlib</code>'、'<code class="literal">lzo</code>'/'<code class="literal">lxo1x</code>'、'<code class="literal">bz2</code>'/'<code class="literal">bzlib</code>' 与 '<code class="literal">mpeg4_p2</code>'/'<code class="literal">mpeg4p2</code>'。值 '<code class="literal">lzo</code>'/'<code class="literal">lxo1x</code>' 与 '<code class="literal">bz2</code>'/'<code class="literal">bzlib</code>' 仅当 mkvmerge(1) 附加相应的 liblzo™ 和 bzlib™ 压缩库编译时有效。压缩方式 '<code class="literal">mpeg4_p2</code>'/'<code class="literal">mpeg4p2</code>' 是一种称为 '''header removal''' 的特殊压缩方式,只对 MPEG4 part 2 视频轨可用。其他压缩方式是可用于所有类型轨道的通用压缩方式。默认为 '<code class="literal">zlib</code>' 压缩。此压缩方式也是几乎所有回放程序都支持的压缩方式。无法保证对除 '<code class="literal">none(无压缩)</code>' 以外的其他压缩方式的支持。<br />
<br />
<br />
仅适用于文本字幕轨道的选项:<br />
<br />
; <code class="option">--sub-charset</code> ''<code>TID:字符集</code>''<br />
: 为指定轨道 ID 指定所用字符集,用以转为 UTF-8 编码的 UTF-8 字幕。如果未指定字符集,则将根据当前区域设置推算字符集。注意对于从 Matroska™ 文件或 Kate 流中读取的字幕不必指定字符集,因为在这些格式中已使用 UTF-8 编码储存。关于 mkvmerge(1) 如何在字符集间进行转换的说明请参见关于 [[mkvmerge#文本文件与字符集转换|文本文件与字符集]] 的段落。此选项可以对同一输入文件多次使用,通过每次选择不同轨道 ID 分别应用到多个轨道。<br />
<br />
<br />
其他选项:<br />
<br />
; <code class="option">-i</code>, <code class="option">--identify</code> ''<code>文件名</code>''<br />
: 将使 mkvmerge(1) 探查单个文件并报告其类型、文件中包含的轨道及其轨道 ID。如果使用了本选项,唯一可用的其他选项就是文件名。<br />
; <code class="option">-l</code>, <code class="option">--list-types</code><br />
: 列出受支持的输入文件类型。<br />
; <code class="option">--list-languages</code><br />
: 列出所有语言及其 ISO639-2 代码,这些代码可以在 <code class="option">--language</code> 选项中使用。<br />
; <code class="option">--priority</code> ''<code>优先级</code>''<br />
: 设置 mkvmerge(1) 运行时的进程优先级。有效的值为 '<code class="literal">lowest(最低)</code>', '<code class="literal">lower(较低)</code>', '<code class="literal">normal(普通)</code>', '<code class="literal">higher(较高)</code>' 与 '<code class="literal">highest(最高)</code>'。如果未予设定,则使用 '<code class="literal">normal(普通优先级)</code>'。在 类-Unix 系统中 mkvmerge(1) 将使用 nice(2) 功能。因此只有超级用户才能使用 '<code class="literal">higher(较高优先级)</code>' 与 '<code class="literal">highest(最高优先级)</code>'。对于 Windows 用户来说所有值都可用。<br />
; <code class="option">--command-line-charset</code> ''<code>字符集</code>''<br />
: 设定在命令行给出的字符串的字符集,用于转为其他字符集。默认为系统当前区域设置中所给定的字符集。此设置将应用到以下选项的变量: <code class="option">--title</code>、<code class="option">--track-name</code> 及 <code class="option">--attachment-description</code>。<br />
; <code class="option">--output-charset</code> ''<code>字符集</code>''<br />
: 设置输出的字符串应被转换到何种字符集。默认为系统当前区域设置中所给定的字符集。<br />
; <code class="option">-r</code>, <code class="option">--redirect-output</code> ''<code>文件名</code>''<br />
: 将所有信息输出至文件 ''<code>文件名</code>'' 而不是在命令行显示。 尽管该操作可以用输出重定向轻松实现,但在某些情况下还需要靠它:如当终端在写入文件之前重新解释(覆盖输出)时。 将优先使用通过 <code class="option">--output-charset</code> 设定的字符集。<br />
; <code class="option">--ui-language</code> ''<code>语言代码</code>''<br />
: 强制使用语言代码为 ''<code>语言代码</code>'' 的翻译(如 '<code class="literal">de_DE</code>' 对应德文翻译)。使用 <code class="varname">LANG</code>, <code class="varname">LC_MESSAGES</code> 及 <code class="varname">LC_ALL</code> 这些环境变量更好。如果在 ''<code>语言代码</code>'' 处输入 '<code class="literal">list</code>',mkvmerge(1) 将输出可用翻译列表。<br />
; <code class="option">@</code>选项文件<br />
: 从文件 ''<code>选项文件</code>'' 中读取额外的命令行参数。首个非空白字符为井号 ('<code class="literal"><nowiki>#</nowiki></code>') 的行将被当作注释对待,在处理过程中将被忽略。各行开头与结尾的空白将被除去。各行必须恰好含有一个选项。没有元字符转义。命令行 ''''mkvmerge -o "我的文件.mkv" -A "一部影片.avi" 声音.ogg'''' 可以转换为下述选项文件: <nowiki><br />
# 输出到文件 "我的文件.mkv"。<br />
-o<br />
我的文件.mkv<br />
# 只取 "一部影片.avi" 中的视频。<br />
-A<br />
一部影片.avi<br />
声音.ogg<br />
</nowiki><br />
; <code class="option">--capabilities</code><br />
: 列出编译时附加的可选功能并退出。输出信息的第一行是版本信息。接下来的每行包含一个单词,各单词的出现意味着编译时附加了相应功能。这些功能包括:<br />
:* '<code class="literal">BZ2</code>' -- bzlib™ 压缩库。影响 <code class="option">--compression</code> 选项可用的压缩方式。<br />
:* '<code class="literal">LZO</code>' -- lzo™ 压缩库。影响 <code class="option">--compression</code> 选项可用的压缩方式。<br />
:* '<code class="literal">FLAC</code>' -- 读取原始 FLAC 文件,以及处理其他容器中的 FLAC 轨道,例如 Ogg™ 或 Matroska™ 容器中的。<br />
; <code class="option">-h</code>, <code class="option">--help</code><br />
: 显示用法信息并退出。<br />
; <code class="option">-V</code>, <code class="option">--version</code><br />
: 显示版本信息并退出。<br />
<br />
==用法==<br />
<br />
用户可以选择各文件中 mkvmerge(1) 应该使用的轨道。它们都将被封装到 <code class="option">-o</code>所指定的文件中。可通过 <code class="option">-l</code> 选项获取已知(且受支持的)来源格式列表。<br />
<br />
==示例==<br />
<br />
假定您有个名为 我的影片.avi 的文件,以及分开存放的音频轨如 '<code class="literal">我的影片.wav</code>'。您希望先将音频编码为 OggVorbis™:<br />
<br />
$ oggenc -q4 -o 我的影片.ogg 我的影片.wav<br />
<br />
几分钟后您就可以合并视频和音频了:<br />
<br />
$ mkvmerge -o 我的有声影片.mkv 我的影片.avi 我的影片.ogg<br />
<br />
如果您的 AVI 文件已经含有一条音频轨,则将同时复制该轨道(只要 mkvmerge(1) 支持该音频格式)。要避免此状况,只需要这样<br />
<br />
$ mkvmerge -o 我的有声影片.mkv -A 我的影片.avi 我的影片.ogg<br />
<br />
又过了几分钟,您又制作了另一条音频轨,如 导演评论或者是另一种语言的配音,您生成的文件名是 '<code class="literal">我影片的另一音轨.wav</code>'。 再进行一次编码操作,然后将其合并:<br />
<br />
<br />
$ oggenc -q4 -o 我影片的另一音轨.ogg 我影片的另一音轨.wav<br />
$ mkvmerge -o 我的影片-成品.mkv 我的有声影片.mkv 我影片的另一音轨.ogg<br />
<br />
<br />
照下面的做法结果相同<br />
<br />
$ mkvmerge -o 我的影片-成品.mkv -A 我的影片.avi 我的影片.ogg 我影片的另一音轨.ogg<br />
<br />
现在开启 mplayer™ 尽情享受吧。如果您有多条音频轨(或者甚至是视频轨),那么您可以通过 '<code class="option">-vid</code>' 与 '<code class="option">-aid</code>' 选项告诉 mplayer™ 应该播放哪些轨道。这些是基础功能,不区分视频与音频。<br />
<br />
如果您需要同步音频轨,会非常容易。首先找清 Vorbis 轨道的轨道 ID<br />
<br />
$ mkvmerge --identify 错开了的.ogg<br />
<br />
现在您可以在下述命令行中使用该 ID:<br />
<br />
$ mkvmerge -o 同步了的.mkv -A 源.avi -y 12345:200 错开了的.ogg<br />
<br />
这将在 '<code class="literal">错开了的.ogg</code>' 中 ID 为 <code class="constant">12345</code> 的音频轨的开头添加 200ms 的静音。<br />
<br />
有些影片在开头同步正常,但音画同步会慢慢偏离开。对此类影片您可以指定延时系数,该系数将被应用到所有时间戳 -- 不添加或移除任何数据。因此如果您所设定的系数过大或过小会造成很糟糕的结果。例如我转码的一期节目有 <code class="constant">77340</code> 帧长,在结尾处有 <code class="constant">0.2</code> 秒的同步偏离。在 <code class="constant">29.97fps</code> 帧率下大约是每 <code class="constant">6</code> 帧错开 <code class="constant">0.2</code> 秒。于是我这样操作<br />
<br />
$ mkvmerge -o 同步了的.mkv -y 23456:0,77346/77340 错开了的.mkv<br />
<br />
搞定了。<br />
<br />
同步选项对字幕同样起作用。<br />
<br />
对于文本字幕,您既可以选用一些 Windows 软件(如 SubRipper™)或 '<code class="literal">contrib/subrip</code>' 目录 transcode(1) 的源码中的 subrip™ 包。大体过程是这样的:<br />
<br />
# 从源文件中提取原始字幕流: $ tccat -i /path/to/copied/dvd/ -T 1 -L | tcextract -x ps1 -t vob -a 0x20 | subtitle2pgm -o mymovie<br />
# 使用 gocr 将生成的 PGM 图像转为文本: $ pgm2txt mymovie<br />
# 对生成的文本文件进行拼写检查: $ ispell -d american *txt<br />
# 将文本文件转为 SRT 文件: $ srttool -s -w -i mymovie.srtx -o mymovie.srt<br />
<br />
<br />
这样生成的文件可用作 mkvmerge(1) 的输入文件:<br />
<br />
$ mkvmerge -o mymovie.mkv mymovie.avi mymovie.srt<br />
<br />
如果您希望为指定轨道指定语言,这将很容易完成。首先找到您所需语言的 ISO639-2 代码。mkvmerge(1) 会为您列出所有代码:<br />
<br />
$ mkvmerge --list-languages<br />
<br />
在列表中找到您所需的语言。假定您已在 Matroska™ 文件中放入两条音轨,并希望设置它们的语言代码,两条轨道的轨道 ID 为 2 和 3。可以这样操作<br />
<br />
$ mkvmerge -o 含语言代码的.mkv --language 2:ger --language 3:dut 无语言代码的.mkv<br />
<br />
如您所见,<code class="option">--language</code> 开关可多次使用。<br />
<br />
或许您还想让荷兰语作为默认语言。您还有其他语言的字幕,如英语和法语的,并希望让播放器默认显示法语字幕。可以这样操作<br />
<br />
$ mkvmerge -o 含语言代码的.mkv --language 2:ger --language 3:dut --default-track 3 无语言代码的.mkv --language 0:eng 英语.srt --default-track 0 --language 0:fre 法语.srt<br />
<br />
如果您在 mkvinfo 的输出信息中没找到您指定的语言或默认轨标记,请参阅关于 [[mkvmerge#默认值|默认值]] 的段落。<br />
<br />
==轨道 ID==<br />
<br />
mkvmerge(1) 的一些选项要求提供轨道 ID 以指定应应用到的轨道。 当读取器分离当前输入文件时,或者使用 <code class="option">--identify</code> 选项调用 mkvmerge(1) 时这些轨道 ID 会被显示出来。此类输出的一个示例:<br />
<br />
<br />
$ mkvmerge -i v.mkv<br />
File 'v.mkv': container: Matroska™<br />
Track ID 1: video (V_MS/VFW/FOURCC, DIV3)<br />
Track ID 2: audio (A_MPEG/L3)<br />
<br />
<br />
轨道 ID 通常这样分配:<br />
<br />
* AVI 文件: 视频轨 ID 为 0。音频轨的 ID 由 1 开始升序分配。<br />
* AAC、AC3、MP3、SRT 与 WAV 文件: 此类文件中唯一的 '轨道' 的 ID 为 0。<br />
* Ogg/OGM 文件: 轨道 ID 按在文件中被找到的顺序由 0 开始分配。<br />
* Matroska™ 文件: 轨道 ID 与 mkvinfo 所报告的相同。注意 ''不是'' 轨道 UID。<br />
<br />
<br />
特殊的轨道 ID '<code class="constant">-1</code>' 是个百搭号,它将使给定的开关应用到从输入文件中读到的所有轨道。<br />
<br />
使用轨道 ID 的选项的描述中均含有 '<code class="literal">TID</code>'。此外下列选项也使用轨道 ID: <code class="option">--atracks</code>、<code class="option">--vtracks</code>、<code class="option">--stracks</code> 以及 <code class="option">--btracks</code>。<br />
<br />
==文本文件与字符集转换==<br />
<br />
===注意===<br />
<br />
此段落可应用到 MKVToolNix 中的所有程序,尽管该段仅提及了 mkvmerge(1)。<br />
<br />
<br />
Matroska™ 文件中的所有文本均使用 UTF-8 编码。这意味着 mkvmerge(1) 需要将读取到的文本文件以及从命令行收到的文本从其他字符集转换为 UTF-8。相反,这意味着 mkvmerge(1) 的输出信息同样需要由 UTF-8 转回原来的字符集,例如来自 <code class="option">--ui-language</code> 所选的非英语界面或来自 Matroska™ 文件中的文本。<br />
<br />
mkvmerge(1) 根据是否有 ''字节顺序标记'' (英文缩写: BOM) 出现以及系统的当前区域来进行自动转换。如何根据区域推定字符集取决于 mkvmerge(1) 所执行在的操作系统。<br />
<br />
以 BOM 开头的文本文件已经使用一种 UTF 模式编码。mkvmerge(1) 支持以下五种模式: UTF-8、UTF-16 小端序 及 大端序、UTF-32 小端序 及 大端序。含 BOM 的文本文件将被自动转换为 UTF-8。对此类文件设定字符集的参数 (如 <code class="option">--sub-charset</code>) 将被直接忽略,无通知。<br />
<br />
在 类-Unix 系统 mkvmerge(1) 将使用 setlocale(3) 系统指令,它将返回环境变量 <code class="varname">LANG</code>、<code class="varname">LC_ALL</code> 及 <code class="varname">LC_CYPE</code>。输出的字符集通常是 UTF-8 或 ISO-8859-* 家族之一,将被用于所有文本文件操作以及编码命令行上的字符串和输出到命令行。<br />
<br />
在 Windows 上 mkvmerge(1) 实际上使用两种不同的字符集,因为要执行 Windows shell 程序 '''cmd.exe'''。第一个字符集由 <code class="function">GetCP()</code> 系统指令决定。此字符集用作文本文件转换和 MKVToolNix 工具包中 GUI 程序所显示的所有元素的默认字符集。'''cmd.exe''' 使用另一个字符集,由 <code class="function">GetACP()</code> 系统指令决定。这是命令行读入的所有字符串以及输出到命令行的所有字符串的默认字符集。<br />
<br />
现有下述选项支持指定字符集:<br />
<br />
* <code class="option">--sub-charset</code> 用于文本字幕文件以及存储于字符集含糊的容器格式(如 Ogg 文件)中的文本字幕轨,<br />
* <code class="option">--chapter-charset</code> 用于章节文本文件以及存储于字符集含糊的容器格式(如 Ogg 文件的章节信息,轨道和文件标题等;MP4 文件的章节信息)中的章节和文件标题,<br />
* <code class="option">--command-line-charset</code> 用于所有命令行上的字符串,<br />
* <code class="option">--output-charset</code> 用于输出到命令行或文件(当使用 <code class="option">--redirect-output</code> 选项重定向输出时)的字符串。<br />
<br />
==字幕==<br />
<br />
可在 Matroska™ 文件中嵌入多种文本字幕格式目前 mkvmerge(1) 支持纯文本、VobSub 以及 Kate 字幕格式。文本字幕将被重新编码为 UTF-8 以确保播放器能准确显示(关于 mkvmerge(1) 如何在字符集间进行转换的说明请参见关于 [[mkvmerge#文本文件与字符集转换|文本文件与字符集]] 的段落)。Kate 字幕已经是 UTF-8 编码,因此不会被重新编码。<br />
<br />
目前支持以下字幕格式:<br />
<br />
* Subtitle Ripper (SRT) 文件<br />
* Substation Alpha (SSA) / 高级 Substation Alpha 脚本 (ASS)<br />
* OggKate 流<br />
* VobSub 位图字幕文件<br />
<br />
==文件链接==<br />
<br />
Matroska™ 支持文件链接,即声明当前文件的前趋与后继文件是哪个文件。严谨地讲,被连接的不是文件而是 Matroska™ 剪辑。鉴于大多数文件只含有一个 Matroska™ 剪辑,以下说明中将使用术语 '文件链接',尽管 '剪辑链接' 更为贴切。<br />
<br />
各剪辑由唯一的 128 位宽的剪辑 UID 确定。此 UID 是由 mkvmerge(1) 自动创建的。链接主要通过将前后文件的剪辑 UID (英文缩写: SID) 置于剪辑头部信息中完成。mkvinfo 会在找到 SID 时输出它们。<br />
<br />
如果文件被切割为多段,且启用了链接功能,则文件的时间码不会重新从 0 开始,而是会从上一个文件结束的地方继续计算。这样可以保留绝对时间,即使之前的文件不可用 (如进行流式处理时)。如果未使用链接功能,各文件的时间码应从 0 开始。mkvmerge(1) 默认不启用文件链接。如果您希望启用,可以通过 <code class="option">--link</code> 选项打开。此选项仅当同时启用切割功能时有用。<br />
<br />
无论是否开启了切割功能,用户都可以让 mkvmerge(1) 将生成的文件与指定的 SID 建立链接。可通过 <code class="option">--link-to-previous</code> 与 <code class="option">--link-to-next</code> 选项实现。 这些选项只接受 mkvinfo 所输出的 SID 格式: 16 个 <code class="constant">0x00</code> 与 <code class="constant">0xff</code> 之间的十六进制数,各数字带有 '<code class="literal">0x</code>' 前缀,如 '<code class="literal">0x41 0xda 0x73 0x66 0xd9 0xcf 0xb2 0x1e 0xae 0x78 0xeb 0xb4 0x5e 0xca 0xb3 0x93</code>'。还可以选用另一种较短的格式: 16 个 <code class="constant">0x00</code> 与<code class="constant">0xff</code> 之间的十六进制数,无 '<code class="literal">0x</code>' 前缀,无空格,如 '<code class="literal">41da7366d9cfb21eae78ebb45ecab393</code>'。<br />
<br />
如果启用了切割功能,第一个文件将与通过 <code class="option">--link-to-previous</code> 给定的 SID 建立链接,而最后一个文件将与通过 <code class="option">--link-to-next</code> 给定的 SID 建立链接。如果未启用切割功能,唯一的输出文件将同时与给定的两个 SID 建立链接。<br />
<br />
==默认值==<br />
<br />
Matroska™ 规范提到,一些元素有其默认值。通常为了节省空间,如果一个元素的值等同于其默认值,它将不被写入文件。用户在 mkvinfo 的输出信息中可能发现缺失的元素有 ''<code>语言</code>'' 和 ''<code>默认轨标记</code>''。 ''<code>语言</code>'' 的默认值是 English ('<code class="literal">eng</code>'),''<code>默认轨标记</code>'' 的默认值是 ''<code>true</code>''。因此如果您对一条轨道应用选项 <code class="option">--language 0:eng</code> ,它将不在 mkvinfo 的输出信息中显示。<br />
<br />
==附件==<br />
<br />
或许您希望将一些照片与您的 Matroska™ 文件一起存放,或者您正在使用 SSA 字幕,需要一个非常稀有的特殊 TrueType™ 字体。这种情况下您可以将这些文件附加到 Matroska™ 文件中。它们不会被追加到文件当中,而是被嵌入到文件中。然后播放器就可以显示这些文件 (如 '照片' 一例) 或者用它们来渲染字幕 (如 'TrueType™ 字体' 一例)。<br />
<br />
这是关于如何在输出文件中附加照片和 TrueType™ 字体的示例:<br />
<br />
<br />
$ mkvmerge -o 输出.mkv -A 视频.avi 声音.ogg --attachment-description "乐队与我在后台小聚" --attachment-mime-type image/jpeg --attach-file 乐队与我.jpg --attachment-description "难得一见的绝美字体" --attachment-type application/octet-stream --attach-file 很酷的字体.ttf<br />
<br />
<br />
如果含有附件的 Matroska™ 文件被用作输入文件,mkvmerge(1) 会将附件复制到新文件中。要复制哪些文件、不复制那些文件的选择可以通过 <code class="option">--attachments</code> 与 <code class="option">--no-attachments</code> 选项修改。<br />
<br />
==章节==<br />
<br />
Matroska™ 章节系统比大家知道的旧系统—— OGM 中所使用的——更为强大。完整的规范可以在 [http://www.matroska.org/ Matroska™ 网站] 找到。<br />
<br />
mkvmerge(1) 支持输入两种章节文件。第一种格式,叫作 '''简单章节格式''',与 OGM tools 所用的相同。第二种是基于 XML 的章节格式,它支持 Matroska™ 的所有章节功能。<br />
<br />
===简单章节格式===<br />
<br />
此格式由成对的相继以 '<code class="literal">CHAPTERxx=</code>' 与 '<code class="literal">CHAPTERxxNAME=</code>' 开头的行组成。单数行包含起始时间码,而双数行包含标题。这是一个示例:<br />
<br />
<br />
CHAPTER01=00:00:00.000<br />
CHAPTER01NAME=导入部分<br />
CHAPTER02=00:02:30.000<br />
CHAPTER02NAME=宝宝准备摇<br />
CHAPTER03=00:02:42.300<br />
CHAPTER03NAME=宝宝摇屋子<br />
<br />
<br />
mkvmerge(1) 将转换每两行为一个 Matroska™ <code class="classname">章节单位(ChapterAtom)</code>。这种情况不会设定任何 <code class="classname">章节轨道号(ChapterTrackNumber)</code>,也就是说所有章节被应用到文件的所有轨道。<br />
<br />
由于是文本文件,可能需要进行字符集转换。关于 mkvmerge(1) 如何在字符集间进行转换的说明请参见关于 [[mkvmerge#文本文件与字符集转换|文本文件与字符集]] 的段落。<br />
<br />
===基于 XML 的章节格式===<br />
<br />
基于 XML 的章节格式看起来与这个示例类似:<br />
<br />
<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<!DOCTYPE Chapters SYSTEM "matroskachapters.dtd"><br />
<Chapters><br />
<EditionEntry><br />
<ChapterAtom><br />
<ChapterTimeStart>00:00:30.000</ChapterTimeStart><br />
<ChapterTimeEnd>00:01:20.000</ChapterTimeEnd><br />
<ChapterDisplay><br />
<ChapterString>短短的一节</ChapterString><br />
<ChapterLanguage>eng</ChapterLanguage><br />
</ChapterDisplay><br />
<ChapterAtom><br />
<ChapterTimeStart>00:00:46.000</ChapterTimeStart><br />
<ChapterTimeEnd>00:01:10.000</ChapterTimeEnd><br />
<ChapterDisplay><br />
<ChapterString>那短短的一节的一部分</ChapterString><br />
<ChapterLanguage>eng</ChapterLanguage><br />
</ChapterDisplay><br />
</ChapterAtom><br />
</ChapterAtom><br />
</EditionEntry><br />
</Chapters><br />
<br />
<br />
使用此格式可以做到三件简单章节格式做不到的事:<br />
<br />
# 可以设置章节终止处的时间戳,<br />
# 章节可以嵌套,<br />
# 可以设置语言与国家。<br />
<br />
<br />
mkvtoolnix 分发包的 <code class="filename">doc</code> 子目录包含了一些典型示例文件。<br />
<br />
===一般性备注===<br />
<br />
mkvmerge(1) 切割文件时会同时适当调整章节。这意味着每个文件只包含应用到该文件的章节项,时间码也将被调整到与各输出文件相匹配。<br />
<br />
mkvmerge(1) 能够从 Matroska™ 源文件中复制章节,除非使用 <code class="option">--no-chapters</code> 选项明令禁用。来自各类来源 (Matroska™ 文件、Ogg 文件、MP4 文件、章节文本文件) 的章节通常不被合并,而是分成多个 <code class="classname">ChapterEditions(章节版本)</code>。仅当从多个 Matroska™ 或 XML 文件读取的章节具有相同的版本 UID 时,章节才会被合并为单个 <code class="classname">ChapterEdition</code>。如果在其他情况下需要此类合并,用户需要先用 mkvextract 从所有来源提取章节,手动合并 XML 文件然后再混流。<br />
<br />
==标签==<br />
<br />
===介绍===<br />
<br />
Matroska™ 广泛支持废弃标签,还支持一种新式的、类似其他大多数容器使用的较简单的标签系统: ''<code>KEY=VALUE</code>''。然而,在 Matroska™ 中这些标签也可以嵌套,''<code>KEY</code>'' 与 ''<code>VALUE</code>'' 都是属于它们自身的元素。示例文件 <code class="filename">example-tags-2.xml</code> 展示了如何使用这个新系统。<br />
<br />
===标签细述===<br />
<br />
Matroska™ 标签不会自动应用到整个文件上。它们可以应用到整个文件,还可以应用到文件的不同部分: 一个或多个轨道, 一个或多个章节, 甚至是两者的组合。[http://matroska.org/technical/specs/index.html Matroska™ 规范] 有这方面的更多详情。<br />
<br />
重要的一点是标签通过 <code class="classname">Targets</code> Matroska™ 标签元素与轨道或章节相连,而用于此链接的 UID ''并非'' mkvmerge(1) 常用的轨道 ID。而是 mkvmerge(1) 自动计算而来 (当轨道来自非 Matroska™ 文件时) 或当轨道源文件是 Matroska™ 文件时复制而来的 的 UID。因此在文件被 mkvmerge(1) 处理过之前很难知道应该在标签文件中使用哪些 UID。<br />
<br />
mkvmerge(1) 支持两个为 Matroska™ 文件添加标签的选项: <code class="option">--global-tags</code> 与 <code class="option">--tags</code> 选项。不同之处在于前者,<code class="option">--global-tags</code>,将通过移除所有上文提到的 <code class="classname">Targets</code> 元素使标签应用到整个文件。 而后者,<code class="option">--tags</code>,将使 mkvmerge(1) 为通过 <code class="option">--tags</code> 选项的 ''<code>TID</code>'' 部分指定的标签自动插入 UID。<br />
<br />
===示例===<br />
<br />
假定您希望为从一个 AVI 文件读取的视频轨道添加标签。'''mkvmerge --identify 文件.avi''' 告诉您该视频轨道的 ID (不要将此 ID 与 UID 混淆!) 为 0。于是您创建了一个标签文件,省去了所有 <code class="classname">Targets</code> 元素,然后这样调用 mkvmerge(1)<nowiki>: </nowiki><br />
<br />
<br />
$ mkvmerge -o 文件.mkv --tags 0:标签.xml 文件.avi<br />
<br />
<br />
===标签文件格式===<br />
<br />
mkvmerge(1) 支持基于 XML 的标签文件格式。此格式是以 [http://matroska.org/technical/specs/index.html Matroska™ 规范] 为依据严格制定的。MKVToolNix 的程序以及源码分发包都含有名为 <code class="filename">example-tags-2.xml</code> 的示例文件,该文件已简明地列出了所有已知的可用作实际处理的基本标签。<br />
<br />
基本要点有:<br />
<br />
* 最外层的元素必须为 <code class="classname"><Tags></code>。<br />
* 实际意义上的标签放在 <code class="classname"><Tag></code> XML 标签对中。<br />
* 标签内容前后的空白将被忽略。<br />
<br />
===数据类型===<br />
<br />
新的 Matroska™ 标签系统只识别两种数据类型,UTF-8 字串与二进制类型。前者用于标签名称和 <code class="classname"><String></code> 元素,而二进制类型用于 <code class="classname"><Binary></code> 元素。<br />
<br />
由于二进制数据自身与 XML 文件不相容,mkvmerge(1) 支持另两种储存二进制数据的方法。如果 XML 标签的内容以 '<code class="literal">@</code>' 开头,则后续文本将被作为文件名对待。相应文件的内容将被复制到 Matroska™ 元素中。<br />
<br />
还有一种可能,即数据经 ''Base64'' 编码。这是将二进制数据转换为一定的 ASCII 字集字符,在电子邮件等程序中有所应用。mkvextract 将将二进制元素以 ''Base64'' 编码的数据的形式输出。<br />
<br />
已被废弃的标签系统可识别更多的数据类型,这在 Matroska™ 官方的标签规范中可以找到。由于 mkvmerge(1) 不再支持此系统,此处不对这些类型作多余说明。<br />
<br />
==Matroska™ 文件规划==<br />
<br />
Matroska™ 文件规划非常灵活。mkvmerge(1) 将按预先定义的方式渲染文件。生成的文件是这样的:<br />
<br />
[EBML 头] [剪辑 {元定位 #1} [剪辑信息] [轨道信息] {附件} {章节} [簇 1] {簇 2} ... {簇 n} {索引} {元定位 #2} {标签}]<br />
<br />
大括号中的元素是可选的,依所用的内容和选项而定。有两点要注意的:<br />
<br />
* 元定位 #1 只包含很少量的 level 1 元素,且仅当它们存在时才包含:附件、章节、索引、标签以及元定位 #2。较早版本的 mkvmerge(1) 亦曾将簇放置在元定位元素中。因此应留给不精确的传言一些空间——真相总会大白。 现在只有簇才被储存在元定位 #2 中,元定位 #1 将引用元定位元素 #2。<br />
* 附件、章节和标签元素仅当被添加后才会出现。<br />
<br />
<br />
允许的最短小的 Matroska 文件是像这样的:<br />
<br />
[EBML 头] [剪辑 [剪辑信息] [轨道信息] [簇 1]]<br />
<br />
这也是纯音频文件的样子。<br />
<br />
==外部时间码文件==<br />
<br />
mkvmerge(1) 允许用户为各轨道选择特定的时间码。这可用来创建包含可变帧率视频或音频中有空隙的文件。这种情况下的帧是 mkvmerge(1) 创建各 Matroska™ 块的单位。对视频来说恰好是一帧,对音频来说是相应音频类型的一个数据包。例如对 AC3 来说是包含 <code class="constant">1536</code> 采样的一个数据包。<br />
<br />
用于轨道追加合并的时间码必须只指定给一系列(同一)轨道的第一部分。例如当您追加合并两个文件,v1.avi 与 v2.avi,且希望使用时间码时,您的命令行必须像这样组织:<br />
<br />
<br />
mkvmerge ... --timecodes 0:我的时间码.txt v1.avi +v2.avi<br />
<br />
<br />
mkvmerge(1) 可识别四种格式的时间码。版本号在时间码文件的第一行内。空行,只含有空格的行,以及以 '<code class="literal"><nowiki>#</nowiki></code>' 开头的行在处理时将被忽略。<br />
<br />
===时间码文件格式 v1===<br />
<br />
此格式的第一行是版本声明。第二行则声明默认的帧率。 接下来的各行包含由逗号分隔的三个数字: 起始帧(<code class="constant">0</code> 代表第一帧)、终止帧以及此范围内的帧率。FPS(帧率) 为浮点数,小数点用 '<code class="literal">.</code>' 表示。各行定义的范围间可以有间隔,间隔内将使用默认的 FPS。一个示例:<br />
<br />
<nowiki><br />
# timecode format v1<br />
assume 27.930<br />
800,1000,25<br />
1500,1700,30<br />
</nowiki><br />
<br />
===时间码文件格式 v2===<br />
<br />
此格式中每行包含相应帧的时间码。此时间码必须以毫秒为精度。可以使浮点数,但不强求。您指定的时间码行数 ''必须'' 不少于对应轨道的帧数。此类文件中的时间码必须经过排序。 以 25fps 为例:<br />
<br />
<nowiki><br />
# timecode format v2<br />
0<br />
40<br />
80<br />
</nowiki><br />
<br />
===时间码文件格式 v3===<br />
<br />
此格式中各行包含时长(秒数),后接(可选)帧率。 二者均可为浮点数。 如果未提供帧率,则采用默认的帧率。 对于音频,您应当让编解码器自行计算各帧的时间码。 这样您应当使用 <code class="constant">0.0</code> 作为帧率。 您可以使用 '<code class="literal">gap</code>' 关键词后接空隙时长在流中创建空隙。 以音频文件为例:<br />
<br />
<nowiki><br />
# timecode format v3<br />
assume 0.0<br />
25.325<br />
7.530,38.236<br />
gap, 10.050<br />
2.000,38.236<br />
</nowiki><br />
<br />
===时间码文件格式 v4===<br />
<br />
此格式与 v2 格式相似。 唯一的不同在于时间码不必经过排序。 通常不应使用此格式。<br />
<br />
==退出代码==<br />
<br />
mkvmerge(1) 退出时会返回以下三个退出代码中的一个:<br />
<br />
* <code class="constant">0</code> -- 此退出代码说明已成功完成混流。<br />
* <code class="constant">1</code> -- 这种情况下 mkvmerge(1) 至少输出了一条警告信息,但混流并未因之中止。 警告信息以文字 '<code class="literal">警告:</code>' 为前缀。根据问题的不同,生成的文件可能是好的,也可能不是。 强烈建议用户检查警告信息以及生成的文件。<br />
* <code class="constant">2</code> -- 此退出代码用于错误发生之后。 mkvmerge(1) 在输出错误信息后即中断处理。错误信息可能是错误的命令行参数,也可能是损坏文件的读取/写入错误。<br />
<br />
==参阅==<br />
<br />
* [[mkvinfo]]<br />
* [[mkvextract]]<br />
* [[mkvpropedit]]<br />
* [[mmg]]<br />
<br />
==网络==<br />
<br />
最新版本总可以在 [http://www.bunkus.org/videotools/mkvtoolnix/ MKVToolNix 主页] 找到。</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Mkvmerge_GUI_%E6%8C%87%E5%8D%97&diff=285
Mkvmerge GUI 指南
2010-08-01T05:15:24Z
<p>XsLiDian:以内容'作者:''Moritz Bunkus''; 译者:~~~; 复制自 [http://greatdreamers.cn/projects/mkvtoolnix/doc/mkvmerge-gui.html mkvmerge GUI (mmg) 指南] ==简介== ===什么…'创建新页面</p>
<hr />
<div>作者:''Moritz Bunkus'';<br />
译者:[[User:XsLiDian|XsLiDian]];<br />
复制自 [http://greatdreamers.cn/projects/mkvtoolnix/doc/mkvmerge-gui.html mkvmerge GUI (mmg) 指南]<br />
<br />
==简介==<br />
<br />
===什么是 Matroska?===<br />
<br />
(''注:从 [http://www.matroska.org/ www.matroska.org] 简单复制而来。'')<br />
<br />
'''Matroska''' 力求成为多媒体容器格式的'''唯一'''标准。 它起源于一个称作 MCF 项目,但已有显著差别,因为它基于 EBML(可扩展二进制元语言), XML 的二进制衍生语言。EBML 使得 Matroska 开发团队在未来格式可扩展性方面 显示出相当的优越性,而不破坏旧解析器对文件的支持。<br />
<br />
要了解更多信息,请移步 [http://www.matroska.org/ Matroska 主页]。<br />
<br />
===什么是 mkvmerge?什么是 mkvmerge GUI?===<br />
<br />
''mkvmerge'' 与 ''mkvmerge GUI''(即 ''mmg'')是由 [mailto:moritz@bunkus.org Moritz Bunkus] 编写的两个程序。 它们是 ''mkvtoolnix'' 工具包的一部分。''mkvmerge'' 可以读取很多种多媒体文件,并将它们包含的内容存放在 Matroska 文件中。 不幸的是,这是个命令行程序,而并非所有人都能适应命令行操作。这便是 ''mkvmerge GUI'' 的用武之地。该 GUI 为用户提供既直观又强大的 ''mkvmerge'' 界面。<br />
<br />
两个程序都有适用于 Windows 与 GNU/Linux 及其他 Unix 派生环境的版本。 程序依 GPL 授权,所以任何感兴趣的人都可以获取源码。<br />
<br />
===获取最新版本===<br />
<br />
''mkvtoolnix'' 的最新版本的总可以在 [http://www.bunkus.org/videotools/mkvtoolnix/ Moritz Bunkus 的网站] 找到。Windows 用户需要同时下载运行期 DLL 与 ''mkvtoolnix'' 二进制程序。 Linux/Unix 用户或许会选择下载源码并自行编译 ''mkvtoolnix''。<br />
<br />
===本指南讲解的范围===<br />
<br />
本指南仅集中讲解这些工具的 GUI 部分。所有命令行选项在 [[mkvmerge|''mkvmerge'' 的手册/HTML 文档页]] 中都有详尽解释。<br />
<br />
==配置 mkvmerge GUI==<br />
<br />
(''注:本段不涉及编译与安装。要了解相关信息,请参阅包含于 ''mkvtoolnix'' 工具包的 ''[[mkvmerge]]'' 的自述文档以及 <code>README</code> 文件。'')<br />
<br />
<div><center><br />
[[Image:selectmkvmergeexecutable.gif|选择 mkvmerge 可执行程序]]<br /><font size="-1">图 1:使用此按钮选择 ''mkvmerge'' 程序的路径。</font><br />
</center></div><br />
<br />
''mmg'' 只需要知道 ''mkvmerge'' 程序的位置。通常情况下它会被自动找到。 但如果没能找到,您可以在 ''选项'' 窗口选择要使用的程序。<br />
<br />
==创建 Matroska 文件==<br />
<br />
===基本步骤===<br />
<br />
''mkvmerge'' 对 ''文件'' 与 ''轨道'' 严格区分。 一个输入 ''文件'' 通常包含一条或多条 ''轨道''。 ''mkvmerge'' 的运行至少需要一个输入文件与要创建的 Matroska 文件的文件名。 用户可以从这组基本选项开始,添加更多输入文件,为每条轨道选择高级选项, 应用更多全局选项等。<br />
<br />
典型的基本步骤如下:<br />
<br />
# 选择一些输入 ''文件'',<br />
# 为 ''轨道'' 设置语言选项,<br />
# 设置剪辑/文件标题,<br />
# 选择要写入的文件并<br />
# 开始混流过程。<br />
<br />
<div><center><br />
[[Image:addremovefiles.gif|添加与移除文件]]<br /><font size="-1">图 2:使用这些按钮来添加与移除文件。</font><br />
</center></div><br />
<br />
当 ''mmg'' 启动时,它显示第一个(或许也是最重要的)选项卡: ''输入选项卡''。在这里您可以看到三块不同的区域。最上面的输入框列出所有的 输入 ''文件''。<br />
<br />
图 2 显示了上方列表框右边的四个按钮,您可以使用 ''添加'' 与 ''追加'' 按钮来添加文件到列表框,也可以通过 ''移除'' 与 ''移除所有'' 按钮来移除选中项或所有输入文件。<br />
<br />
''添加一个文件'' 与 ''追加一个文件'' 之间是有不同的。 通常来说,''添加了的'' 文件中的所有轨道将被平行置于输出文件中。例如 当您有一条视频轨,一条或多条音频轨,以及一条或多条字幕轨时,符合这种情况。 它们都包含时间码相同的资料,应当同时被播放出来。<br />
<br />
而 ''追加一个文件'' 将使第二个文件的所有轨道被追加到上一个 ''添加的'' 文件的对应轨道。这样这些轨道的内容将被一个接一个地播放。 您只能连接类型相同(如将视频轨连接到视频轨)、编码相同(如将 MP3 连接到 MP3 而不是将 MP3 连接到 AC3)且参数相同(如采样率必须相匹配)。<br />
<br />
您可以通过文件名分辨 ''添加的'' 和 ''追加的'' 文件。 ''追加的'' 文件和轨道以“<code>++></code>”开头。<br />
<br />
<div><center><br />
[[Image:trackselection.gif|选择特定轨道]]<br /><font size="-1">图 3:一条启用的轨道与一条禁用的轨道。 第二条轨道不会被复制到输出文件中。</font><br />
</center></div><br />
<br />
只要用户在上方列表框中添加至少一个输入 ''文件'',第二个列表框将列出所有可用 ''轨道''。每条轨道默认是'''启用'''的,将被混流至输出文件中。 然而,您可以简单点击第二个列表框中各轨道正前方的复选框来改变它。如图 3 所示。<br />
<br />
对这里的每条轨道,用户都可以通过轨道列表下方的输入框与复选框来选择 轨道的细节选项。下面的章节将介绍这些选项。<br />
<br />
轨道列表框的右边有两个按钮,您可以通过它们控制输出文件中轨道的次序。 点击 ''上移'' 与 ''下移'' 按钮,当前选中的轨道将按相应方向移动。 移动 ''追加的'' 轨道(以“<code>++></code>”开头的)时 有些限制,例如 ''追加的'' 轨道不能作为第一条轨道。<br />
<br />
关于章节的更多信息可以在本文档关于 [[Mkvmerge GUI 指南#章节编辑器|章节编辑器]] 的章节 以及 ''mkvmerge'' 的自述文档中找到。<br />
<br />
===轨道选项===<br />
<br />
根据当前选择的轨道类型(视频,音频,字幕等)甚至是轨道内容, 所有轨道选项中仅有部分可用。这些选项跨越三个子选项卡:''轨道常规选项 ''、''格式细节选项'' 与 ''额外选项''。<br />
<br />
<div><center><br />
[[Image:generaltrackoptions.gif|一条视频轨的典型选项]]<br /><font size="-1">图 4:各类轨道常见的选项</font><br />
</center></div><br />
<br />
'''注:'''除非被用户改动,''mkvmerge'' 将从输入文件复制轨道配置 (如果源文件格式支持此类信息)或自主选择默认值。<br />
<br />
可用的常规选项有:<br />
<br />
* <code>轨道名称:</code>用户可为当前轨道设定名称。 该名称是无格式限制的字串。实例如“导演评论”或“西雅图大观”。 注意这些名称不必包括影片名称。<br />
* <code>语言:</code>用户可为所有类型的轨道选择语言。 语言以 ISO639-2 语言码编码。下拉框包括所有 ISO639-2 代码所以用户不必担心选错语言码。<br />
* <code>索引:</code>Matroska 的 ''cue'' 索引相当于 AVI 的 index 索引。它们是关键帧的纽带。通常该选项应维持“默认”一值。 ''mkvmerge'' 会自动为任何给定轨道类型选择最佳规则。 关于轨道的完整解释可在 [[mkvmerge|''mkvmerge'' 文档]] 中找到。<br />
* <code>“默认轨”标签:</code> Matroska 接受可告知播放器 优先播放指定轨道(用户未选择其他轨时)的标签。 当然,每种轨道''类型''有它自己的默认轨,例如 默认音频轨是英语的,同时默认字幕轨是法语的。如果没有轨道被设为 默认轨,''mkvmerge'' 将提升它发现的每类的第一条轨道为默认轨。 这与各类媒体播放器的行为一致。<br />
* <code>标签:</code>您可以为每条轨道创建 XML 标签文件。 关于所有标签的完整解释请参看示例文件和 [[mkvmerge|''mkvmerge'' 自述文档]]。 如果您使用'''这个'''选项,99% 是想关联标签到特定轨道。 全局选项卡的标签选项可能不是您需要的。<br />
* <code>时间码:</code>通常 ''mkvmerge'' 会从源文件导出 各帧的时间码,但它也能读取并使用此处指定的外部文本文件中的时间码。 本功能非常复杂。几乎所有用户应将此项留空。<br />
<br />
<div><center><br />
[[Image:videotrackoptions.gif|视频轨典型选项]]<br /><font size="-1">图 5:视频轨的典型选项</font><br />
</center></div><br />
<br />
格式细节选项包括:<br />
<br />
* <code>宽高比:</code>用户可通过本选项设定播放时应使用的宽高比。 它默认为视频编码时的宽高比,但可以更改,比如针对变形编码。 GUI 要求格式为浮点数(如“2.33”)或分数(如“16/9”)。 <br /> 另一种可能情况是手动设置显示宽度和显示高度的值。 当您想调整这些参数到特定的分辨率时,这项功能会很有用。 如果您指定的是宽高比,''mkvmerge'' 将根据视频尺寸计算显示尺寸。 <br /> 本选项仅对视频轨可用。<br />
* <code>FourCC:</code>Matroska 通常不储存 其他容器用来识别编解码器的四位代码(Four-CC)。 Matroska 有自己的格式,叫作 ''CodecID'', 但它也有个 AVI 兼容模式。在此模式下,将同时储存 FourCC 值。 使用本选项可以强制 FourCC 为指定值。 但您无法更改 ''mkvmerge'' 所用的 ''CodecID''。 <br /> 本选项仅对视频轨可用。<br />
* <code>立体视法:</code> 现有一种技术,通过同时播放两条视频轨, 它们摄制于很相近但又有细微偏差的方位,以展示虚拟三维图像。 每只眼睛只能看到其中一轨(的画面)。这就叫作 ''立体视法''。 大多数用户应将此项留空。 <br /> 本选项仅对视频轨可用。<br />
* <code>帧率:</code>AVC/h.264 视频轨的 ''每秒帧数''。当您添加 AVC/h.264 基本流时,必须告知 ''mkvmerge'' 该视频录制时每秒有多少帧, 因为在基本流中并没有这条信息。 如果您未进行任何选择,''mkvmerge'' 将默认为 25。 您既可以输入浮点数(如 29.97),也可以输入分数(如 30000/1001)。 <br /> 本选项仅对读入自 AVC/h.264 基本流的 AVC/h.264 视频轨可用。<br />
<br />
<div><center><br />
[[Image:audiotrackoptions.gif|音频轨典型选项]]<br /><font size="-1">图 6:音频轨的典型选项</font><br />
</center></div><br />
<br />
* <code>延时(ms):</code>有时音频与视频没有正常同步。 通过本选项,用户可以对任何轨道的时间码进行偏移调整。指定值正负皆可。 此处输入的数以毫秒为单位,并将在 <code>伸展比率</code>(参见下文) 得到应用之后 加到各时间码上。 <br /> 本选项对所有类型的轨道均可用。 但在回放时,时间码调整对视频轨与字幕轨效果最佳。<br />
* <code>伸展比率:</code>有时音视频同步是随着播放进度逐渐错开的。 这可以通过提供 ''mkvmerge'' 伸展时间码的比率来解决。 如果未输入任何数值,不改变时间码的“1.0”将被采用。 <br /> 您输入的数值可以是浮点数或分数,如“1/2”。 此比率将在添加 <code>延时</code>(参见上文)之前得到应用。 <br /> 本选项对所有类型的轨道均可用。 但在回放时,时间码调整对视频轨与字幕轨效果最佳。<br />
* <code>字符集:</code> 某些文本字幕与章节并不存放它们创建时所用字符集的信息。 本选项非常重要,因为文本字幕与章节在混流过程中会被自动转换为 UTF-8 字符集。'' mkvmerge'' 通常假定系统当前的字符集为字幕或章节文件保存所用的字符集。 但如果不是这样,用户可以自己选择正确的字符集。 <br /> 本选项仅对字幕轨与章节可用。<br />
<br />
<div><center><br />
[[Image:textsubtitlestrackoptions.gif|字幕轨典型选项]]<br /><font size="-1">图 7:字幕轨的典型选项</font><br />
</center></div><br />
<br />
* <code>压缩方式:</code>Matroska 有一套对轨道进行无损压缩的强大系统。 这些压缩方式(算法)可以应用到任何给定轨道,但有些播放器只支持 VobSub 轨道对本功能的使用。这也是该功能最有用的地方。 至于其他轨道,尤其是音视频轨,已经被压缩过,所以额外的压缩并不会起多大效果。 对于 VobSub 字幕,如果您启用 zlib 压缩,将可以另外获得约 30% 的压缩率。 这就是它是 VobSub 轨道的默认处理方式的原因。 <br /> 您只需保持此选项为 ''默认'' 即可。<br />
* <code>AAC 是 SBR/HE-AAC/AAC+:</code>被称作“高效 AAC”(HE-AAC) 的新技术在以<code>.AAC</code> 为扩展名存储时有些缺点:无法侦测这些文件中的 HE-AAC 部分。因此当文件使用该技术时,用户得手动勾选本项。请注意,存储于 <code>.MP4</code> 文件中的 HE-AAC 不存在此问题。<br />
<br />
===附件===<br />
<br />
Matroska 文件可以包含其它文件,叫作附件。 它基本上就像您最爱的电子邮件程序一样工作。 这一概念的提出,是为了提供关于文件的额外信息。例如 CD rip 的封面照片,文本格式的影片背景信息补充, 甚至是显示字幕需要的字体包。<br />
<br />
每个附件需要两个基本信息:文件名(很显然需要)与应当与文件关联的 MIME 类型。使用方法很简单,与在 ''输入'' 选项卡中添加文件类似。<br />
<br />
<div><center><br />
[[Image:addingremovingattachments.gif|添加与移除附件]]<br /><font size="-1">图 8:使用这些按钮添加与移除附件</font><br />
</center></div><br />
<br />
在 GUI 的第二个选项卡,''附件'' 选项卡中,您可以使用 ''添加'' 按钮添加文件,使用 ''移除'' 按钮移除所选附件。 一旦选中一个附件,此选项卡的其他控件都将可用。 您必须为每个附件选择 MIME 类型,但描述是可选的——尽管总提供描述是个好想法。 这将使别人更容易识别出您向这个 Matroska 文件附加了什么。<br />
<br />
<div><center><br />
[[Image:attachmentoptions.gif|附件典型选项]]<br /><font size="-1">图 9:附件的典型选项</font><br />
</center></div><br />
<br />
最后一个选项,<code>附加方式</code>,只有在您同时切割输出文件时有影响。 (全局切割选项将在后续段落中解释)如果选择了 <code>附加到所有文件</code>, 则当前文件将被附加到创建的所有输出文件。如果选择了 <code>仅附加到首个文件</code>,当前文件仅附加到创建的第一个文件。<br />
<br />
===全局选项===<br />
<br />
第三个选项卡,''全局'',包含了应用到整个文件,而不只是一或多个轨道的选项。<br />
<br />
====文件/剪辑标题====<br />
<br />
<div><center><br />
[[Image:movietitle.gif|选择影片标题]]<br /><font size="-1">图 10:为当前影片选择标题</font><br />
</center></div><br />
<br />
<code>文件/剪辑标题:</code> 此标题用作真实的影片标题,如《香草天空》。<br />
<br />
====自动切割与文件链接====<br />
<br />
<code>切割</code> 段落处理如何切割输出文件为多个小文件。 如果没有选择切割,将只创建一个大文件。如果“切割”处于选中状态,您可以告知 ''mkvmerge'' 在写入指定数据量或到达指定时间码时开始创建新的输出文件。 可接受的格式有:<br />
<br />
* 按尺寸:被字母“K”“M”或“G”紧跟的数字代表 千字节(1024 字节),兆字节(1024 * 1024 字节)或 吉字节(1024 * 1024 * 1024 字节)示例:“700M”或“100000K”。<br />
* 按时间:格式可以是多达九位即精确到毫微秒的 <code>HH:MM:SS.nnn</code> 或后接字母“s”的秒数。多个时间码可以用逗号隔开。<br /> 请注意这些时间码根据未切割的输出流计算。 也就是说,输入“00:10:00,00:20:00”将生成三个文件, 其中前两个文件均长约十分钟。而第三段将包含其余的输入流。 此功能与“文件链接”功能相独立。<br /> 示例:“01:20:00”(1 小时 20 分钟后切割)或“1800s” (1800 秒,即 30 分钟后切割)。<br />
<br />
<div><center><br />
[[Image:splitting.gif|切割典型选项]]<br /><font size="-1">图 11:切割的典型选项。创建两个约 700 兆大小的文件。</font><br />
</center></div><br />
<br />
<code>连接文件:</code> 此选项控制 ''mkvmerge'' 如何处理切割。 关于此功能的一点解释:<br />
<br />
Matroska 支持简单告知特定文件是前趋或后继文件的文件链接功能。 严谨地讲,被连接的并不是文件,而是 Matroska 剪辑。 因为大多数文件可能只包含一个 Matroska 剪辑,所以我简单地讲“文件链接”, 尽管“剪辑链接”更恰当。<br />
<br />
每个剪辑以唯一的 128 位宽的剪辑 UID 标记。此 UID 由 ''mkvmerge'' 自动生成。 链接操作主要通过写入前/后文件的剪辑 UID 到当前剪辑的头部信息完成。 ''mkvinfo'' 发现这些 UID 时会将它们输出。<br />
<br />
如果一个文件被切割为多个小文件,并且使用了链接功能,后续文件的时间码将不会从 0 开始, 而是从前一文件停止的地方继续。这样,绝对的时间将得以保留,即使前一文件不可用 (如用作流媒体时)。如果未使用链接,每个文件的时间码都将从 0 开始。默认情况下 ''mkvmerge'' 不会使用文件链接,因为某些播放器仍然无法处理连接起来的文件。 如果您希望连接文件,您可以通过勾选 <code>连接文件</code> 复选框来启用该功能。<br />
<br />
====手动文件/剪辑链接====<br />
<br />
不论是否启用了切割,用户都可以告知 ''mkvmerge'' 将生成的文件连接到指定的 UID。This is done by 您可以通过在 <code>上一剪辑 UID</code> 和 <code>下一剪辑 UID</code> 两个输入框中输入有效的剪辑 UID 来完成这项操作。这些选项接受 ''mkvinfo'' 输出的剪辑 UID 格式:以“0x”为前缀、以空格分隔的 16 个 介于 0x00 与 0xff 十六进制数。如 <code>0x41 0xda 0x73 0x66 0xd9 0xcf 0xb2 0x1e 0xae 0x78 0xeb 0xb4 0x5e 0xca 0xb3 0x93</code>。 另有一种较短的格式可供选择:没有“0x”前缀或空格的 16 个介于 0x00 与 0xff 的十六进制,如 <code>41da7366d9cfb21eae78ebb45ecab393</code>。<br />
<br />
如果启用了切割功能,第一个输出文件将与 <code> 上一剪辑 UID</code> 输入框中指定的 UID 相连,最后一个输出文件将与 <code>下一剪辑 UID</code> 输入框中指定的 UID 相连。 如果未启用切割,唯一的输出文件将同时与指定的两个 UID 相连接。<br />
<br />
====章节====<br />
<br />
您可以通过浏览按钮选择要添加到输出文件中的章节。 关于章节各方面的完整解释可以在 [[Mkvmerge GUI 指南#章节编辑器|章节编辑器段落]] 找到。<br />
<br />
====全局标签====<br />
<br />
不像您在输入选项卡为每条轨道选择的标签,此处所选的标签必须包含轨道 UID。 这些标签不会被自动指派给任何轨道相连。 在 99% 的情况下,这'''不是'''您希望使用的选项!<br />
<br />
完整的解释可以在 [[mkvmerge|mkvmerge 自述文档]] 中找到。<br />
<br />
===启动混流进程===<br />
<br />
当您一切都设置完毕时就可以启动混流进程了。 您要做的最后一件事就是选择要混流到哪里。您可以通过 <code>浏览</code> 按钮选择输出文件。 完成之后,点击 <code>开始混流</code> 按钮或者在 <code>混流</code> 菜单中选择同样的菜单项。<br />
<br />
如果一切都已正确设定,''mmg'' 将显示混流窗口。 进度在顶部显示,作为 ''mkvmerge'' 当前状态的大体描述。<br />
<br />
<div><center><br />
[[Image:muxingwindow.gif|混流窗口]]<br /><font size="-1">图 12:混流窗口</font><br />
</center></div><br />
<br />
''mkvmerge'' 有三种不同“严肃级别”的信息: 状态报告,警告信息与错误信息。所有状态报告信息都在上方窗格显示。 包括发现的轨道类型及其它令人感兴趣的信息。<br />
<br />
警告信息在中间的窗格显示。''mkvmerge'' 发出警告时不会中断处理, 但可能停止对遭警告的轨道进行混流。 您应该关注所有警告信息。<br />
<br />
错误信息在下方的窗格显示。错误通常是致命的, ''mkvmerge'' 输出错误信息后即停止混流。 此类信息可能是硬盘已满或者 源文件已损坏且无法继续处理。<br />
<br />
<code>中断</code> 按钮向 ''mkvmerge'' 发出停止混流的信号。 除非 ''mkvmerge'' 遭遇死循环,它会在您按下按钮不久之后停下。 您可以通过 <code>保存日志</code> 按钮保存 ''mkvmerge'' 的完整输出信息为文本文件供进一步研究, 或者如果您发现了设计缺陷,且希望给我辅助信息。<br />
<br />
===保存与载入混流配置===<br />
<br />
您配置选项的所有努力都不必随着退出程序而消失。 您可以通过 <code>文件</code> 菜单中的 <code>保存配置</code> 选项保存所有混流配置为基于文本的配置文件,以后可以通过 <code>载入配置</code> 选项恢复配置。 默认扩展名为通常不被其它程序使用的 <code>.mmg</code>。 您也可以将此扩展名与 ''mmg'' 关联, 这样当它被附加这样的配置文件名调用时,可以自动加载配置。<br />
<br />
===排队处理多项任务===<br />
<br />
当您要混流多个文件时,您不必先准备第一个文件,等它混流完毕,再准备第二个文件, 等它完成,如此如此。''mkvmerge GUI'' 包含一个任务管理器, 可以将完整的任务排队,并在您方便时挨个运行。使用任务管理器的基本步骤如下:<br />
<br />
# 添加所有文件,配置所有选项,配置输出文件名。<br />
# 点击 <code>添加到任务队列</code> 按钮,并为它设定一个易于辨认的标题。<br />
# 按您的需要,重复上面的步骤。<br />
# 在 <code>混流</code> 菜单中选择 <code>管理任务</code>, 调出任务管理器。<br />
# 点击 <code>启动</code> 按钮。<br />
# 泡杯茶,买点东西或者谈谈天;)<br />
<br />
<div><center><br />
[[Image:jobmanager.gif|任务管理窗口]]<br /><font size="-1">图 13:任务管理窗口</font><br />
</center></div><br />
<br />
每项任务有六个属性:一个由 ''mkvmerge GUI'' 自动选定的 ID;它的状态(<code>挂起</code>:尚未混流; <code>完成</code>:已成功混流; <code>完成,有警告</code>:成功完成混流,但是有警告; <code>失败</code>:混流失败);您输入的名称; 任务添加到任务队列的日期与时间; 混流进程启动的日期与时间; 混流进程完成的日期与时间。<br />
<br />
全局控件位于窗口底部。<code>启动</code> 按钮将启动所有状态为 <code>挂起</code> 的任务。 <code>启动所选</code> 按钮将启动当前选中的所有混流任务, 不论其状态如何。<br />
<br />
右边的按钮对选中的所有任务进行操作。 <code>上移</code> 与 <code>下移</code> 将所选任务在列表中移向上方或下方。 <code>重新启用</code> 按钮设定所选任务的状态为 <code>挂起</code>,这样,下次按下 <code>启动</code> 按钮时它们将被启动。<code>禁用</code> 按钮将设定状态为 <code>完成</code>。<br />
<br />
混流过程中 ''mkvmerge'' 的输出信息不会被显示,而是被储存下来。 如果您想查看任务的输出信息,您可以点击 <code>查看日志</code> 按钮。这当任务完成但有警告时,或者当任务完全失败时非常有用。<br />
<br />
==章节编辑器==<br />
<br />
全功能的章节编辑器是 ''mmg'' 的新功能之一。 它可以读取基于文本的章节文件,从已有的 Matroska 文件导入章节,输出可以在全局选项卡中选定的基于文本的章节文件, 以及将章节直接写入现有 Matroska 文件。<br />
<br />
===Matroska 的章节概念===<br />
<br />
不像其他很多系统,Matroska 支持 ''嵌套的'' 章节。这主要意味着您可以为章节定义子章节。<br />
<br />
Matroska 中的章节实体至少由四个项目组成:它所应用到的轨道的 UID, 章节标题/名称,它的起始时间以及与它关联的语言代码。 另外的元素是可选的,包括终止时间以及其他语言代码和国家代码。 用户通常只需要必备元素。在这些元素中,需要指定的只有名称,起始时间和语言码。 ''mkvmerge'' 会自动将所有章节指派给整个文件。<br />
<br />
===示例===<br />
<br />
第一个例子比较简单。被讨论的影片包含四部分: 开头的序幕,第一幕,第二幕,以及演职员表。 注意,终止时间戳是可选的。<br />
<br />
序幕(起始于 00:00:00,语言 英语) <br />
第一幕(起始于 00:01:00,语言 英语) <br />
第二幕(起始于 00:05:30,语言 英语) <br />
演职员表(起始于 00:12:20 终止于 00;12:55,语言 英语)<br />
<br />
再举个更复杂的例子,它包括子章节。以路德维希·范·贝多芬(Ludwig van Beethoven) 的戏剧《Fidelio》为例。为简便起见,我只算了前两幕的前三段。<br />
<br />
第一幕包括:<br />
<br />
# Overtüre(6:24 分钟长),<br />
# Arie: 'Jetzt, Schätzchen, jetzt sind wir allein'(4:46 分钟长)以及<br />
# Dialog: 'Armer Jaquino'(0:10 分钟长)。<br />
<br />
第二幕包括:<br />
<br />
# Ouvertüre und Arie: 'Gott! welch Dunkel hier!'(10:46 分钟长),<br />
# Melodrama und Duett: 'Wie kalt ist es'(5:21 分钟长)以及<br />
# Dialog: 'Er erwacht!'(0:59 分钟长)。<br />
<br />
第一幕,也就是我们的第一章,总时长为 11:20。第二幕时长 17:06。这些章节的结构如下所示:<br />
<br />
<pre>Erster Akt(起始于 00:00:00 终止于 00:11:20,语言 德语,国家 德国) <br />
Ouvertüre(起始于 00:00:00 终止于 00:06:24,语言 德语,国家 德国) <br />
Arie: 'Jetzt, Schätzchen, jetzt sind wir allein' (起始于 00:06:24 终止于 00:11:10,语言 德语,国家 德国)<br />
Dialog: 'Armer Jaquino'(起始于 00:11:10 终止于 00:11:20, 语言 德语,国家 德国) <br />
Zweiter Akt(起始于 00:11:20 终止于 00:28:26,语言 德语,国家 德国) <br />
Ouvertüre und Arie: 'Gott! welch Dunkel hier!'(起始于 00:11:20 终止于 00:22:06,语言 德语,国家 德国) <br />
Melodrama und Duett: 'Wie kalt ist es'(起始于 00:22:06 终止于 00:27:27,语言 德语,国家 德国) <br />
Dialog: 'Er erwacht!'(起始于 00:27:27 终止于 00:28:26, 语言 德语,国家 德国)</pre><br />
<br />
===mkvmerge 支持的章节格式===<br />
<br />
''mkvmerge'' 与 ''mmg'' 的章节编辑器都支持不同格式的章节文件。<br />
<br />
====简单/OGM 格式章节文件====<br />
<br />
OGM 文件中的格式是最基本的格式之一。它是一种基于文本的格式。 每个章节项目包含两行,第一行包含开始时间,第二行则是章节标题/名称。 每行都有编号。<br />
<br />
上边第一个例子可以用这种格式表示:<br />
CHAPTER01=00:00:00.000<br />
CHAPTER01NAME=序幕<br />
CHAPTER02=00:01:00.000<br />
CHAPTER02NAME=第一幕<br />
CHAPTER03=00:05:30.000<br />
CHAPTER03NAME=第二幕<br />
CHAPTER04=00:12:20.000<br />
CHAPTER04NAME=演职员表<br />
<br />
第二个例子不能用这种格式表示,因为这种格式既不支持语言指定, 也不支持终止时间或者嵌套章节。 它也有优越之处,就是这种文件很容易创建,而且 不论是 Windows 平台还是 Unix/Linux 平台上都有一些工具可以 直接从 DVD 创建此类文件。<br />
<br />
由于一些限制因素,''mmg'' 不能以此格式输出章节。<br />
<br />
====全功能的 XML 格式章节文件====<br />
<br />
我创建了一种基于 XML 的章节格式,它与 Matroska 所用的系统非常一致。 使用此格式,您可以尽情控制所有功能。 在这里我就不详细描述这种格式了。请参看 ''mkvtoolnix'' 附带的示例 XML 章节文件。<br />
<br />
====Matroska 文件中的章节====<br />
<br />
章节编辑器可以直接从 Matroska 文件读取章节。这些章节可以 输出为 XML 章节文件,也可以导回原来的 Matroska 文件 或者写入另一个 Matroska 文件。支持所有功能。<br />
<br />
===创建章节文件===<br />
<br />
章节编辑器包括三部分:所有章节的树形结构, 用来添加、移除与调整章节的五个按钮, 以及用来设置各章节数据的输入框。<br />
<br />
<div><center><br />
[[Image:chaptereditor.gif|章节编辑器]]<br /><font size="-1">图 14:章节编辑器,显示的是前文所述的例子</font><br />
</center></div><br />
<br />
Matroska 文件中的章节被定义有起始时间,名称和与名称相关联的语言。 每个章节可以有多个名称,每个名称与不同的语言相关联。 您也可以添加终止时间,但这不是必需的。<br />
<br />
通过 <code>章节编辑器</code> 菜单中的 <code>新建</code> 菜单项可以创建新章节文件。您可以通过 <code>添加章节</code> 或 <code>添加子章节</code> 按钮添加章节。这两个按钮的不同之处在于 当一个章节已被选中时, <code>添加章节</code> 按钮将在所选章节后 直接追加一个同级章节,而 <code>添加子章节</code> 按钮将在当前选中章节下级末端添加一个章节,作为其最后一个子章节。<br />
<br />
<code>移除章节</code> 按钮需小心使用。它会移除整个子树而不要求确认, 而且目前也没有“撤销”菜单项可用。<br />
<br />
选中一个章节条目后您可以更改它的数据。 起始时间与终止时间的格式均为 <code>HH:MM:SS.mmm</code> 或更简易的 <code>HH:MM:SS</code>。将会预先添加一个章节名称。 您可以编辑它并选择这个名字所用的语言。这样您可以提供多语种的名称,如 “The hero arrives”以“eng”为语言, “Der Held kommt an”以“ger”为语言。 您只需点击 <code>添加名称</code> 按钮来满足更多需求或者点击 <code> 移除名称</code> 去掉一个。<br />
<br />
创建很多章节,又总得不停地修改语言,可是件不小的工作。 因此您可以在选项窗口的 <code>章节</code> 选项卡中选择 ''mmg'' 默认应该添加的语言与国家标签。 <code>设置语言值</code> 按钮的效果与此类似。 您可以通过该按钮将所选的语言与/或国家应用到所选章节项目及其所有子项。<br />
<br />
要保存章节为 XML 文件,您可以选择 <code>保存</code> 或 <code>另存为</code>。<code>另存为</code> 不能用来写入章节至现有 Matroska 文件——您应该通过 <code>保存到 Matroska 文件</code> 来实现。<br />
<br />
===编辑现有章节===<br />
<br />
您可以通过 <code>章节编辑器</code> 菜单中的 <code>载入</code> 菜单项载入已有章节文件或者 Matroska 文件中的章节。 ''mmg'' 将自动侦测使用的文件类型并读取章节。<br />
<br />
==头部编辑器==<br />
<br />
mmg 包含有针对已有 Matroska 文件头部字段的编辑器。 您可以通过选择 mmg “文件”菜单中的“头部编辑器”来启动它。<br />
<br />
头部编辑器允许用户在不对整个文件重新混流的前提下编辑剪辑信息头和各轨道头中的一些字段。 用法很简单:载入文件,选择您希望更改的头部字段, 更改选中字段的取值,最后保存文件。<br />
<br />
===添加与移除头部字段===<br />
<br />
Matroska 文件格式对大多数头部字段的存在与否留有余地。 mmg 的头部编辑器显示它支持的所有头部字段,即使文件中不存在这些字段。 它允许用户在文件中添加目前不存在的字段,也允许用户从文件中移除已存在的字段。<br />
<br />
===打开现有文件===<br />
<br />
用户可以在“文件”菜单中选择“打开”来开始编辑文件。 选择恰当文件后,头部编辑器将会扫描文件中的所有重要元素。 根据文件大小,这要耗费相应的时间。 由于 Matroska 灵活的文件结构,这是必要的一步。<br />
<br />
===编辑头部字段===<br />
<br />
打开文件之后,左窗格将为文件中发现的各剪辑头与各轨道各显示一个元素。 树形结构中的每个节点都包含一系列的子元素,它们代表真实的头部值。 用户选择这样的子元素后,右窗格将被更新,以显示该元素的一系列情况:<br />
<br />
* 它的类型(数字,字串等),<br />
* 它的名字,<br />
* 它的用途简述,<br />
* 文件中是否存在该字段 (若存在则提供移除选项,反之则提供添加选项),<br />
* 元素的原值(若打开的文件中存在该元素)以及<br />
* 修改内容用的控件。<br />
<br />
大部分值的数据类型显而易见:数字,字符串等。然而,二进制类型以十六进制数位的序列显示。 可接受的格式与 mkvmerge 指定剪辑 UID 的那些选项相同:既可以是简单的十六进制数位序列 (如 1857a7fe7d……)也可以是每两位以“0x”为前缀的十六进制数 (如 0x18 0x57 0xa7 0xfe 0x7d……)。<br />
<br />
===检验===<br />
<br />
您可以通过选择“头部”菜单中的“检验”对您的改动进行检验。 在用户保存文件时,检验也会自动进行。 检验操作可以确保用户提供的数值能够存储到相关元素中。 例如数字元素不能包含字符。<br />
<br />
如果检验失败, 首个未通过检验的元素将被选中,这样用户可以修正错误。<br />
<br />
===保存文件===<br />
<br />
用户可以通过选择“文件”菜单中的“保存”来保存改动。 如果未进行任何改动,mmg 会如实告知,且不会对文件进行改动。<br />
<br />
在改动文件之前,mmg 会检查文件打开后是否已被其它应用程序改动。 如果是这样,mmg 会警告用户,放弃所有改动并重新载入文件,以确保文件不被破坏。<br />
<br />
mmg 会尽可能在最合适的地方写入改动后的头部。 它会在原位置、EbmlVoid 元素处以及它发现的所有其他头部实例处覆写已有头部元素。 它还会更新元定位头,以便读取此文件的其他程序找到这些头部字段。<br />
<br />
保存文件后,头部编辑器将自动重新载入该文件并重新分析它。 这样做可以确保文件未发生任何损坏。 这一安全功能会很大程度地延缓保存文件的过程。 在完成足够的测试之后,后续版本的 mmg 中将移除该功能。</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=MKVToolNix&diff=284
MKVToolNix
2010-08-01T05:14:53Z
<p>XsLiDian:以内容'''MKVToolNix'' 是用于创建、更改与检查 [http://www.matroska.org/ Matroska] 文件的一系列工具, 它支持包括 Linux 在内的 Unix 平台和 Windows 平…'创建新页面</p>
<hr />
<div>''MKVToolNix'' 是用于创建、更改与检查 [http://www.matroska.org/ Matroska] 文件的一系列工具,<br />
它支持包括 Linux 在内的 Unix 平台和 Windows 平台。<br />
<br />
它们对 Matroska 的处理,类似于 [http://www.bunkus.org/videotools/ogmtools/ OGMtools] 对 OGM 格式的处理。<br />
<br />
2003 年 5 月 1 日起,Matroska 运行库 与 Matroska 工具 相继正式发布。<br />
<br />
== [[mkvmerge GUI|mkvmerge GUI 指南]] ==<br />
<br />
== 组件文档 ==<br />
=== [[mkvmerge]] ===<br />
生成<br />
=== [[mkvinfo]] ===<br />
信息查看<br />
=== [[mkvextract]] ===<br />
提取<br />
=== [[mkvpropedit]] ===<br />
属性编辑<br />
=== [[mmg]] ===<br />
GUI</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Mkvmerge_GUI&diff=283
Mkvmerge GUI
2010-08-01T05:00:41Z
<p>XsLiDian:重定向页面到Mkvmerge GUI 指南</p>
<hr />
<div>#REDIRECT[[mkvmerge GUI 指南]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=Mkvtoolnix&diff=282
Mkvtoolnix
2010-08-01T04:50:25Z
<p>XsLiDian:正名~</p>
<hr />
<div>#REDIRECT[[MKVToolNix]]</div>
XsLiDian
https://www.nmm-hd.org/d/index.php?title=%E8%84%9A%E6%9C%AC%E7%A4%BA%E4%BE%8B&diff=134
脚本示例
2009-08-14T14:30:55Z
<p>XsLiDian:/* 例 5:poptones 的 Layer 用法示例 */ 格式化</p>
<hr />
<div>这里有一些 AviSynth 脚本示例,它们是按复杂程度分类的。首先下载并安装 AviSynth,然后将这些脚本以扩展名“.avs”保存,这样就可以在您最喜欢的视频播放器或编辑器中载入了。<br />
<br />
== 简单的示例 ==<br />
<br />
=== 例 1:剪辑片段 ===<br />
<code><br />
# 这是注释。<br />
# 注释行需以“#”符号开头,它们将被 AviSynth 忽略。<br />
<br />
# 载入与本脚本同目录的文件“somevideo.avi”<br />
[[AviSource|AVISource]]("somevideo.avi")<br />
<br />
# Trim 指定要'''保留'''的帧。<br />
# 下面几行保留区间 [0, 12000]、[20000, 32000]、[44000, 结尾] 的帧<br />
# 并将它们连接起来,也就是移除区间<br />
# [12001, 19999] 与 [32001, 43999] 的帧。<br />
#<br />
# 注意:闭区间 [a, b] 代表从 a 到 b 的所有帧,<br />
# 包括 a 与 b。<br />
#<br />
[[Trim]](0, 12000) ++ Trim(20000, 32000) ++ Trim(44000, 0)<br />
</code><br />
<br />
=== 例 2:调整画面尺寸 ===<br />
<code><br />
AVISource("somevideo.avi")<br />
<br />
# 调整视频帧的分辨率为 320x240<br />
[[Resize|LanczosResize]](320, 240)<br />
</code><br />
<br />
=== 例 3:混入音频 ===<br />
<code><br />
video = AVISource("somevideo.avi")<br />
<br />
# 也可以载入 wav 文件<br />
audio = [[AviSource|WAVSource]]("music.wav")<br />
<br />
# 将视频轨与音频轨混到一起<br />
[[AudioDub]](video, audio)<br />
</code><br />
<br />
=== 例 4:调节亮度、除噪、淡入淡出 ===<br />
<code><br />
AVISource("somevideo.avi")<br />
<br />
# TemporalSoften 是众多降噪滤镜之一<br />
[[Soften|TemporalSoften]](4, 4, 8, scenechange=15, mode=2)<br />
<br />
# 调高视频的 gamma 系数(与亮度相关)<br />
[[Levels]](0, 1.2, 255, 0, 255)<br />
<br />
# 开头 15 帧由黑色淡入<br />
[[Fade|FadeIn]](15)<br />
<br />
# 最后 15 帧淡出至黑色<br />
[[Fade|FadeOut]](15)<br />
</code><br />
<br />
== 更复杂的示例 ==<br />
<br />
=== 例 5:poptones 的 [[Layer]] 用法示例 ===<br />
<code><br />
[[LoadPlugin]]("MPEG2DEC.dll") <br />
clip1 = [[Mpeg2Source]]("combine.d2v").[[Crop]](16, 0, 688, 576).ConvertToRGB32<br />
noise = AviSource("noise.avs").[[ConvertToRGB32]]<br />
clip1 = clip1.[[Layer]](noise, "add", 8, 0, 0, use_chroma=true)<br />
<br />
clip2 = clip1.[[Trim]](125766, 0)<br />
clip = clip1.Layer(clip2, "add", 128, 0, 0, use_chroma=true).Trim(9180, \<br />
86780).[[AssumeFrameBased]].[[ComplementParity]].[[Bob]]<br />
<br />
# 建立 logo 遮罩层<br />
logosrc = AviSource("nologo.avi").[[Weave]].ConvertToRGB32.[[Resize|BilinearResize]](59, 13)<br />
masklogo = AviSource("whitelogo.avi").ConvertToRGB32<br />
logo = logosrc.[[Layer|Mask]](masklogo).BilinearResize(60, 27)<br />
<br />
# 现在把白色的丑 logo 盖起来...<br />
clip = clip.Layer(logo, "add", 255, 582, 36, use_chroma=true)<br />
<br />
blur = clip.[[GeneralConvolution]](0,<br />
"10 10 10 10 10 <br />
10 10 10 10 10<br />
10 10 16 10 10<br />
10 10 10 10 10<br />
10 10 10 10 10")<br />
# Sobel 边界侦测——矩阵的力量!<br />
hor = clip.GeneralConvolution(0,<br />
"-1 0 1<br />
-2 0 2<br />
-1 0 1")<br />
vert = clip.GeneralConvolution(0,<br />
"-1 -2 -1<br />
0 0 0<br />
1 2 1")<br />
edgemask = hor.Layer(vert,"lighten",255,0,0,1)<br />
<br />
# 现在锐化模糊图像的边缘...<br />
clip = clip.Mask(edgemask)<br />
clip = blur.Layer(clip, "add", 128, 0, 0)<br />
<br />
return clip<br />
</code><br />
<br />
== 参阅 ==<br />
<br />
* 请参阅 AviSynth 社群编撰的 [[外部插件|共享功能(以及外部插件)]]<br />
<br />
[[Category:AviSynth 使用]]</div>
XsLiDian