'\" t .\" Title: mkvpropedit .\" Author: Moritz Bunkus .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2017-05-20 .\" Manual: User Commands .\" Source: MKVToolNix 12.0.0 .\" Language: English .\" .TH "MKVPROPEDIT" "1" "2017\-05\-20" "MKVToolNix 12\&.0\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" mkvpropedit \- Modify properties of existing Matroska files without a complete remux .SH "SYNOPSIS" .HP \w'\fBmkvpropedit\fR\ 'u \fBmkvpropedit\fR [options] {source\-filename} {actions} .SH "DESCRIPTION" .PP This program analyses an existing Matroska file and modifies some of its properties\&. Then it writes those modifications to the existing file\&. Among the properties that can be changed are the segment information elements (e\&.g\&. the title) and the track headers (e\&.g\&. the language code, \*(Aqdefault track\*(Aq flag or the name)\&. .PP Options: .PP \fB\-l\fR, \fB\-\-list\-property\-names\fR .RS 4 Lists all known and editable property names, their type (string, integer, boolean etc) and a short description\&. The program exits afterwards\&. Therefore the \fIsource\-filename\fR parameter does not have to be supplied\&. .RE .PP \fB\-p\fR, \fB\-\-parse\-mode\fR \fImode\fR .RS 4 Sets the parse mode\&. The parameter \*(Aq\fImode\fR\*(Aq can either be \*(Aqfast\*(Aq (which is also the default) or \*(Aqfull\*(Aq\&. The \*(Aqfast\*(Aq mode does not parse the whole file but uses the meta seek elements for locating the required elements of a source file\&. In 99% of all cases this is enough\&. But for files that do not contain meta seek elements or which are damaged the user might have to set the \*(Aqfull\*(Aq parse mode\&. A full scan of a file can take a couple of minutes while a fast scan only takes seconds\&. .RE .PP Actions that deal with track and segment info properties: .PP \fB\-e\fR, \fB\-\-edit\fR \fIselector\fR .RS 4 Sets the Matroska file section (segment information or a certain track\*(Aqs headers) that all following add, set and delete actions operate on\&. This option can be used multiple times in order to make modifications to more than one element\&. .sp By default \fBmkvpropedit\fR(1) will edit the segment information section\&. .sp See the section about edit selectors for a full description of the syntax\&. .RE .PP \fB\-a\fR, \fB\-\-add\fR \fIname\fR=\fIvalue\fR .RS 4 Adds a property \fIname\fR with the value \fIvalue\fR\&. The property will be added even if such a property exists already\&. Note that most properties are unique and cannot occur more than once\&. .RE .PP \fB\-s\fR, \fB\-\-set\fR \fIname\fR=\fIvalue\fR .RS 4 Sets all occurrences of the property \fIname\fR to the value \fIvalue\fR\&. If no such property exists then it will be added\&. .RE .PP \fB\-d\fR, \fB\-\-delete\fR \fIname\fR .RS 4 Deletes all occurrences of the property \fIname\fR\&. Note that some properties are required and cannot be deleted\&. .RE .PP Actions that deal with tags and chapters: .PP \fB\-t\fR, \fB\-\-tags\fR \fIselector\fR:\fIfilename\fR .RS 4 Add or replace tags in the file with the ones from filename or remove them if filename is empty\&. \fBmkvpropedit\fR(1) reads the same XML tag format that \fBmkvmerge\fR(1) reads as well\&. .sp The \fIselector\fR must be one of the words \fBall\fR, \fBglobal\fR or \fBtrack\fR\&. For \fBall\fR \fBmkvpropedit\fR(1) will replace or remove all tags in a file\&. With \fBglobal\fR only global tags will be replaced or removed\&. .sp With \fBtrack\fR \fBmkvpropedit\fR(1) will replace tags for a specific track\&. Additionally the tags read from filename will be assigned to the same track\&. The track is specified in the same way edit selectors are specified (see below), e\&.g\&. \-\-tags track:a1:new\-audio\-tags\&.xml\&. .RE .PP \fB\-\-add\-track\-statistics\-tags\fR .RS 4 Calculates statistics for all tracks in a file and adds new statistics tags for them\&. If the file already contains such tags then they\*(Aqll be updated\&. .RE .PP \fB\-\-delete\-track\-statistics\-tags\fR .RS 4 Deletes all existing track statistics tags from a file\&. If the file doesn\*(Aqt contain track statistics tags then it won\*(Aqt be modified\&. .RE .PP \fB\-c\fR, \fB\-\-chapters\fR \fIfilename\fR .RS 4 Add or replace chapters in the file with the ones from filename or remove them if filename is empty\&. \fBmkvpropedit\fR(1) reads the same XML and simple chapter formats that \fBmkvmerge\fR(1) reads as well\&. .RE .PP Actions for handling attachments: .PP \fB\-\-add\-attachment\fR \fIfilename\fR .RS 4 Adds a new attachment from \fIfilename\fR\&. .sp If the option \fB\-\-attachment\-name\fR has been used prior to this option then its value is used as the new attachment\*(Aqs name\&. Otherwise it is derived from \fIfilename\fR\&. .sp If the option \fB\-\-attachment\-mime\-type\fR has been used prior to this option then its value is used as the new attachment\*(Aqs MIME type\&. Otherwise it is auto\-detected from the content of \fIfilename\fR\&. .sp If the option \fB\-\-attachment\-description\fR has been used prior to this option then its value is used as the new attachment\*(Aqs description\&. Otherwise no description will be set\&. .sp If the option \fB\-\-attachment\-uid\fR has been used prior to this option then its value is used as the new attachment\*(Aqs UID\&. Otherwise a random UID will be generated automatically\&. .RE .PP \fB\-\-replace\-attachment\fR \fIselector\fR:\fIfilename\fR .RS 4 Replaces one or more attachments that match \fIselector\fR with the file \fIfilename\fR\&. If more than one existing attachment matches \fIselector\fR then all of their contents will be replaced by the content of \fIfilename\fR\&. .sp The \fIselector\fR can have one of four forms\&. They\*(Aqre exlained below in the section attachment selectors\&. .sp If the option \fB\-\-attachment\-name\fR has been used prior to this option then its value is set as the new name for each modified attachment\&. Otherwise the names aren\*(Aqt changed\&. .sp If the option \fB\-\-attachment\-mime\-type\fR has been used prior to this option then its value is set as the new MIME type for each modified attachment\&. Otherwise the MIME types aren\*(Aqt changed\&. .sp If the option \fB\-\-attachment\-description\fR has been used prior to this option then its value is set as the new description for each modified attachment\&. Otherwise the descriptions aren\*(Aqt changed\&. .sp If the option \fB\-\-attachment\-uid\fR has been used prior to this option then its value is set as the new UID for each modified attachment\&. Otherwise the UIDs aren\*(Aqt changed\&. .RE .PP \fB\-\-update\-attachment\fR \fIselector\fR .RS 4 Sets the properties of one or more attachments that match \fIselector\fR\&. If more than one existing attachment matches \fIselector\fR then all of their properties will be updated\&. .sp The \fIselector\fR can have one of four forms\&. They\*(Aqre exlained below in the section attachment selectors\&. .sp If the option \fB\-\-attachment\-name\fR has been used prior to this option then its value is set as the new name for each modified attachment\&. Otherwise the names aren\*(Aqt changed\&. .sp If the option \fB\-\-attachment\-mime\-type\fR has been used prior to this option then its value is set as the new MIME type for each modified attachment\&. Otherwise the MIME types aren\*(Aqt changed\&. .sp If the option \fB\-\-attachment\-description\fR has been used prior to this option then its value is set as the new description for each modified attachment\&. Otherwise the descriptions aren\*(Aqt changed\&. .sp If the option \fB\-\-attachment\-uid\fR has been used prior to this option then its value is set as the new UID for each modified attachment\&. Otherwise the UIDs aren\*(Aqt changed\&. .RE .PP \fB\-\-delete\-attachment\fR \fIselector\fR .RS 4 Deletes one or more attachments that match \fIselector\fR\&. .sp The \fIselector\fR can have one of four forms\&. They\*(Aqre exlained below in the section attachment selectors\&. .RE .PP Options for attachment actions: .PP \fB\-\-attachment\-name\fR \fIname\fR .RS 4 Sets the name to use for the following \fB\-\-add\-attachment\fR or \fB\-\-replace\-attachment\fR operation\&. .RE .PP \fB\-\-attachment\-mime\-type\fR \fImime\-type\fR .RS 4 Sets the MIME type to use for the following \fB\-\-add\-attachment\fR or \fB\-\-replace\-attachment\fR operation\&. .RE .PP \fB\-\-attachment\-description\fR \fIdescription\fR .RS 4 Sets the description to use for the following \fB\-\-add\-attachment\fR or \fB\-\-replace\-attachment\fR operation\&. .RE .PP Other options: .PP \fB\-\-command\-line\-charset\fR \fIcharacter\-set\fR .RS 4 Sets the character set to convert strings given on the command line from\&. It defaults to the character set given by system\*(Aqs current locale\&. .RE .PP \fB\-\-output\-charset\fR \fIcharacter\-set\fR .RS 4 Sets the character set to which strings are converted that are to be output\&. It defaults to the character set given by system\*(Aqs current locale\&. .RE .PP \fB\-r\fR, \fB\-\-redirect\-output\fR \fIfile\-name\fR .RS 4 Writes all messages to the file \fIfile\-name\fR instead of to the console\&. While this can be done easily with output redirection there are cases in which this option is needed: when the terminal reinterprets the output before writing it to a file\&. The character set set with \fB\-\-output\-charset\fR is honored\&. .RE .PP \fB\-\-ui\-language\fR \fIcode\fR .RS 4 Forces the translations for the language \fIcode\fR to be used (e\&.g\&. \*(Aqde_DE\*(Aq for the German translations)\&. Entering \*(Aqlist\*(Aq as the \fIcode\fR will cause the program to output a list of available translations\&. .RE .PP \fB\-\-debug\fR \fItopic\fR .RS 4 Turn on debugging for a specific feature\&. This option is only useful for developers\&. .RE .PP \fB\-\-engage\fR \fIfeature\fR .RS 4 Turn on experimental features\&. A list of available features can be requested with \fBmkvpropedit \-\-engage list\fR\&. These features are not meant to be used in normal situations\&. .RE .PP \fB\-\-gui\-mode\fR .RS 4 Turns on GUI mode\&. In this mode specially\-formatted lines may be output that can tell a controlling GUI what\*(Aqs happening\&. These messages follow the format \*(Aq#GUI#message\*(Aq\&. The message may be followed by key/value pairs as in \*(Aq#GUI#message#key1=value1#key2=value2\&...\*(Aq\&. Neither the messages nor the keys are ever translated and always output in English\&. .RE .PP \fB\-v\fR, \fB\-\-verbose\fR .RS 4 Be verbose and show all the important Matroska elements as they\*(Aqre read\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 Show usage information and exit\&. .RE .PP \fB\-V\fR, \fB\-\-version\fR .RS 4 Show version information and exit\&. .RE .PP \fB\-\-check\-for\-updates\fR .RS 4 Checks online for new releases by downloading the URL \m[blue]\fBhttp://mkvtoolnix\-releases\&.bunkus\&.org/latest\-release\&.xml\fR\m[]\&. Four lines will be output in key=value style: the URL from where the information was retrieved (key version_check_url), the currently running version (key running_version), the latest release\*(Aqs version (key available_version) and the download URL (key download_url)\&. .sp Afterwards the program exists with an exit code of 0 if no newer release is available, with 1 if a newer release is available and with 2 if an error occured (e\&.g\&. if the update information could not be retrieved)\&. .sp This option is only available if the program was built with support for libcurl\&. .RE .PP \fB@\fR\fIoptions\-file\&.json\fR .RS 4 Reads additional command line arguments from the file \fIoptions\-file\fR\&. For a full explanation on the supported formats for such files see the section called "Option files" in the \fBmkvmerge\fR(1) man page\&. .RE .SH "EDIT SELECTORS" .PP The \fB\-\-edit\fR option sets the Matroska file section (segment information or a certain track\*(Aqs headers) that all following add, set and delete actions operate on\&. This stays valid until the next \fB\-\-edit\fR option is found\&. The argument to this option is called the edit selector\&. .PP By default \fBmkvpropedit\fR(1) will edit the segment information section\&. .SS "Segment information" .PP The segment information can be selected with one of these three words: \*(Aqinfo\*(Aq, \*(Aqsegment_info\*(Aq or \*(Aqsegmentinfo\*(Aq\&. It contains properties like the segment title or the segment UID\&. .SS "Track headers" .PP Track headers can be selected with a slightly more complex selector\&. All variations start with \*(Aqtrack:\*(Aq\&. The track header properties include elements like the language code, \*(Aqdefault track\*(Aq flag or the track\*(Aqs name\&. .PP \fBtrack:\fR\fIn\fR .RS 4 If the parameter \fIn\fR is a number then the \fIn\fRth track will be selected\&. The track order is the same that \fBmkvmerge\fR(1)\*(Aqs \fB\-\-identify\fR option outputs\&. .sp Numbering starts at 1\&. .RE .PP \fBtrack:\fR\fIt\fR\fIn\fR .RS 4 If the parameter starts with a single character \fIt\fR followed by a \fIn\fR then the \fIn\fRth track of a specific track type will be selected\&. The track type parameter \fIt\fR must be one of these four characters: \*(Aqa\*(Aq for an audio track, \*(Aqb\*(Aq for a button track, \*(Aqs\*(Aq for a subtitle track and \*(Aqv\*(Aq for a video track\&. The track order is the same that \fBmkvmerge\fR(1)\*(Aqs \fB\-\-identify\fR option outputs\&. .sp Numbering starts at 1\&. .RE .PP \fBtrack:\fR=\fIuid\fR .RS 4 If the parameter starts with a \*(Aq=\*(Aq followed by a number \fIuid\fR then the track whose track UID element equals this \fIuid\fR\&. Track UIDs can be obtained with \fBmkvinfo\fR(1)\&. .RE .PP \fBtrack:\fR@\fInumber\fR .RS 4 If the parameter starts with a \*(Aq@\*(Aq followed by a number \fInumber\fR then the track whose track number element equals this \fInumber\fR\&. Track number can be obtained with \fBmkvinfo\fR(1)\&. .RE .SS "Notes" .PP Due to the nature of the track edit selectors it is possible that several selectors actually match the same track headers\&. In such cases all actions for those edit selectors will be combined and executed in the order in which they\*(Aqre given on the command line\&. .SH "ATTACHMENT SELECTORS" .PP An attachment selector is used with the two actions \fB\-\-replace\-attachment\fR and \fB\-\-delete\-attachment\fR\&. It can have one of the following four forms: .sp .RS 4 .ie n \{\ \h'-04' 1.\h'+01'\c .\} .el \{\ .sp -1 .IP " 1." 4.2 .\} Selection by attachment ID\&. In this form the selector is simply a number, the attachment\*(Aqs ID as output by \fBmkvmerge\fR(1)\*(Aqs identification command\&. .RE .sp .RS 4 .ie n \{\ \h'-04' 2.\h'+01'\c .\} .el \{\ .sp -1 .IP " 2." 4.2 .\} Selection by attachment UID (unique ID)\&. In this form the selector is the equal sign = followed by a number, the attachment\*(Aqs unique ID as output by \fBmkvmerge\fR(1)\*(Aqs verbose identification command\&. .RE .sp .RS 4 .ie n \{\ \h'-04' 3.\h'+01'\c .\} .el \{\ .sp -1 .IP " 3." 4.2 .\} Selection by attachment name\&. In this form the selector is the literal word name: followed by the existing attachment\*(Aqs name\&. If this selector is used with \fB\-\-replace\-attachment\fR then colons within the name to match must be escaped as \ec\&. .RE .sp .RS 4 .ie n \{\ \h'-04' 4.\h'+01'\c .\} .el \{\ .sp -1 .IP " 4." 4.2 .\} Selection by MIME type\&. In this form the selector is the literal word mime\-type: followed by the existing attachment\*(Aqs MIME type\&. If this selector is used with \fB\-\-replace\-attachment\fR then colons within the MIME type to match must be escaped as \ec\&. .RE .SH "EXAMPLES" .PP The following example edits a file called \*(Aqmovie\&.mkv\*(Aq\&. It sets the segment title and modifies the language code of an audio and a subtitle track\&. Note that this example can be shortened by leaving out the first \fB\-\-edit\fR option because editing the segment information element is the default for all options found before the first \fB\-\-edit\fR option anyway\&. .sp .if n \{\ .RS 4 .\} .nf $ mkvpropedit movie\&.mkv \-\-edit info \-\-set "title=The movie" \-\-edit track:a1 \-\-set language=fre \-\-edit track:a2 \-\-set language=ita .fi .if n \{\ .RE .\} .PP The second example removes the \*(Aqdefault track flag\*(Aq from the first subtitle track and sets it for the second one\&. Note that \fBmkvpropedit\fR(1), unlike \fBmkvmerge\fR(1), does not set the \*(Aqdefault track flag\*(Aq of other tracks to \*(Aq0\*(Aq if it is set to \*(Aq1\*(Aq for a different track automatically\&. .sp .if n \{\ .RS 4 .\} .nf $ mkvpropedit movie\&.mkv \-\-edit track:s1 \-\-set flag\-default=0 \-\-edit track:s2 \-\-set flag\-default=1 .fi .if n \{\ .RE .\} .PP Replacing the tags for the second subtitle track in a file looks like this: .sp .if n \{\ .RS 4 .\} .nf $ mkvpropedit movie\&.mkv \-\-tags track:s2:new\-subtitle\-tags\&.xml .fi .if n \{\ .RE .\} .PP Removing all tags requires leaving out the file name: .sp .if n \{\ .RS 4 .\} .nf $ mkvpropedit movie\&.mkv \-\-tags all: .fi .if n \{\ .RE .\} .PP Replacing the chapters in a file looks like this: .sp .if n \{\ .RS 4 .\} .nf $ mkvpropedit movie\&.mkv \-\-chapters new\-chapters\&.xml .fi .if n \{\ .RE .\} .PP Removing all chapters requires leaving out the file name: .sp .if n \{\ .RS 4 .\} .nf $ mkvpropedit movie\&.mkv \-\-chapters \*(Aq\*(Aq .fi .if n \{\ .RE .\} .PP Adding a font file (Arial\&.ttf) as an attachment: .sp .if n \{\ .RS 4 .\} .nf $ mkvpropedit movie\&.mkv \-\-add\-attachment Arial\&.ttf .fi .if n \{\ .RE .\} .PP Adding a font file (89719823\&.ttf) as an attachment and providing some information as it really is just Arial: .sp .if n \{\ .RS 4 .\} .nf $ mkvpropedit movie\&.mkv \-\-attachment\-name Arial\&.ttf \-\-attachment\-description \*(AqThe Arial font as a TrueType font\*(Aq \-\-attachment\-mime\-type application/x\-truetype\-font \-\-add\-attachment 89719823\&.ttf .fi .if n \{\ .RE .\} .PP Replacing one attached font (Comic\&.ttf) file with another one (Arial\&.ttf): .sp .if n \{\ .RS 4 .\} .nf $ mkvpropedit movie\&.mkv \-\-attachment\-name Arial\&.ttf \-\-attachment\-description \*(AqThe Arial font as a TrueType font\*(Aq \-\-replace\-attachment name:Comic\&.ttf:Arial\&.ttf .fi .if n \{\ .RE .\} .PP Deleting the second attached file, whatever it may be: .sp .if n \{\ .RS 4 .\} .nf $ mkvpropedit movie\&.mkv \-\-delete\-attachment 2 .fi .if n \{\ .RE .\} .PP Deleting all attached fonts by MIME type: .sp .if n \{\ .RS 4 .\} .nf $ mkvpropedit movie\&.mkv \-\-delete\-attachment mime\-type:application/x\-truetype\-font .fi .if n \{\ .RE .\} .SH "EXIT CODES" .PP \fBmkvpropedit\fR(1) exits with one of three exit codes: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB0\fR \-\- This exit codes means that the modification has completed successfully\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB1\fR \-\- In this case \fBmkvpropedit\fR(1) has output at least one warning, but the modification did continue\&. A warning is prefixed with the text \*(AqWarning:\*(Aq\&. Depending on the issues involved the resulting files might be ok or not\&. The user is urged to check both the warning and the resulting files\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB2\fR \-\- This exit code is used after an error occurred\&. \fBmkvpropedit\fR(1) aborts right after outputting the error message\&. Error messages range from wrong command line arguments over read/write errors to broken files\&. .RE .SH "TEXT FILES AND CHARACTER SET CONVERSIONS" .PP For an in\-depth discussion about how all tools in the MKVToolNix suite handle character set conversions, input/output encoding, command line encoding and console encoding please see the identically\-named section in the \fBmkvmerge\fR(1) man page\&. .SH "ESCAPING SPECIAL CHARS IN TEXT" .PP There are a few places in which special characters in text must or should be escaped\&. The rules for escaping are simple: each character that needs escaping is replaced with a backslash followed by another character\&. .PP The rules are: \*(Aq \*(Aq (a space) becomes \*(Aq\es\*(Aq, \*(Aq"\*(Aq (double quotes) becomes \*(Aq\e2\*(Aq, \*(Aq:\*(Aq becomes \*(Aq\ec\*(Aq, \*(Aq#\*(Aq becomes \*(Aq\eh\*(Aq and \*(Aq\e\*(Aq (a single backslash) itself becomes \*(Aq\e\e\*(Aq\&. .SH "ENVIRONMENT VARIABLES" .PP \fBmkvpropedit\fR(1) uses the default variables that determine the system\*(Aqs locale (e\&.g\&. \fILANG\fR and the \fILC_*\fR family)\&. Additional variables: .PP \fIMKVPROPEDIT_DEBUG\fR, \fIMKVTOOLNIX_DEBUG\fR and its short form \fIMTX_DEBUG\fR .RS 4 The content is treated as if it had been passed via the \fB\-\-debug\fR option\&. .RE .PP \fIMKVPROPEDIT_ENGAGE\fR, \fIMKVTOOLNIX_ENGAGE\fR and its short form \fIMTX_ENGAGE\fR .RS 4 The content is treated as if it had been passed via the \fB\-\-engage\fR option\&. .RE .PP \fIMKVPROPEDIT_OPTIONS\fR, \fIMKVTOOLNIX_OPTIONS\fR and its short form \fIMTX_OPTIONS\fR .RS 4 The content is split on white space\&. The resulting partial strings are treated as if it had been passed as command line options\&. If you need to pass special characters (e\&.g\&. spaces) then you have to escape them (see the section about escaping special characters in text)\&. .RE .SH "SEE ALSO" .PP \fBmkvmerge\fR(1), \fBmkvinfo\fR(1), \fBmkvextract\fR(1), \fBmkvtoolnix-gui\fR(1) .SH "WWW" .PP The latest version can always be found at \m[blue]\fBthe MKVToolNix homepage\fR\m[]\&\s-2\u[1]\d\s+2\&. .SH "AUTHOR" .PP \fBMoritz Bunkus\fR <\&moritz@bunkus\&.org\&> .RS 4 Developer .RE .SH "NOTES" .IP " 1." 4 the MKVToolNix homepage .RS 4 \%https://mkvtoolnix.download/ .RE