neulab/tldr huggingface dataset:
--audio-channels=layout1,layout2,... List of ,-separated channel layouts which should be allowed.  Technically, this only adjusts the filter chain output to the best matching layout in the list, and passes the result to the audio API.  It's possible that the audio API will select a different channel layout.
Using this mode is recommended for direct hardware output, especially over HDMI (see HDMI warning below).
--audio-channels=stereo Force  a plain stereo downmix. This is a special-case of the previous item. (See paragraphs below for implications.)
If a list of layouts is given, each item can be either an explicit channel layout name (like 5.1), or a channel number. Channel numbers refer to default layouts, e.g. 2 channels refer to stereo, 6 refers to 5.1.
See --audio-channels=help output for defined default layouts. This also lists speaker names, which can be used to express arbitrary channel layouts (e.g. fl-fr-lfe is 2.1).
If the list of channel layouts has only 1 item, the decoder is asked to produce according output. This sometimes triggers decoder-downmix, which might be different from the normal mpv downmix. (Only some decoders support remixing audio, like AC-3, AAC or DTS. You can use --ad-lavc-downmix=no to make the decoder always output its native layout.) One consequence is that --audio-channels=stereo triggers decoder downmix, while auto or auto-safe never will, even if they end up selecting stereo. This happens because the decision whether to use decoder downmix happens long before the audio device is opened.
If the channel layout of the media file (i.e. the decoder) and the AO's channel layout don't match, mpv will attempt to insert a conversion filter.  You may need to change the channel layout of the system mixer to achieve your desired output as mpv does not have control over it. Another work-around for this on some AOs is to use --audio-exclusive=yes to circumvent the system mixer entirely.
Using auto can cause issues when using audio over HDMI. The OS will typically report all channel layouts that _can_ go over HDMI, even if the receiver does not support them. If a receiver gets an unsupported channel layout, random things can happen, such as dropping the additional channels, or adding noise.
You are recommended to set an explicit whitelist of the layouts you want. For example, most A/V receivers connected via HDMI and that can do 7.1 would  be served by: --audio-channels=7.1,5.1,stereo
--audio-display=<no|embedded-first|external-first> Determines whether to display cover art when playing audio files and with what priority. It will display the first image found, and additional images are available as video tracks.
no     Disable display of video entirely when playing audio files.
embedded-first Display embedded images and external cover art, giving priority to embedded images (default).
external-first Display embedded images and external cover art, giving priority to external files.
This option has no influence on files with normal video tracks.
--audio-files=<files> Play audio from an external file while viewing a video.
This is a path list option. See List Options for details.
--audio-file=<file> CLI/config file only alias for --audio-files-append. Each use of this option will add a new audio track. The details are similar to how --sub-file works.
--audio-format=<format> Select the sample format used for output from the audio filter layer to the sound card. The values that <format> can adopt are listed below in the description of the format audio filter.
--audio-samplerate=<Hz> Select the output sample rate to be used (of course sound cards have limits on this). If the sample frequency selected is different from that of the current media, the lavrresample audio filter will be inserted into the audio filter layer to compensate for the difference.
--gapless-audio=<no|yes|weak> Try to play consecutive audio files with no silence or disruption at the point of file change. Default: weak.
no     Disable gapless audio.
yes    The audio device is opened using parameters chosen for the first file played and is then kept open for gapless playback. This means that if the first file for example has a low sample rate, then the following files may get resampled to the same low sample rate, resulting in reduced sound quality. If you play files with different parameters, consider using options such as --audio-samplerate and --audio-format to explicitly select what the shared output format will be.
weak   Normally, the audio device is kept open (using the format it was first initialized with). If the audio format the decoder output changes, the audio device is closed and reopened. This means that you will normally get gapless audio with files that were encoded using the same settings, but might not be gapless in other cases.  The exact conditions under which the audio device is kept open is an implementation detail, and can change from version to version.  Currently, the device is kept even if the sample format changes, but the sample formats are convertible.  If video is still going on when there is still audio, trying to use gapless is also explicitly given up.
NOTE: This feature is implemented in a simple manner and relies on audio output device buffering to continue playback while moving from one file to another. If playback of the new file starts slowly, for example because it is played from a remote network location or because you have specified cache settings that require time for the initial cache fill, then the buffered audio may run out before playback of the new file can start.
--initial-audio-sync, --no-initial-audio-sync When starting a video file or after events such as seeking, mpv will by default modify the audio stream to make it start from the same timestamp as video, by either inserting silence at the start or cutting away the first samples. Disabling this option makes the player behave like older mpv versions did: video and audio are both started immediately even if their start timestamps differ, and then video timing is gradually adjusted if necessary to reach correct synchronization later.
--volume-max=<100.0-1000.0>, --softvol-max=<...> Set the maximum amplification level in percent (default: 130). A value of 130 will allow you to adjust the volume up to about double the normal level.
--softvol-max is a deprecated alias and should not be used.
--audio-file-auto=<no|exact|fuzzy|all>, --no-audio-file-auto Load additional audio files matching the video filename. The parameter specifies how external audio files are matched.
no     Don't automatically load external audio files (default).
exact  Load the media filename with audio file extension.
fuzzy  Load all audio files containing the media filename.
all    Load all audio files in the current and --audio-file-paths directories.
--audio-file-paths=<path1:path2:...> Equivalent to --sub-file-paths option, but for auto-loaded audio files.
--audio-client-name=<name> The application name the player reports to the audio API. Can be useful if you want to force a different audio profile (e.g. with PulseAudio), or to set your own application name when using libmpv.
--audio-buffer=<seconds> Set the audio output minimum buffer. The audio device might actually create a larger buffer if it pleases. If the device creates a smaller buffer, additional audio is buffered in an additional software buffer.
Making this larger will make soft-volume and other filters react slower, introduce additional issues on playback speed change, and block the player on audio format changes. A smaller buffer might lead to audio dropouts.
This option should be used for testing only. If a non-default value helps significantly, the mpv developers should be contacted.
Default: 0.2 (200 ms).
--audio-stream-silence=<yes|no> Cash-grab consumer audio hardware (such as A/V receivers) often ignore initial audio sent over HDMI. This can happen every time audio over HDMI is stopped and resumed. In order to compensate for this, you can enable this option to not to stop and restart audio on seeks, and fill the gaps with silence. Likewise, when pausing playback, audio is not stopped, and silence is played while paused. Note that if no audio track is selected, the audio device will still be closed immediately.
Not all AOs support this.
This modifies certain subtle player behavior, like A/V-sync and underrun handling. Enabling this option is strongly discouraged.
--audio-wait-open=<secs> This makes sense for use with --audio-stream-silence=yes. If this option is given, the player will wait for the given amount of seconds after opening the audio device before sending actual audio data to it. Useful if your expensive hardware discards the first 1 or 2 seconds of audio data sent to it. If --audio-stream-silence=yes is not set, this option will likely just waste time.
Subtitles NOTE: Changing styling and position does not work with all subtitles. Image-based subtitles (DVD, Bluray/PGS, DVB) cannot changed for fundamental reasons.  Subtitles in ASS format are normally not changed intentionally, but overriding them can be controlled with --sub-ass-override.
Previously some options working on text subtitles were called --sub-text-*, they are now named --sub-*, and those specifically for ASS have been renamed from --ass-* to --sub-ass-*.  They are now all in this section.
--sub-demuxer=<[+]name> Force subtitle demuxer type for --sub-file. Give the demuxer name as printed by --sub-demuxer=help.
--sub-delay=<sec> Delays subtitles by <sec> seconds. Can be negative.
--sub-files=<file-list>, --sub-file=<filename> Add a subtitle file to the list of external subtitles.
If you use --sub-file only once, this subtitle file is displayed by default.
If --sub-file is used multiple times, the subtitle to use can be switched at runtime by cycling subtitle tracks. It's possible to show two subtitles at once: use --sid to select the first subtitle index, and --secondary-sid to select the second index. (The index is printed on the terminal output after the --sid= in the list of streams.)
--sub-files is a path list option (see List Options  for details), and can take multiple file names separated by : (Unix) or ; (Windows), while  --sub-file takes a single filename, but can be used multiple times to add multiple files. Technically, --sub-file is a CLI/config file only alias for  --sub-files-append.
--secondary-sid=<ID|auto|no> Select a secondary subtitle stream. This is similar to --sid. If a secondary subtitle is selected, it will be rendered as toptitle (i.e. on the top of the screen) alongside the normal subtitle, and provides a way to render two subtitles at once.
There are some caveats associated with this feature. For example, bitmap subtitles will always be rendered in their usual position, so selecting a bitmap subtitle as secondary subtitle will result in overlapping subtitles.  Secondary subtitles are never shown on the terminal if video is disabled.
NOTE: Styling and interpretation of any formatting tags is disabled for the secondary subtitle. Internally, the same mechanism as --no-sub-ass is used to strip the styling.
NOTE: If the main subtitle stream contains formatting tags which display the subtitle at the top of the screen, it will overlap with the secondary subtitle. To prevent this, you could use --no-sub-ass to disable styling in the main subtitle stream.
--sub-scale=<0-100> Factor for the text subtitle font size (default: 1).
NOTE: This affects ASS subtitles as well, and may lead to incorrect subtitle rendering. Use with care, or use --sub-font-size instead.
--sub-scale-by-window=<yes|no> Whether to scale subtitles with the window size (default: yes). If this is disabled, changing the window size won't change the subtitle font size.
Like --sub-scale, this can break ASS subtitles.
--sub-scale-with-window=<yes|no> Make the subtitle font size relative to the window, instead of the video.  This is useful if you always want the same font size, even if the video doesn't cover the window fully, e.g. because screen aspect and window aspect mismatch (and the player adds black bars).
Default: yes.
This option is misnamed. The difference to the confusingly similar sounding option --sub-scale-by-window is that --sub-scale-with-window still scales with the approximate window size, while the other option disables this scaling.
Affects plain text subtitles only (or ASS if --sub-ass-override is set high enough).
--sub-ass-scale-with-window=<yes|no> Like --sub-scale-with-window, but affects subtitles in ASS format only.  Like --sub-scale, this can break ASS subtitles.
Default: no.
--embeddedfonts=<yes|no> Use fonts embedded in Matroska container files and ASS scripts (default: yes). These fonts can be used for SSA/ASS subtitle rendering.
--sub-pos=<0-150> Specify the position of subtitles on the screen. The value is the vertical position of the subtitle in % of the screen height. 100 is the original position, which is often not the absolute bottom of the screen, but with some margin between the bottom and the subtitle. Values above 100 move the subtitle further down.
Text subtitles (as opposed to image subtitles) may be cut off if the value of the option is above 100. This is a libass restriction.
This affects ASS subtitles as well, and may lead to incorrect subtitle rendering in addition to the problem above.
Using --sub-margin-y can achieve this in a better way.
--sub-speed=<0.1-10.0> Multiply the subtitle event timestamps with the given value. Can be used to fix the playback speed for frame-based subtitle formats. Affects text subtitles only.
--sub-speed=25/23.976 plays frame based subtitles which have been loaded assuming a framerate of 23.976 at 25 FPS.
--sub-ass-force-style=<[Style.]Param=Value[,...]> Override some style or script info parameters.
• --sub-ass-force-style=FontName=Arial,Default.Bold=1
• --sub-ass-force-style=PlayResY=768
NOTE: Using this option may lead to incorrect subtitle rendering.
--sub-ass-hinting=<none|light|normal|native> Set font hinting type. <type> can be:
none   no hinting (default)
light  FreeType autohinter, light mode
normal FreeType autohinter, normal mode
native font native hinter
Enabling hinting can lead to mispositioned text (in situations it's supposed to match up video background), or reduce the smoothness of animations with some badly authored ASS scripts. It is recommended to not use this option, unless really needed.
--sub-ass-line-spacing=<value> Set line spacing value for SSA/ASS renderer.
--sub-ass-shaper=<simple|complex> Set the text layout engine used by libass.
simple uses Fribidi only, fast, doesn't render some languages correctly
complex uses HarfBuzz, slower, wider language support
complex is the default. If libass hasn't been compiled against HarfBuzz, libass silently reverts to simple.
--sub-ass-styles=<filename> Load all SSA/ASS styles found in the specified file and use them for rendering text subtitles. The syntax of the file is exactly like the [V4 Styles] / [V4+ Styles] section of SSA/ASS.
--sub-ass-override=<yes|no|force|scale|strip> Control whether user style overrides should be applied. Note that all of these overrides try to be somewhat smart about figuring out whether or not a subtitle is considered a "sign".
no     Render subtitles as specified by the subtitle scripts, without overrides.
yes    Apply all the --sub-ass-* style override options. Changing the default for any of these options can lead to incorrect subtitle rendering (default).
force  Like yes, but also force all --sub-* options. Can break rendering easily.
scale  Like yes, but also apply --sub-scale.
strip  Radically strip all ASS tags and styles from the subtitle. This is equivalent to the old --no-ass / --no-sub-ass options.
This also controls some bitmap subtitle overrides, as well as HTML tags in formats like SRT, despite the name of the option.
--sub-ass-force-margins Enables placing toptitles and subtitles in black borders when they are available, if the subtitles are in the ASS format.
--sub-use-margins Enables placing toptitles and subtitles in black borders when they are available, if the subtitles are in a plain text format  (or ASS if --sub-ass-override is set high enough).
Renamed from --sub-ass-use-margins. To place ASS subtitles in the borders too (like the old option did), also add --sub-ass-force-margins.
--sub-ass-vsfilter-aspect-compat=<yes|no> Stretch SSA/ASS subtitles when playing anamorphic videos for compatibility with traditional VSFilter behavior. This switch has no effect when the video is stored with square pixels.
The renderer historically most commonly used for the SSA/ASS subtitle formats, VSFilter, had questionable behavior that resulted in subtitles being stretched too if the video was stored in anamorphic format that required scaling for display.  This behavior is usually undesirable and newer VSFilter versions may behave differently. However, many existing scripts compensate for the stretching by modifying things in the opposite direction. Thus, if such scripts are displayed "correctly", they will not appear as intended.  This switch enables emulation of the old VSFilter behavior (undesirable but expected by many existing scripts).
--sub-ass-vsfilter-blur-compat=<yes|no> Scale \blur tags by video resolution instead of script resolution (enabled by default). This is bug in VSFilter, which according to some, can't be fixed anymore in the name of compatibility.
Note that this uses the actual video resolution for calculating the offset scale factor, not what the video filter chain or the video output use.
--sub-ass-vsfilter-color-compat=<basic|full|force-601|no> Mangle colors like (xy-)vsfilter do (default: basic). Historically, VSFilter was not color space aware. This was no problem as long as the color space used for SD video (BT.601) was used. But when everything switched to HD (BT.709), VSFilter was still converting RGB colors to BT.601, rendered them into the video frame, and handled the frame to the video output, which would use BT.709 for conversion to RGB. The result were mangled subtitle colors. Later on, bad hacks were added on top of the ASS format to control how colors are to be mangled.
basic  Handle only BT.601->BT.709 mangling, if the subtitles seem to indicate that this is required (default).
full   Handle the full YCbCr Matrix header with all video color spaces supported by libass and mpv. This might lead to bad breakages in corner cases and is not strictly needed for compatibility (hopefully), which is why this is not default.
force-601 Force BT.601->BT.709 mangling, regardless of subtitle headers or video color space.
no     Disable color mangling completely. All colors are RGB.
Choosing anything other than no will make the subtitle color depend on the video color space, and it's for example in theory not possible to reuse a subtitle script with another video file. The --sub-ass-override option doesn't affect how this option is interpreted.
--stretch-dvd-subs=<yes|no> Stretch DVD subtitles when playing anamorphic videos for better looking fonts on badly mastered DVDs. This switch has no effect when the video is stored with square pixels - which for DVD input cannot be the case though.
Many studios tend to use bitmap fonts designed for square pixels when authoring DVDs, causing the fonts to look stretched on playback on DVD players. This option fixes them, however at the price of possibly misaligning some subtitles (e.g. sign translations).
--stretch-image-subs-to-screen=<yes|no> Stretch DVD and other image subtitles to the screen, ignoring the video margins. This has a similar effect as --sub-use-margins for text subtitles, except that the text itself will be stretched, not only just repositioned. (At least in general it is unavoidable, as an image bitmap can in theory consist of a single bitmap covering the whole screen, and the player won't know where exactly the text parts are located.)
This option does not display subtitles correctly. Use with care.
--image-subs-video-resolution=<yes|no> Override the image subtitle resolution with the video resolution (default: no). Normally, the subtitle canvas is fit into the video canvas (e.g. letterboxed). Setting this option uses the video size as subtitle canvas size. Can be useful to test broken subtitles, which often happen when the video was trancoded, while attempting to keep the old subtitles.
--sub-ass, --no-sub-ass Render ASS subtitles natively (enabled by default).
NOTE: This has been deprecated by --sub-ass-override=strip. You also may need --embeddedfonts=no to get the same behavior. Also, using --sub-ass-override=style should give better results without breaking subtitles too much.
If --no-sub-ass is specified, all tags and style declarations are stripped and ignored on display. The subtitle renderer uses the font style as specified by the --sub- options instead.
NOTE: Using --no-sub-ass may lead to incorrect or completely broken rendering of ASS/SSA subtitles. It can sometimes be useful to forcibly override the styling of ASS subtitles, but should be avoided in general.
--sub-auto=<no|exact|fuzzy|all>, --no-sub-auto Load additional subtitle files matching the video filename. The parameter specifies how external subtitle files are matched. exact is enabled by default.
no     Don't automatically load external subtitle files.
exact  Load the media filename with subtitle file extension and possibly language suffixes (default).
fuzzy  Load all subs containing the media filename.
all    Load all subs in the current and --sub-file-paths directories.
--sub-codepage=<codepage> You can use this option to specify the subtitle codepage. uchardet will be used to guess the charset. (If mpv was not compiled with uchardet, then utf-8 is the effective default.)
The default value for this option is auto, which enables autodetection.
The following steps are taken to determine the final codepage, in order:
• if the specific codepage has a +, use that codepage
• if the data looks like UTF-8, assume it is UTF-8
• if --sub-codepage is set to a specific codepage, use that
• run uchardet, and if successful, use that
• otherwise, use UTF-8-BROKEN
• --sub-codepage=latin2 Use Latin 2 if input is not UTF-8.
• --sub-codepage=+cp1250 Always force recoding to cp1250.
The pseudo codepage UTF-8-BROKEN is used internally. If it's set, subtitles are interpreted as UTF-8 with "Latin 1" as fallback for bytes which are not valid UTF-8 sequences. iconv is never involved in this mode.
This option changed in mpv 0.23.0. Support for the old syntax was fully removed in mpv 0.24.0.
NOTE: This works for text subtitle files only. Other types of subtitles (in particular subtitles in mkv files) are always assumed to be UTF-8.
--sub-fix-timing=<yes|no> Adjust subtitle timing is to remove minor gaps or overlaps between subtitles (if the difference is smaller than 210 ms, the gap or overlap is removed).
--sub-forced-only=<auto|yes|no> Display only forced subtitles for the DVD subtitle stream selected by e.g.  --slang (default: auto). When set to auto, enabled when the --subs-with-matching-audio option is on and a non-forced stream is selected.  Enabling this will hide all subtitles in streams that don't make a distinction between forced and unforced events within a stream.
--sub-fps=<rate> Specify the framerate of the subtitle file (default: video fps). Affects text subtitles only.
NOTE: <rate> > video fps speeds the subtitles up for frame-based subtitle files and slows them down for time-based ones.
See also: --sub-speed.
--sub-gauss=<0.0-3.0> Apply Gaussian blur to image subtitles (default: 0). This can help to make pixelated DVD/Vobsubs look nicer. A value other than 0 also switches to software subtitle scaling. Might be slow.
NOTE: Never applied to text subtitles.
--sub-gray Convert image subtitles to grayscale. Can help to make yellow DVD/Vobsubs look nicer.
--sub-paths=<path1:path2:...> Deprecated, use --sub-file-paths.
--sub-file-paths=<path-list> Specify extra directories to search for subtitles matching the video.  Multiple directories can be separated by ":" (";" on Windows).  Paths can be relative or absolute. Relative paths are interpreted relative to video file directory.  If the file is a URL, only absolute paths and sub configuration subdirectory will be scanned.
Assuming that /path/to/video/video.avi is played and --sub-file-paths=sub:subtitles is specified, mpv searches for subtitle files in these directories:
• /path/to/video/
• /path/to/video/sub/
• /path/to/video/subtitles/
• the sub configuration subdirectory (usually ~/.config/mpv/sub/)
--sub-visibility, --no-sub-visibility Can be used to disable display of subtitles, but still select and decode them.
--secondary-sub-visibility, --no-secondary-sub-visibility Can be used to disable display of secondary subtitles, but still select and decode them.
NOTE: If --sub-visibility=no, secondary subtitles are hidden regardless of --secondary-sub-visibility.
--sub-clear-on-seek (Obscure, rarely useful.) Can be used to play broken mkv files with duplicate ReadOrder fields. ReadOrder is the first field in a Matroska-style ASS subtitle packets. It should be unique, and libass uses it for fast elimination of duplicates. This option disables caching of subtitles across seeks, so after a seek libass can't eliminate subtitle packets with the same ReadOrder as earlier packets.
--teletext-page=<1-999> This works for dvb_teletext subtitle streams, and if FFmpeg has been compiled with support for it.
--sub-past-video-end After the last frame of video, if this option is enabled, subtitles will continue to update based on audio timestamps. Otherwise, the subtitles for the last video frame will stay onscreen.
Default: disabled
--sub-font=<name> Specify font to use for subtitles that do not themselves specify a particular font. The default is sans-serif.
• --sub-font='Bitstream Vera Sans'
• --sub-font='Comic Sans MS'
NOTE: The --sub-font option (and many other style related --sub- options) are ignored when ASS-subtitles are rendered, unless the --no-sub-ass option is specified.
This used to support fontconfig patterns. Starting with libass 0.13.0, this stopped working.
--sub-font-size=<size> Specify the sub font size. The unit is the size in scaled pixels at a window height of 720. The actual pixel size is scaled with the window height: if the window height is larger or smaller than 720, the actual size of the text increases or decreases as well.
Default: 55.
--sub-back-color=<color> See --sub-color. Color used for sub text background. You can use --sub-shadow-offset to change its size relative to the text.
--sub-blur=<0..20.0> Gaussian blur factor. 0 means no blur applied (default).
--sub-bold=<yes|no> Format text on bold.
--sub-italic=<yes|no> Format text on italic.
--sub-border-color=<color> See --sub-color. Color used for the sub font border.
NOTE: ignored when --sub-back-color is specified (or more exactly: when that option is not set to completely transparent).
--sub-border-size=<size> Size of the sub font border in scaled pixels (see --sub-font-size for details). A value of 0 disables borders.
Default: 3.
--sub-color=<color> Specify the color used for unstyled text subtitles.
The color is specified in the form r/g/b, where each color component is specified as number in the range 0.0 to 1.0. It's also possible to specify the transparency by using r/g/b/a, where the alpha value 0 means fully transparent, and 1.0 means opaque. If the alpha component is not given, the color is 100% opaque.
Passing a single number to the option sets the sub to gray, and the form gray/a lets you specify alpha additionally.
• --sub-color=1.0/0.0/0.0 set sub to opaque red
• --sub-color=1.0/0.0/0.0/0.75 set sub to opaque red with 75% alpha
• --sub-color=0.5/0.75 set sub to 50% gray with 75% alpha
Alternatively, the color can be specified as a RGB hex triplet in the form #RRGGBB, where each 2-digit group expresses a color value in the range 0 (00) to 255 (FF). For example, #FF0000 is red. This is similar to web colors. Alpha is given with #AARRGGBB.
• --sub-color='#FF0000' set sub to opaque red
• --sub-color='#C0808080' set sub to 50% gray with 75% alpha
--sub-margin-x=<size> Left and right screen margin for the subs in scaled pixels (see --sub-font-size for details).
This option specifies the distance of the sub to the left, as well as at which distance from the right border long sub text will be broken.
Default: 25.
--sub-margin-y=<size> Top and bottom screen margin for the subs in scaled pixels (see --sub-font-size for details).
This option specifies the vertical margins of unstyled text subtitles.  If you just want to raise the vertical subtitle position, use --sub-pos.
Default: 22.
--sub-align-x=<left|center|right> Control to which corner of the screen text subtitles should be aligned to (default: center).
Never applied to ASS subtitles, except in --no-sub-ass mode. Likewise, this does not apply to image subtitles.
--sub-align-y=<top|center|bottom> Vertical position (default: bottom).  Details see --sub-align-x.
--sub-justify=<auto|left|center|right> Control how multi line subs are justified irrespective of where they are aligned (default: auto which justifies as defined by --sub-align-y).  Left justification is recommended to make the subs easier to read as it is easier for the eyes.
--sub-ass-justify=<yes|no> Applies justification as defined by --sub-justify on ASS subtitles if --sub-ass-override is not set to no.  Default: no.
--sub-shadow-color=<color> See --sub-color. Color used for sub text shadow.
--sub-shadow-offset=<size> Displacement of the sub text shadow in scaled pixels (see --sub-font-size for details). A value of 0 disables shadows.
Default: 0.
--sub-spacing=<size> Horizontal sub font spacing in scaled pixels (see --sub-font-size for details). This value is added to the normal letter spacing. Negative values are allowed.
--sub-filter-sdh=<yes|no> Applies filter removing subtitle additions for the deaf or hard-of-hearing (SDH).  This is intended for English, but may in part work for other languages too.  The intention is that it can be always enabled so may not remove all parts added.  It removes speaker labels (like MAN:), upper case text in parentheses and any text in brackets.
--sub-filter-sdh-harder=<yes|no> Do harder SDH filtering (if enabled by --sub-filter-sdh).  Will also remove speaker labels and text within parentheses using both lower and upper case letters.
--sub-filter-regex-...=... Set a list of regular expressions to match on text subtitles, and remove any lines that match (default: empty). This is a string list option. See List Options for details. Normally, you should use --sub-filter-regex-append=<regex>, where each option use will append a new regular expression, without having to fight escaping problems.
List items are matched in order. If a regular expression matches, the process is stopped, and the subtitle line is discarded. The text matched against is, by default, the Text field of ASS events (if the subtitle format is different, it is always converted). This may include formatting tags. Matching is case-insensitive, but how this is done depends on the libc, and most likely works in ASCII only. It does not work on bitmap/image subtitles. Unavailable on inferior OSes (requires POSIX regex support).
--sub-filter-regex-append=opensubtitles\.org filters some ads.
Technically, using a list for matching is redundant, since you could just use a single combined regular expression. But it helps with diagnosis, ease of use, and temporarily disabling or enabling individual filters.
WARNING: This is experimental. The semantics most likely will change, and if you use this, you should be prepared to update the option later. Ideas include replacing the regexes with a very primitive and small subset of sed, or some method to control case-sensitivity.
--sub-filter-jsre-...=... Same as --sub-filter-regex but with JavaScript regular expressions.  Shares/affected-by all --sub-filter-regex-* control options (see below), and also experimental. Requires only JavaScript support.
--sub-filter-regex-plain=<yes|no> Whether to first convert the ASS "Text" field to plain-text (default: no).  This strips ASS tags and applies ASS directives, like \N to new-line.  If the result is multi-line then the regexp anchors ^ and $ match each line, but still any match discards all lines.
--sub-filter-regex-warn=<yes|no> Log dropped lines with warning log level, instead of verbose (default: no).  Helpful for testing.
--sub-filter-regex-enable=<yes|no> Whether to enable regex filtering (default: yes). Note that if no regexes are added to the --sub-filter-regex list, setting this option to yes has no effect. It's meant to easily disable or enable filtering temporarily.
--sub-create-cc-track=<yes|no> For every video stream, create a closed captions track (default: no). The only purpose is to make the track available for selection at the start of playback, instead of creating it lazily. This applies only to ATSC A53 Part 4 Closed Captions (displayed by mpv as subtitle tracks using the codec eia_608). The CC track is marked "default" and selected according to the normal subtitle track selection rules. You can then use --sid to explicitly select the correct track too.
If the video stream contains no closed captions, or if no video is being decoded, the CC track will remain empty and will not show any text.
--sub-font-provider=<auto|none|fontconfig> Which libass font provider backend to use (default: auto). auto will attempt to use the native font provider: fontconfig on Linux, CoreText on macOS, DirectWrite on Windows. fontconfig forces fontconfig, if libass was built with support (if not, it behaves like none).
The none font provider effectively disables system fonts. It will still attempt to use embedded fonts (unless --embeddedfonts=no is set; this is the same behavior as with all other font providers), subfont.ttf if provided, and fonts in  the fonts sub-directory if provided. (The fallback is more strict than that of other font providers, and if a font name does not match, it may prefer not to render any text that uses the missing font.)
Window --title=<string> Set the window title. This is used for the video window, and if possible, also sets the audio stream title.
Properties are expanded. (See Property Expansion.)
WARNING: There is a danger of this causing significant CPU usage, depending on the properties used. Changing the window title is often a slow operation, and if the title changes every frame, playback can be ruined.
--screen=<default|0-32> In multi-monitor configurations (i.e. a single desktop that spans across multiple displays), this option tells mpv which screen to display the video on.
Note (X11)
This option does not work properly with all window managers. In these cases, you can try to use --geometry to position the window explicitly. It's also possible that the window manager provides native features to control which screens application windows should use.
See also --fs-screen.
--screen-name=<string> In multi-monitor configurations, this option tells mpv which screen to display the video on based on the screen name from the video backend. The same caveats in the --screen option also apply here. This option is ignored and does nothing if --screen is explicitly set.
--fullscreen, --fs Fullscreen playback.
--fs-screen=<all|current|0-32> In multi-monitor configurations (i.e. a single desktop that spans across multiple displays), this option tells mpv which screen to go fullscreen to.  If current is used mpv will fallback on what the user provided with the screen option.
This option works properly only with window managers which understand the EWMH _NET_WM_FULLSCREEN_MONITORS hint.
Note (macOS)
all does not work on macOS and will behave like current.
See also --screen.
--fs-screen-name=<string> In multi-monitor configurations, this option tells mpv which screen to go fullscreen to based on the screen name from the video backend. The same caveats in the --fs-screen option also apply here. This option is ignored and does nothing if --fs-screen is explicitly set.
--keep-open=<yes|no|always> Do not terminate when playing or seeking beyond the end of the file, and there is not next file to be played (and --loop is not used).  Instead, pause the player. When trying to seek beyond end of the file, the player will attempt to seek to the last frame.
Normally, this will act like set pause yes on EOF, unless the --keep-open-pause=no option is set.
The following arguments can be given:
no     If the current file ends, go to the next file or terminate. (Default.)
yes    Don't terminate if the current file is the last playlist entry.  Equivalent to --keep-open without arguments.
always Like yes, but also applies to files before the last playlist entry. This means playback will never automatically advance to the next file.
NOTE: This option is not respected when using --frames. Explicitly skipping to the next file if the binding uses force will terminate playback as well.
Also, if errors or unusual circumstances happen, the player can quit anyway.
Since mpv 0.6.0, this doesn't pause if there is a next file in the playlist, or the playlist is looped. Approximately, this will pause when the player would normally exit, but in practice there are corner cases in which this is not the case (e.g. mpv --keep-open file.mkv /dev/null will play file.mkv normally, then fail to open /dev/null, then exit). (In mpv 0.8.0, always was introduced, which restores the old behavior.)
--keep-open-pause=<yes|no> If set to no, instead of pausing when --keep-open is active, just stop at end of file and continue playing forward when you seek backwards until end where it stops again. Default: yes.
--image-display-duration=<seconds|inf> If the current file is an image, play the image for the given amount of seconds (default: 1). inf means the file is kept open forever (until the user stops playback manually).
Unlike --keep-open, the player is not paused, but simply continues playback until the time has elapsed. (It should not use any resources during "playback".)
This affects image files, which are defined as having only 1 video frame and no audio. The player may recognize certain non-images as images, for example if --length is used to reduce the length to 1 frame, or if you seek to the last frame.
This option does not affect the framerate used for mf:// or --merge-files. For that, use --mf-fps instead.
Setting --image-display-duration hides the OSC and does not track playback time on the command-line output, and also does not duplicate the image frame when encoding. To force the player into "dumb mode" and actually count out seconds, or to duplicate the image when encoding, you need to use --demuxer=lavf --demuxer-lavf-o=loop=1, and use --length or --frames to stop after a particular time.
--force-window=<yes|no|immediate> Create a video output window even if there is no video. This can be useful when pretending that mpv is a GUI application. Currently, the window always has the size 640x480, and is subject to --geometry, --autofit, and similar options.
WARNING: The window is created only after initialization (to make sure default window placement still works if the video size is different from the --force-window default window size). This can be a problem if initialization doesn't work perfectly, such as when opening URLs with bad network connection, or opening broken video files. The immediate mode can be used to create the window always on program start, but this may cause other issues.
--taskbar-progress, --no-taskbar-progress (Windows only) Enable/disable playback progress rendering in taskbar (Windows 7 and above).
--snap-window (Windows only) Snap the player window to screen edges.
--ontop Makes the player window stay on top of other windows.
On Windows, if combined with fullscreen mode, this causes mpv to be treated as exclusive fullscreen window that bypasses the Desktop Window Manager.
--ontop-level=<window|system|desktop|level> (macOS only) Sets the level of an ontop window (default: window).
window On top of all other windows.
system On top of system elements like Taskbar, Menubar and Dock.
desktop On top of the Dekstop behind windows and Desktop icons.
level  A level as integer.
--focus-on-open, --no-focus-on-open (macOS only) Focus the video window on creation and makes it the front most window. This is on by default.
--border, --no-border Play video with window border and decorations. Since this is on by default, use --no-border to disable the standard window decorations.
--on-all-workspaces (X11 and macOS only) Show the video window on all virtual desktops.
--geometry=<[W[xH]][+-x+-y][/WS]>, --geometry=<x:y> Adjust the initial window position or size. W and H set the window size in pixels. x and y set the window position, measured in pixels from the top-left corner of the screen to the top-left corner of the image being displayed. If a percentage sign (%) is given after the argument, it turns the value into a percentage of the screen size in that direction.  Positions are specified similar to the standard X11 --geometry option format, in which e.g. +10-50 means "place 10 pixels from the left border and 50 pixels from the lower border" and "--20+-10" means "place 20 pixels beyond the right and 10 pixels beyond the top border". A trailing / followed by an integer denotes on which workspace (virtual desktop) the window should appear (X11 only).
If an external window is specified using the --wid option, this option is ignored.
The coordinates are relative to the screen given with --screen for the video output drivers that fully support --screen.
NOTE: Generally only supported by GUI VOs. Ignored for encoding.
This option does not work properly with all window managers.
50:40  Places the window at x=50, y=40.
50%:50% Places the window in the middle of the screen.
100%:100% Places the window at the bottom right corner of the screen.
50%    Sets the window width to half the screen width. Window height is set so that the window has the video aspect ratio.
50%x50% Forces the window width and height to half the screen width and height. Will show black borders to compensate for the video aspect ratio (with most VOs and without --no-keepaspect).
50%+10+10/2 Sets the window to half the screen widths, and positions it 10 pixels below/left of the top left corner of the screen, on the second workspace.
See also --autofit and --autofit-larger for fitting the window into a given size without changing aspect ratio.
--autofit=<[W[xH]]> Set the initial window size to a maximum size specified by WxH, without changing the window's aspect ratio. The size is measured in pixels, or if a number is followed by a percentage sign (%), in percents of the screen size.
This option never changes the aspect ratio of the window. If the aspect ratio mismatches, the window's size is reduced until it fits into the specified size.
Window position is not taken into account, nor is it modified by this option (the window manager still may place the window differently depending on size). Use --geometry to change the window position. Its effects are applied after this option.
See --geometry for details how this is handled with multi-monitor setups.
Use --autofit-larger instead if you just want to limit the maximum size of the window, rather than always forcing a window size.
Use --geometry if you want to force both window width and height to a specific size.
70%    Make the window width 70% of the screen size, keeping aspect ratio.
1000   Set the window width to 1000 pixels, keeping aspect ratio.
70%x60% Make the window as large as possible, without being wider than 70% of the screen width, or higher than 60% of the screen height.
--autofit-larger=<[W[xH]]> This option behaves exactly like --autofit, except the window size is only changed if the window would be larger than the specified size.
90%x80% If the video is larger than 90% of the screen width or 80% of the screen height, make the window smaller until either its width is 90% of the screen, or its height is 80% of the screen.
--autofit-smaller=<[W[xH]]> This option behaves exactly like --autofit, except that it sets the minimum size of the window (just as --autofit-larger sets the maximum).
500x500 Make the window at least 500 pixels wide and 500 pixels high (depending on the video aspect ratio, the width or height will be larger than 500 in order to keep the aspect ratio the same).
--window-scale=<factor> Resize the video window to a multiple (or fraction) of the video size. This option is applied before --autofit and other options are applied (so they override this option).
For example, --window-scale=0.5 would show the window at half the video size.
--window-minimized=<yes|no> Whether the video window is minimized or not. Setting this will minimize, or unminimize, the video window if the current VO supports it. Note that some VOs may support minimization while not supporting unminimization (eg: Wayland).
Whether this option and --window-maximized work on program start or at runtime, and whether they're (at runtime) updated to reflect the actual window state, heavily depends on the VO and the windowing system. Some VOs simply do not implement them or parts of them, while other VOs may be restricted by the windowing systems (especially Wayland).
--window-maximized=<yes|no> Whether the video window is maximized or not. Setting this will maximize, or unmaximize, the video window if the current VO supports it. See --window-minimized for further remarks.
--cursor-autohide=<number|no|always> Make mouse cursor automatically hide after given number of milliseconds.  no will disable cursor autohide. always means the cursor will stay hidden.
--cursor-autohide-fs-only If this option is given, the cursor is always visible in windowed mode. In fullscreen mode, the cursor is shown or hidden according to --cursor-autohide.
--no-fixed-vo, --fixed-vo --no-fixed-vo enforces closing and reopening the video window for multiple files (one (un)initialization for each file).
--force-rgba-osd-rendering Change how some video outputs render the OSD and text subtitles. This does not change appearance of the subtitles and only has performance implications. For VOs which support native ASS rendering (like gpu, vdpau, direct3d), this can be slightly faster or slower, depending on GPU drivers and hardware. For other VOs, this just makes rendering slower.
--force-window-position Forcefully move mpv's video output window to default location whenever there is a change in video parameters, video stream or file. This used to be the default behavior. Currently only affects X11 VOs.
--no-keepaspect, --keepaspect --no-keepaspect will always stretch the video to window size, and will disable the window manager hints that force the window aspect ratio.  (Ignored in fullscreen mode.)
--no-keepaspect-window, --keepaspect-window --keepaspect-window (the default) will lock the window size to the video aspect. --no-keepaspect-window disables this behavior, and will instead add black bars if window aspect and video aspect mismatch. Whether this actually works depends on the VO backend. (Ignored in fullscreen mode.)
--monitoraspect=<ratio> Set the aspect ratio of your monitor or TV screen. A value of 0 disables a previous setting (e.g. in the config file). Overrides the --monitorpixelaspect setting if enabled.
See also --monitorpixelaspect and --video-aspect-override.
• --monitoraspect=4:3  or --monitoraspect=1.3333
• --monitoraspect=16:9 or --monitoraspect=1.7777
--hidpi-window-scale, --no-hidpi-window-scale (macOS, Windows, X11, and Wayland only) Scale the window size according to the backing scale factor (default: yes).  On regular HiDPI resolutions the window opens with double the size but appears as having the same size as on non-HiDPI resolutions. This is enabled by default on macOS.
--native-fs, --no-native-fs (macOS only) Uses the native fullscreen mechanism of the OS (default: yes).
--monitorpixelaspect=<ratio> Set the aspect of a single pixel of your monitor or TV screen (default: 1). A value of 1 means square pixels (correct for (almost?) all LCDs). See also --monitoraspect and --video-aspect-override.
--stop-screensaver, --no-stop-screensaver Turns off the screensaver (or screen blanker and similar mechanisms) at startup and turns it on again on exit (default: yes). The screensaver is always re-enabled when the player is paused.
This is not supported on all video outputs or platforms. Sometimes it is implemented, but does not work (especially with Linux "desktops"). Read the Disabling Screensaver section very carefully.
--wid=<ID> This tells mpv to attach to an existing window. If a VO is selected that supports this option, it will use that window for video output. mpv will scale the video to the size of this window, and will add black bars to compensate if the aspect ratio of the video is different.