MKVPROPEDIT(1) | 用户命令 | MKVPROPEDIT(1) |
名称¶
mkvpropedit - 无需重新进行完整的混流,即可修改现有 Matroska 文件的属性
概要¶
mkvpropedit [选项] {输入文件名} {操作}
说明¶
此程序可分析现有 Matroska 文件,并修改其部分属性。然后它将将变更写入现有文件。可修改的属性包括剪辑信息元素(如标题)和轨道头部(如语言代码、'默认轨' 标记或轨道名称)。
选项:
-l, --list-property-names
-p, --parse-mode 模式
轨道、剪辑信息属性处理操作:
-e, --edit 选择器
默认情况下,mkvpropedit(1) 将编辑剪辑信息区段。
关于完整的语法说明请参见关于 编辑选择器 的段落。
-a, --add 名称=数值
-s, --set 名称=数值
-d, --delete 名称
标签及章节处理操作:
-t, --tags 选择器:文件名
选择器 必须是 all、global 或 track 之一。对于all 选择器,mkvpropedit(1) 将替换或移除文件中的所有标签。对于 global 选择器,将只替换或移除全局标签。
对于 track 选择器,mkvpropedit(1) 将替换特定轨道的标签。读取自 文件名 的其他标签将分配给相同轨道。轨道与 编辑选择器 以相同格式指定 (参见下文),如 --tags track:a1:新音频标签.xml。
--add-track-statistics-tags
--delete-track-statistics-tags
-c, --chapters 文件名
附件处理操作:
--add-attachment 文件名
若本选项之前使用了 --attachment-name 选项,则其值将用作新附件的名称。否则附件名称将从 文件名 得出。
若本选项之前使用了 --attachment-mime-type 选项,则其值将用作新附件的 MIME 类型。否则将根据 文件名 的内容自动侦测。
若本选项之前使用了 --attachment-description 选项,则其值将用作新附件的描述。否则将不设置描述信息。
若本选项之前使用了 --attachment-uid 选项,则其值将用作新附件的 UID。否则将自动生成随机的 UID。
--replace-attachment 选择器:文件名
选择器 可以有四种格式。各格式说明位于下文 附件选择器 段落。
若本选项之前使用了 --attachment-name 选项,则其值将设为每个被修改的附件的新名称。否则不修改名称。
若本选项之前使用了 --attachment-mime-type 选项,则其值将设为每个被修改的附件的新 MIME 类型。否则不修改 MIME 类型。
若本选项之前使用了 --attachment-description 选项,则其值将设为每个被修改的附件的新描述。否则不修改描述。
若本选项之前使用了 --attachment-uid 选项,则其值将设为每个被修改的附件的新 UID。否则不修改 UID。
--update-attachment 选择器
选择器 可以有四种格式。各格式说明位于下文 附件选择器 段落。
若本选项之前使用了 --attachment-name 选项,则其值将设为每个被修改的附件的新名称。否则不修改名称。
若本选项之前使用了 --attachment-mime-type 选项,则其值将设为每个被修改的附件的新 MIME 类型。否则不修改 MIME 类型。
若本选项之前使用了 --attachment-description 选项,则其值将设为每个被修改的附件的新描述。否则不修改描述。
若本选项之前使用了 --attachment-uid 选项,则其值将设为每个被修改的附件的新 UID。否则不修改 UID。
--delete-attachment 选择器
选择器 可以有四种格式。各格式说明位于下文 附件选择器 段落。
附件操作选项:
--attachment-name 名称
--attachment-mime-type mime 类型
--attachment-description 描述
--enable-legacy-font-mime-types
这将同时影响到新增附件与替换现有附件的操作,但仅当用户未指定新版 MIME 类型时才起作用。其他现有的附件不受影响。
受影响的 MIME 类型如下:「font/sfnt」「font/ttf」「font/collection」将全部映射至「application/x-truetype-fonts」,「 font/otf」将被映射至「application/vnd.ms-opentype」。
其他选项:
--disable-language-ietf
此选项不影响通过「language-ietf」轨道头部属性提出的变更要求。
--normalize-language-ietf 模式
最简式模式下,所有存在推荐值(preferred value)的语言子标签都会被替换为推荐值。依规范会执行下述转换: 「zh-yue-jyutping」 转换为 「yue-jyutping」,「fr-FX」 转换为 「fr-FR」。
扩展语言子标签形式在最简式的基础上生成。所有存在扩展语言子标签(extended language subtag)的主要语言(primary language)都被替换为子标签对应的前缀加上该子标签。该规则将 「yue-jyutping」 转回传统的 「zh-yue-jyutping」 形式,但 「fr-FR」 不会发生变化,因为 「fr」 不属于扩展语言子标签。
此处的规范化规则只对实际发生变化的元素起作用:
将某个文件内现有的所有语言标签全部作规范化处理的最佳途径是,使用 mkvmerge(1) 将其重新混流,并将程序的「--normalize-language-ietf」选项设为所需的模式。
--command-line-charset 字符集
--output-charset 字符集
-r, --redirect-output 文件名
--ui-language 语言代码
--abort-on-warnings
--debug 主题
--engage 功能
--gui-mode
-v, --verbose
-h, --help
-V, --version
@选项文件.json
编辑选择器¶
--edit 选项设置后续的 添加, 设置 或 删除 操作所影响的 Matroska 文件区域(剪辑信息或者特定轨道的头部)。在出现另一个 --edit 选项之前,此选项将一直有效。此选项的参数就叫做编辑选择器。
默认情况下,mkvpropedit(1) 将编辑剪辑信息区段。
剪辑信息¶
可以通过这三个词中的任意一个选择剪辑信息: 'info'、'segment_info' 或 'segmentinfo'。剪辑信息包含的属性包括剪辑标题、剪辑 UID 等。
轨道头部¶
可用于选择轨道头部的选择器稍显复杂:所有以 'track:' 开头的变体。轨道头部属性包括如语言代码、'默认轨' 标记、轨道名称等属性。
track:n
编号从 1 开始。
track:tn
编号从 1 开始。
track:=uid
track:@数字
注¶
由于轨道编辑选择器的特性,一些选择器所匹配的轨道头部可能是相同的。在此情况下,这些编辑选择器的所有操作将被按照在命令行给出的顺序合并运行。
附件选择器¶
附件选择器可与「--replace-attachment」及「--delete-attachment」这两项操作一起使用。它可以有以下四种格式:
语言处理¶
mkvpropedit(1) 基本上会默认做正确的事。因此修改 「language 」 属性会令 mkvpropedit(1) 将改动同时应用至 「LanguageIETF」 元素以及旧版的 「Language」 元素,与 mkvmerge(1) 将语言属性应用至这两个元素的行为相似。例如,命令 「mkvpropedit 影片.mkv --edit track:2 --set language=zh-HK」 可将 「LanguageIETF」 元素设为 「zh-HK」 ,同时将旧版 「Language」 元素设为 「chi」。
此外,还有一个新的名为 「language-ietf」 的轨道头部属性可以设置或移除。对该属性的变更只会应用到新的 「LanguageIETF」 轨道头部元素。需要提醒的是,旧版 「Language」 轨道头部元素是 Matroska 格式的必备元素 — 也就是说,即使它在文件中未出现,它也存在一个隐含的默认值。若用户只设置 「language-ietf」 属性但不设置 「language」 属性,mkvpropedit(1) 将在必要时添加旧版 「Language」 元素,并将其值设为 「und」 (即 「未定」),因为用户未为其指定一个值。
读取 XML 章节或标签文件时,mkvpropedit(1) 的行为逻辑与 mkvmerge(1) 一致。
可通过命令行选项 「--disable-language-ietf」 来彻底禁止创建新的元素,该选项对现有的三类新元素均有效。
您可以通过参数 「--normalize-language-ietf」 选择适用于扩展语言子标签的规范化方式。
示例¶
下面的示例将编辑一个名为 '电影.mkv' 的文件。示例中将设置剪辑标题并修改一条音频轨和一条字幕轨的语言代码。附注,本示例可以简写,即省去 --edit 选项,因为在第一个 --edit 选项之前的所有选项默认编辑的就是剪辑信息元素。
$ mkvpropedit 影片.mkv --edit info --set "title=一部影片" --edit track:a1 --set language=fre --edit track:a2 --set language=ita
第二个示例,将 '默认轨标记' 从第一条字幕轨移除并设置到第二条字幕轨上。注意 mkvpropedit(1) 与 mkvmerge(1) 不同,不会在将另一个轨道的 '默认轨标记'设为 '1' 的时候自动将其他轨道的标记设为 '0'。
$ mkvpropedit 影片.mkv --edit track:s1 --set flag-default=0 --edit track:s2 --set flag-default=1
像这样替换文件中第二个字幕轨的标签:
$ mkvpropedit 影片.mkv --tags track:s2:新字幕标签.xml
移除所有标签需要将文件名留空:
$ mkvpropedit 影片.mkv --tags all:
像这样替换文件中的章节:
$ mkvpropedit 影片.mkv --chapters 新章节.xml
移除所有章节需要将文件名留空:
$ mkvpropedit 影片.mkv --chapters ''
将字体文件 (Arial.ttf) 作为附件添加:
$ mkvpropedit 影片.mkv --add-attachment Arial.ttf
将字体文件 (89719823.ttf) 作为附件添加,并提供信息,因为它真的就是 Arial:
$ mkvpropedit 影片.mkv --attachment-name Arial.ttf --attachment-description 'Arial 字体,TrueType 类型' --attachment-mime-type application/x-truetype-font --add-attachment 89719823.ttf
将已经附加的字体 (Comic.ttf) 替换为另一个 (Arial.ttf):
$ mkvpropedit 影片.mkv --attachment-name Arial.ttf --attachment-description 'Arial 字体,TrueType 类型' --replace-attachment name:Comic.ttf:Arial.ttf
删除附加的第二个文件,不论它是什么:
$ mkvpropedit 影片.mkv --delete-attachment 2
按 MIME 类型删除所有附加字体:
$ mkvpropedit 影片.mkv --delete-attachment mime-type:application/x-truetype-font
退出代码¶
mkvpropedit(1) 退出时会返回以下三个退出代码中的一个:
文本文件与字符集转换¶
关于 MKVToolNix 套件中所有工具如何处理字符集转换、输入/输出编码、命令行编码及控制台编码的深入讨论,请参见 mkvmerge(1) 手册中相对应名称的段落。
环境变量¶
mkvpropedit(1) 会使用决定系统区域设置的默认变量 (如 LANG 与 LC_* 族)。其他变量包括:
MKVPROPEDIT_DEBUG, MKVTOOLNIX_DEBUG 及其缩略形式 MTX_DEBUG
MKVPROPEDIT_ENGAGE, MKVTOOLNIX_ENGAGE 及其缩略形式 MTX_ENGAGE
参阅¶
网络¶
最新版本总可以在 MKVToolNix 主页[1] 找到。
作者¶
Moritz Bunkus <moritz@bunkus.org>
备注¶
- 1.
- MKVToolNix 主页
2024-09-07 | MKVToolNix 87.0 |