MPlayer(1)
๐ MPlayer(1) โ The Movie Player ๐
okay bestie, welcome to the MPlayer manual page, you're gonna be so good at this by the end, i promise ๐ซถ
โจ NAME โจ
mplayerโ movie player ๐ฌmencoderโ movie encoder ๐๏ธ
โจ SYNOPSIS โจ
mplayer [options] [file|URL|playlist|-]
mplayer [options] file1 [specific options] [file2] [specific options]
mplayer [options] {group of files and options} [group-specific options]
mplayer [br]://[title][/device] [options]
mplayer [dvd|dvdnav]://[title|[start_title]-end_title][/device] [options]
mplayer vcd://track[/device]
mplayer tv://[channel][/input_id] [options]
mplayer radio://[channel|frequency][/capture] [options]
mplayer pvr:// [options]
mplayer dvb://[card_number@]channel [options]
mplayer mf://[filemask|@listfile] [-mf options] [options]
mplayer [cdda|cddb]://track[-endtrack][:speed][/device] [options]
mplayer cue://file[:track] [options]
mplayer [file|mms[t]|http|http_proxy|rt[s]p|ftp|udp|unsv|icyx|noicyx|smb]://[user:pass@]URL[:port] [options]
mplayer sdp://file [options]
mplayer mpst://host[:port]/URL [options]
mplayer tivo://host/[list|llist|fsid] [options]
gmplayer [options] [file|URL|playlist] [-skin skin]
mencoder [options] file [file|URL|-] [-o file | file://file | smb://[user:pass@]host/filepath]
mencoder [options] file1 [specific options] [file2] [specific options]
๐ธ DESCRIPTION ๐ธ
mplayer is literally a movie player for Linux bestie!! (and it runs on so many other platforms and CPU architectures too, go check the documentation ๐). It plays most MPEG/VOB, AVI, ASF/WMA/WMV, RM, QT/MOV/MP4, Ogg/OGM, MKV, VIVO, FLI, NuppelVideo, yuv4mpeg, FILM and RoQ files, all supported by tons of native and binary codecs. You can also watch VCD, SVCD, DVD, Blu-ray, 3ivx, DivX 3/4/5, WMV and even H.264 movies. no cap, it does all that ๐
MPlayer supports a whole wide range of video and audio output drivers. It works with X11, Xv, DGA, OpenGL, SVGAlib, fbdev, AAlib, libcaca, DirectFB, Quartz, Mac OS X CoreVideo โ but you can also use GGI, SDL (and all their drivers), VESA (on every VESA-compatible card, even without X11!!), some low-level card-specific drivers (for Matrox, 3dfx and ATI) and some hardware MPEG decoder boards, such as the Siemens DVB, Haupauge PVR (IVTV), DXR2 and DXR3/Hollywood+. Most of them support software or hardware scaling, so you can enjoy your movies in fullscreen mode ๐ฟโจ
MPlayer has an onscreen display (OSD) for status information, nice big antialiased shaded subtitles and visual feedback for keyboard controls. European/ISO8859-1,2 (Hungarian, English, Czech, etc), Cyrillic and Korean fonts are supported along with 12 subtitle formats (MicroDVD, SubRip, OGM, SubViewer, Sami, VPlayer, RT, SSA, AQTitle, JACOsub, PJS and our own: MPsub) and DVD subtitles (SPU streams, VOBsub and Closed Captions). the subtitle game is strong ๐ญ๐
mencoder (MPlayer's Movie Encoder) is a simple movie encoder, designed to encode MPlayer-playable movies (see above ๐) to other MPlayer-playable formats (see below ๐). It encodes to MPEG-4 (DivX/Xvid), one of the libavcodec codecs and PCM/MP3/VBRMP3 audio in 1, 2 or 3 passes. Furthermore it has stream copying abilities, a powerful filter system (crop, expand, flip, postprocess, rotate, scale, noise, RGB/YUV conversion) and more. so many filters bestie, it's giving swiss army knife ๐ฅ
gmplayer is MPlayer with a graphical user interface. Besides some own options (stored in gui.conf), it has the same options as MPlayer, however some MPlayer options will be stored in gui.conf so that they can be chosen independently from MPlayer. (See GUI CONFIGURATION FILE below.)
Usage examples to get you started quickly can be found at the end of this man page ๐
Also see the HTML documentation!
๐ INTERACTIVE CONTROL ๐
MPlayer has a fully configurable, command-driven control layer which allows you to control MPlayer using keyboard, mouse, joystick or remote control (with LIRC). See the -input option for ways to customize it. main character energy fr fr ๐
keyboard control โจ๏ธ
- LEFT and RIGHT โ Seek backward/forward 10 seconds.
- UP and DOWN โ Seek forward/backward 1 minute.
- PGUP and PGDWN โ Seek forward/backward 10 minutes.
- [ and ] โ Decrease/increase current playback speed by 10%.
- { and } โ Halve/double current playback speed.
- BACKSPACE โ Reset playback speed to normal.
- < and > โ Go backward/forward in the playlist.
- ENTER โ Go forward in the playlist, even over the end.
- HOME and END โ next/previous playtree entry in the parent list
- INS and DEL (ASX playlist only) โ next/previous alternative source.
- p / SPACE โ Pause (pressing again unpauses).
- . โ Step forward. Pressing once will pause movie, every consecutive press will play one frame and then go into pause mode again (any other key unpauses).
- q / ESC โ Stop playing and quit.
- U โ Stop playing (and quit if
-idleis not used). - + and - โ Adjust audio delay by +/- 0.1 seconds.
- / and * โ Decrease/increase volume.
- 9 and 0 โ Decrease/increase volume.
- ( and ) โ Adjust audio balance in favor of left/right channel.
- m โ Mute sound.
- _ (MPEG-TS, AVI and libavformat only) โ Cycle through the available video tracks.
- # (DVD, Blu-ray, MPEG, Matroska, AVI and libavformat only) โ Cycle through the available audio tracks.
- TAB (MPEG-TS and libavformat only) โ Cycle through the available programs.
- f โ Toggle fullscreen (also see
-fs). - T โ Toggle stay-on-top (also see
-ontop). - w and e โ Decrease/increase pan-and-scan range.
- o โ Toggle OSD states: none / seek / seek + timer / seek + timer + total time.
- d โ Toggle frame dropping states: none / skip display / skip decoding (see
-framedropand-hardframedrop). - v โ Toggle subtitle visibility.
- j and J โ Cycle through the available subtitles.
- y and g โ Step forward/backward in the subtitle list.
- F โ Toggle displaying "forced subtitles".
- a โ Toggle subtitle alignment: top / middle / bottom.
- x and z โ Adjust subtitle delay by +/- 0.1 seconds.
- c (
-captureonly) โ Start/stop capturing the primary stream. - r and t โ Move subtitles up/down.
- i (
-edloutmode only) โ Set start or end of an EDL skip and write it out to the given file. - s (
-vf screenshotonly) โ Take a screenshot. - S (
-vf screenshotonly) โ Start/stop taking screenshots. - I โ Show filename on the OSD.
- P โ Show progression bar, elapsed time and total duration on the OSD.
- ! and @ โ Seek to the beginning of the previous/next chapter.
- D (
-vo vdpau,-vf yadif,-vf kerndeintonly) โ Activate/deactivate deinterlacer. - A โ Cycle through the available DVD angles.
(The following keys are valid only when using a hardware accelerated video output (xv, (x)vidix, (x)mga, etc), the software equalizer (-vf eq or -vf eq2) or hue filter (-vf hue).) ๐
- 1 and 2 โ Adjust contrast.
- 3 and 4 โ Adjust brightness.
- 5 and 6 โ Adjust hue.
- 7 and 8 โ Adjust saturation.
(The following keys are valid only when using the quartz or corevideo video output driver.) ๐
- command+0 โ Resize movie window to half its original size.
- command+1 โ Resize movie window to its original size.
- command+2 โ Resize movie window to double its original size.
- command+f โ Toggle fullscreen (also see
-fs). - command+[ and command+] โ Set movie window alpha.
(The following keys are valid only when using the sdl video output driver.) ๐ฎ
- c โ Cycle through available fullscreen modes.
- n โ Restore original mode.
(The following keys are valid if you have a keyboard with multimedia keys.) ๐ต
- PAUSE โ Pause.
- STOP โ Stop playing and quit.
- PREVIOUS and NEXT โ Seek backward/forward 1 minute.
(The following keys are only valid if you compiled with TV or DVB input support and will take precedence over the keys defined above.) ๐บ โ yeah, these ones win, sorry bestie
- h and k โ Select previous/next channel.
- n โ Change norm.
- u โ Change channel list.
(The following keys are only valid if you compiled with dvdnav support: They are used to navigate the menus.) ๐ฟ
- keypad 8 โ Select button up.
- keypad 2 โ Select button down.
- keypad 4 โ Select button left.
- keypad 6 โ Select button right.
- keypad 5 โ Return to main menu.
- keypad 7 โ Return to nearest menu (the order of preference is: chapter->title->root).
- keypad ENTER โ Confirm choice.
(The following keys are used for controlling TV teletext. The data may come from either an analog TV source or an MPEG transport stream.) ๐ผ
- X โ Switch teletext on/off.
- Q and W โ Go to next/prev teletext page.
mouse control ๐ฑ๏ธ
- button 3 and button 4 โ Seek backward/forward 1 minute.
- button 5 and button 6 โ Decrease/increase volume.
joystick control ๐น๏ธ
- left and right โ Seek backward/forward 10 seconds.
- up and down โ Seek forward/backward 1 minute.
- button 1 โ Pause.
- button 2 โ Toggle OSD states: none / seek / seek + timer / seek + timer + total time.
- button 3 and button 4 โ Decrease/increase volume.
๐ธ USAGE ๐ธ
okay so every flag option has a noflag counterpart, no cap โ like the opposite of -fs is -nofs. If an option is marked as (XXX only), it only works in combination with the XXX option or if XXX is compiled in. periodt.
NOTE: the suboption parser (used for example for -ao pcm suboptions) supports a special kind of string-escaping intended for use with external GUIs. It has the following format:
%n%string_of_length_n
EXAMPLES:
mplayer -ao pcm:file=%10%C:test.wav test.avi
Or in a script:
mplayer -ao pcm:file=%`expr length "$NAME"`%"$NAME" test.avi
๐ CONFIGURATION FILES ๐
You can put all of the options in configuration files which will be read every time MPlayer/MEncoder is run. The system-wide configuration file mplayer.conf is in your configuration directory (e.g. /etc/mplayer or /usr/local/etc/mplayer), the user specific one is ~/.mplayer/config. The configuration file for MEncoder is mencoder.conf in your configuration directory (e.g. /etc/mplayer or /usr/local/etc/mplayer), the user specific one is ~/.mplayer/mencoder.conf. User specific options override system-wide options (in case of gmplayer, gui.conf options override user specific options) and options given on the command line override all. The syntax of the configuration files is option=<value>, everything after a # is considered a comment. Options that work without values can be enabled by setting them to yes or 1 or true and disabled by setting them to no or 0 or false. Even suboptions can be specified in this way. slay.
You can also write file-specific configuration files. If you wish to have a configuration file for a file called movie.avi, create a file named movie.avi.conf with the file-specific options in it and put it in ~/.mplayer/. You can also put the configuration file in the same directory as the file to be played, as long as you give the -use-filedir-conf option (either on the command line or in your global config file). If a file-specific configuration file is found in the same directory, no file-specific configuration is loaded from ~/.mplayer. In addition, the -use-filedir-conf option enables directory-specific configuration files. For this, MPlayer first tries to load a mplayer.conf from the same directory as the file played and then tries to load any file-specific configuration. iykyk ๐
๐ EXAMPLE MPLAYER CONFIGURATION FILE ๐
# Use Matrox driver by default.
vo=xmga
# I love practicing handstands while watching videos.
flip=yes
# Decode/encode multiple files from PNG,
# start with mf://filemask
mf=type=png:fps=25
# Eerie negative images are cool.
vf=eq2=1.0:-0.8
# OSD progress bar vertical alignment
progbar-align=50
๐ EXAMPLE MENCODER CONFIGURATION FILE ๐
# Make MEncoder output to a default filename.
o=encoded.avi
# The next 4 lines allow mencoder tv:// to start capturing immediately.
oac=pcm=yes
ovc=lavc=yes
lavcopts=vcodec=mjpeg
tv=driver=v4l2:input=1:width=768:height=576:device=/dev/video0:audiorate=48000
# more complex default encoding option set
lavcopts=vcodec=mpeg4:autoaspect=1
lameopts=aq=2:vbr=4
ovc=lavc=1
oac=lavc=1
passlogfile=pass1stats.log
noautoexpand=1
subfont-autoscale=3
subfont-osd-scale=6
subfont-text-scale=4
subalign=2
subpos=96
spuaa=20
๐ฅ๏ธ GUI CONFIGURATION FILE ๐ฅ๏ธ
GUI's own options are (MPlayer option names in parentheses):
ao_alsa_device(alsa:device=) (ALSA only)ao_alsa_mixer(mixer) (ALSA only)ao_alsa_mixer_channel(mixer-channel) (ALSA only)ao_esd_device(esd:) (ESD only)ao_extra_stereo(af extrastereo) (default: 1.0)ao_extra_stereo_coefficient(af extrastereo=)ao_oss_device(oss:) (OSS only)ao_oss_mixer(mixer) (OSS only)ao_oss_mixer_channel(mixer-channel) (OSS only)ao_sdl_subdriver(sdl:) (SDL only)ao_surround(unused)ao_volnorm(af volnorm)autosync(enable/disable)autosync_size(autosync)cache(enable/disable)cache_size(cache)enable_audio_equ(af equalizer)equ_band_00 ... equ_band_59(af equalizer=)equ_channel_1 ... equ_channel_6(af channels=)gui_main_pos_xgui_main_pos_ygui_save_pos(yes/no)gui_tv_digital(yes/no)gui_video_out_pos_xgui_video_out_pos_yplaybar(enable/disable)replay_gain(enable/disable)replay_gain_adjustment(-30..10)show_videowin(yes/no)vf_lavc(vf lavc) (DXR3 only)vf_pp(vf pp)vo_dxr3_device(unused) (DXR3 only)
MPlayer options stored in gui.conf (GUI option names, MPlayer option names in parentheses) are:
a_afm(afm)ao_driver(ao)ass_bottom_margin(ass-bottom-margin) (ASS only)ass_enabled(ass) (ASS only)ass_top_margin(ass-top-margin) (ASS only)ass_use_margins(ass-use-margins) (ASS only)cdrom_device(cdrom-device)dvd_device(dvd-device)font_autoscale(subfont-autoscale) (FreeType only)font_blur(subfont-blur) (FreeType only)font_encoding(subfont-encoding)font_factor(ffactor)font_name(font)font_osd_scale(subfont-osd-scale) (FreeType only)font_outline(subfont-outline) (FreeType only)font_text_scale(subfont-text-scale) (FreeType only)gui_skin(skin)idle(idle)load_fullscreen(fs)osd_level(osdlevel)playlist_support(allow-dangerous-playlist-parsing)softvol(softvol)stopxscreen-saver(stop-xscreensaver)sub_auto_load(autosub)sub_cp(subcp) (iconv only)sub_overlap(overlapsub)sub_pos(subpos)sub_unicode(unicode)sub_utf8(utf8)v_flip(flip)v_framedrop(framedrop)v_idx(idx)v_ni(ni)v_vfm(vfm)vf_autoq(autoq)vo_direct_render(panscan)vo_doublebuffering(dr)vo_driver(vo)vo_panscan(double)
โจ PROFILES โจ
To ease working with different configurations profiles can be defined in the configuration files. A profile starts with its name between square brackets, e.g. [my-profile]. All following options will be part of the profile. A description (shown by -profile help) can be defined with the profile-desc option. To end the profile, start another one or use the profile name default to continue with normal options. cute.
๐ EXAMPLE MPLAYER PROFILE ๐
[protocol.dvd]
profile-desc="profile for dvd:// streams"
vf=pp=hb/vb/dr/al/fd
alang=en
[protocol.dvdnav]
profile-desc="profile for dvdnav:// streams"
profile=protocol.dvd
mouse-movements=yes
nocache=yes
[extension.flv]
profile-desc="profile for .flv files"
flip=yes
[vo.pnm]
outdir=/tmp
[ao.alsa]
device=spdif
๐ EXAMPLE MENCODER PROFILE ๐
[mpeg4]
profile-desc="MPEG4 encoding"
ovc=lacv=yes
lavcopts=vcodec=mpeg4:vbitrate=1200
[mpeg4-hq]
profile-desc="HQ MPEG4 encoding"
profile=mpeg4
lavcopts=mbd=2:trell=yes:v4mv=yes
๐ GENERAL OPTIONS ๐
-codecpath <dir>โ Specify a directory for binary codecs. that's it, that's the whole vibe.-codecs-file <filename>(also see-afm,-ac,-vfm,-vc) โ Override the standard search path and use the specified file instead of the builtincodecs.conf. no cap.-include <configuration file>(also see-gui-include) โ Specify configuration file to be parsed after the default ones.-list-optionsโ Prints all available options.-msgcharset <charset>โ Convert console messages to the specified character set (default: autodetect). Text will be in the encoding specified with the--charsetconfigure option. Set this tonoconvto disable conversion (for e.g. iconv problems).
NOTE: The option takes effect after command line parsing has finished. The MPLAYER_CHARSET environment variable can help you get rid of the first lines of garbled output.
-msgcolorโ Enable colorful console output on terminals that support ANSI color. literally iconic.-msglevel <all=<level>:<module>=<level>:...>โ Control verbosity directly for each module. Theallmodule changes the verbosity of all the modules not explicitly specified on the command line. See-msglevel helpfor a list of all modules.
NOTE: Some messages are printed before the command line is parsed and are therefore not affected by-msglevel. To control these messages you have to use theMPLAYER_VERBOSEenvironment variable, see its description below for details.
Available levels:
-1โ complete silence0โ fatal messages only1โ error messages2โ warning messages3โ short hints4โ informational messages5โ status messages (default)6โ verbose messages7โ debug level 28โ debug level 39โ debug level 4
-msgmoduleโ Prepend module name in front of each console message.-noconfig <options>โ Do not parse selected configuration files.
NOTE: If-includeor-use-filedir-confoptions are specified at the command line, they will be honoured.
Available options are:
allโ all configuration filesgui (GUI only)โ GUI configuration filesystemโ system configuration fileuserโ user configuration file
-quietโ Make console output less verbose; in particular, prevents the status line (i.e.A: 0.7 V: 0.6 A-V: 0.068 ...) from being displayed. Particularly useful on slow terminals or broken ones which do not properly handle carriage return (i.e.\r).-priority <prio>โ (Windows and OS/2 only) Set process priority for MPlayer according to the predefined priorities available under Windows and OS/2. Possible values of<prio>:idle|belownormal|normal|abovenormal|high|realtime
WARNING: Using realtime priority can cause system lockup.
-profile <profile1,profile2,...>โ Use the given profile(s),-profile helpdisplays a list of the defined profiles.-really-quiet(also see-quiet) โ Display even less output and status messages than with-quiet. Also suppresses the GUI error message boxes.-show-profile <profile>โ Show the description and content of a profile.-use-filedir-confโ Look for a file-specific configuration file in the same directory as the file that is being played.
WARNING: May be dangerous if playing from untrusted media.
-vโ Increment verbosity level, one level for each-vfound on the command line.
โจ PLAYER OPTIONS (MPLAYER ONLY) โจ
Okay bestie, this is the part where we get into the actual player knobs, and honestly? Some of these are iconic.
-autoq <quality>(use with-vf [s]pp) โ This one's lowkey magic: it dynamically changes the level of postprocessing based on how much spare CPU time you've got lying around. The number you give it is the maximum level it'll ever use โ and yeah, usually you can just throw some big number at it, she'll figure it out. Important though: you have to use-vf [s]ppwithout parameters for this to work at all, no cap.-autosync <factor>โ Gradually adjusts the A/V sync based on audio delay measurements. So like,-autosync 0(the default) makes frame timing based entirely on audio delay measurements.-autosync 1does the same thing but subtly changes the A/V correction algorithm. If you've got an uneven video framerate in a movie that plays fine with-nosound, setting this to an integer greater than 1 often helps. The higher the value, the closer the timing gets to-nosound. Try-autosync 30to smooth out problems with sound drivers that don't implement a perfect audio delay measurement โ with that value, if big A/V sync offsets happen, they only take about 1 or 2 seconds to settle out. That delay in reaction time to sudden A/V offsets should be the only side-effect of turning this on, for all sound drivers. ๐-benchmarkโ Prints some stats on CPU usage and dropped frames at the end of playback. Combine it with-nosoundand-vo nullif you only wanna benchmark the video codec. > NOTE: with this option MPlayer also ignores frame duration when playing video only โ think of it as infinite fps, bestie. ๐โโ๏ธ-colorkey <number>โ Changes the colorkey to an RGB value of your choice.0x000000is black,0xffffffis white. Only supported by thecvidix,fbdev,svga,vesa,winvidix,xmga,xvidix,xover,xv(see-vo xv:ck) anddirectxvideo output drivers.-nocolorkeyโ Disables colorkeying. Same guest list as above, no extras:cvidix,fbdev,svga,vesa,winvidix,xmga,xvidix,xover,xv(see-vo xv:ck) anddirectxvideo output drivers.-correct-pts(EXPERIMENTAL) โ Switches MPlayer into an experimental mode where timestamps for video frames are calculated differently, and video filters that add new frames or modify timestamps of existing ones are supported. The more accurate timestamps are visible, for example, when playing subtitles timed to scene changes with the-assoption โ without-correct-ptsthe subtitle timing will typically be off by some frames. Heads up though: this option does not work correctly with some demuxers and codecs. ๐ซ-crash-debug(DEBUG CODE) โ Automatically attachesgdbupon crash orSIGTRAP. Support must be compiled in by configuring with--enable-crash-debug. Not me needing a whole debugger just to watch a video ๐ญ-doubleclick-timeโ Time in milliseconds to recognize two consecutive button presses as a double-click (default:300). Set it to0to let your windowing system decide what a double-click is (-vo directxonly). > NOTE: you'll get slightly different behaviour depending on whether you bindMOUSE_BTN0_DBLorMOUSE_BTN0-MOUSE_BTN0_DBL. iykyk.-edlout <filename>โ Creates a new file and writes edit decision list (EDL) records to it. During playback, you hitito mark the start or end of a skip block. This gives you a starting point from which you can fine-tune EDL entries later. Details athttp://www.mplayer-hq.hu/DOCS/HTML/en/edl.html๐-edl-backward-delay <number>โ Okay so when you're using EDL during playback and you jump backwards, you can end up in the middle of an EDL record. In that case MPlayer seeks further backwards to the start position of the EDL record and then immediately skips the scene specified in the EDL record. To avoid this kind of behavior, MPlayer jumps to a fixed time interval before the start of the EDL record. This parameter lets you specify that time interval in seconds (default:2seconds).-edl-start-ptsโ Adjusts positions in EDL records according to the playing file's start time. Some formats, especially MPEG TS, usually start with non-zero PTS values, and when producing an EDL file with the-edloutoption, EDL records contain absolute values that are correct only for this particular file. If it's re-encoded into a different format, this EDL file no longer applies. Specifying-edl-start-ptsautomatically adjusts EDL positions according to start time: when producing the EDL file, it subtracts the start time from every EDL record, and when playing with an EDL file, it adds the file's start time to every EDL position. She's flexible like that โจ-noedl-start-ptsโ Disable adjusting EDL positions. That's it, that's the whole vibe.-enqueue(GUI only) โ Enqueue files given on the command line in the playlist instead of playing them immediately. Queue her up, bestie ๐ง-fixed-voโ Enforces a fixed video system for multiple files (one (un)initialization for all files). Which means only one window gets opened for all your files. Currently the following drivers are fixed-vo compliant:gl,gl_tiled,mga,svga,x11,xmga,xv,xvidixanddfbmga. Very one-window-of-you energy ๐-framedrop(also see-hardframedrop, experimental without-nocorrect-pts) โ Skips displaying some frames to keep A/V sync on slow systems. Video filters are not applied to such frames. For B-frames even decoding is skipped completely. Sacrifices were made. ๐ญ-(no)guiโ Enable or disable the GUI interface (the default depends on the binary name). Only works as the first argument on the command line. Does not work as a config-file option. Sorry to that config file, she's just not invited.-gui-include <GUI configuration file>(also see-include) (GUI only) โ Specifies a GUI configuration file to be parsed after the defaultgui.conf. Layering, we love to see it.-h,-help,--helpโ Show a short summary of options. The "girl help" of flags, but actually helpful ๐ซถ-hardframedrop(experimental without-nocorrect-pts) โ More intense frame dropping (it breaks decoding). Leads to image distortion! And note that especially thelibmpeg2decoder may crash with this, so consider using"-vc ffmpeg12,". > Fr fr, this one is a little unhinged โ use with caution. ๐-heartbeat-cmdโ Command that is executed every 30 seconds during playback viasystem()โ i.e. using the shell.
NOTE: MPlayer uses this command without any checking. It is your responsibility to ensure it does not cause security problems (e.g. make sure to use full paths if.is in your path like on Windows). It also only works when playing video โ so not with-novideo, but it does work with-vo null.
This can be "misused" to disable screensavers that do not support the proper X API (also see -stop-xscreensaver). If you think this is too complicated, ask the author of the screensaver program to support the proper X APIs. Politely. ๐
EXAMPLE for xscreensaver:
mplayer -heartbeat-cmd "xscreensaver-command -deactivate" file
EXAMPLE for GNOME screensaver:
mplayer -heartbeat-cmd "gnome-screensaver-command -p" file
-heartbeat-intervalโ Specify how often the-heartbeat-cmdshould be executed, in seconds between executions (default:30.0). Keep that pulse steady ๐-identifyโ Shorthand for-msglevel identify=6. Shows file parameters in an easily parseable format. Also prints more detailed info about subtitle and audio track languages and IDs. For example, for a DVD or Blu-ray it will list the chapters and time length of each title, as well as a disk ID. Combine this with-frames 0to suppress all video output. The wrapper scriptTOOLS/midentify.shsuppresses the other MPlayer output and (hopefully) shellescapes the filenames. You can get less information by using-msglevel identify=4. Data girlie behavior, honestly obsessed ๐ฅ-idle(also see-slave) โ Makes MPlayer wait idly instead of quitting when there is no file to play. Mostly useful in slave mode where MPlayer can be controlled through input commands. Forgmplayer,-idleis the default, and-noidlewill quit the GUI after all files have been played. Just vibing, waiting for instructions โจ-input <commands>โ This option can be used to configure certain parts of the input system. Paths are relative to~/.mplayer/.
NOTE: autorepeat is currently only supported by joysticks.
Available commands are:
conf=<filename>โ Specify an input configuration file other than the default~/.mplayer/input.conf.~/.mplayer/<filename>is assumed if no full path is given.ar-dev=<device>โ Device to be used for Apple IR Remote (default is autodetected, Linux only).ar-delayโ Delay in milliseconds before we start to autorepeat a key (0to disable).ar-rateโ Number of key presses to generate per second on autorepeat.(no)default-bindingsโ Use the key bindings that MPlayer ships with by default.keylistโ Prints all keys that can be bound to commands.cmdlistโ Prints all commands that can be bound to keys.js-devโ Specifies the joystick device to use (default:/dev/input/js0).file=<filename>โ Read commands from the given file. Mostly useful with a FIFO.
NOTE: when the given file is a FIFO, MPlayer opens both ends so you can do several echo "seek 10" > mp_pipe and the pipe will stay valid. She's keeping it open for you, bestie ๐ซถ
-key-fifo-size <2-65000>โ Specify the size of the FIFO that buffers key events (default:7). A FIFO of size n can buffer (n-1) events. If it's too small, some events may be lost. If it's too big, MPlayer may seem to hang while it processes the buffered events. To get the same behavior as before this option was introduced, set it to2for Linux or1024for Windows. For small values you should disable double-clicks by setting-doubleclick-timeto0so they don't compete with regular events for buffer space. Buffer drama, we've all been there ๐-lircconf <filename>(LIRC only) โ Specifies a configuration file for LIRC (default:~/.lircrc). Remote control aesthetic ๐-list-propertiesโ Print a list of the available properties. Short, sweet, and honestly? Iconic.-loop <number>โ loops the playback<number>times.0means forever ๐. Use-loop 0 <URL|filename>to automatically reconnect to live streaming URLs, or to files that haven't been created yet or are gonna get replaced.-loop <number> <URL|filename>opens the URL or file<number>times in a row and plays it once each time, while<URL|filename> -loop <number>opens the URL or file once and plays it<number>times in a loop โ and that second one is usually what you actually want, bestie.-menu(OSD menu only) โ turn on OSD menu support โจ.-menu-cfg <filename>(OSD menu only) โ use an alternativemenu.conf.-menu-chroot <path>(OSD menu only) โ chroot the file selection menu to a specific location ๐.
EXAMPLE:
-menu-chroot /home
Will restrict the file selection menu to /home and downward (i.e. no access to / will be possible, but /home/user_name will).
-menu-keepdir(OSD menu only) โ file browser starts from the last known location instead of the current directory ๐.-menu-root <value>(OSD menu only) โ specify the main menu.-menu-startup(OSD menu only) โ display the main menu at MPlayer startup.-mouse-movementsโ permit MPlayer to receive pointer events reported by the video output driver ๐ฑ๏ธ. Necessary to select the buttons in DVD menus. Supported for X11-based VOs (x11,xv, etc) and thegl,gl_tiled,direct3dandcorevideoVOs.-noarโ turns off AppleIR remote support.-noconsolecontrolsโ prevent MPlayer from reading key events from standard input. Useful when reading data from standard input. This is automatically enabled when-is found on the command line. There are situations where you have to set it manually, e.g. if you open/dev/stdin(or the equivalent on your system), use stdin in a playlist or intend to read from stdin later on via theloadfileorloadlistslave commands. iykyk ๐-nojoystickโ turns off joystick support ๐น๏ธ.-nolircโ turns off LIRC support.-nomouseinputโ disable mouse button press/release input (mozplayerxp's context menu relies on this option).-rtc(RTC only) โ turns on usage of the Linux RTC (realtime clock -/dev/rtc) as timing mechanism โฐ. This wakes up the process every 1/1024 seconds to check the current time. Useless with modern Linux kernels configured for desktop use, as they already wake up the process with similar accuracy when using normal timed sleep. so likeโฆ kind of a legacy icon ngl.-pausing <0-3>(MPlayer only) โ specifies the default pausing behaviour of commands, i.e. whether MPlayer will continue playback or stay paused after the command has finished. SeeDOCS/tech/slave.txtfor further details.0โ resume1โ pause (pausing)2โ keep the paused / playing status (pausing_keep)3โ toggle the paused / playing status (pausing_toggle)4โ pause without frame step (experimental) (pausing_keep_force)
-playing-msg <string>โ print out a string before starting playback. These expansions are supported ๐:${NAME}โ expand to the value of the propertyNAME.?(NAME:TEXT)โ expandTEXTonly if the propertyNAMEis available.?(!NAME:TEXT)โ expandTEXTonly if the propertyNAMEis not available.
-playlist <filename>โ play files according to a playlist file (ASX, Winamp, SMIL, or one-file-per-line format).
โ ๏ธ WARNING: the way MPlayer parses and uses playlist files is not safe against maliciously constructed files. Such files may trigger harmful actions. This has been the case for all MPlayer versions, but unfortunately this fact was not well documented earlier, and some people have even misguidedly recommended use of-playlistwith untrusted sources. Do NOT use-playlistwith random internet sources or files you don't trust! ๐จ
NOTE: this option is considered an entry, so options found after it will apply only to the elements of this playlist.
FIXME: this needs to be clarified and documented thoroughly.
-allow-dangerous-playlist-parsingโ this enables parsing any file as a playlist if e.g. a server advertises a file as playlist. Only enable if you know all servers involved are trustworthy. MPlayer's playlist code is not designed to handle malicious playlist files ๐. Like, it's right there in the name, bestie.-rtc-device <device>โ use the specified device for RTC timing.-shuffleโ play files in random order ๐.-skin <name>(GUI only) โ loads a skin from the directory given as parameter below the default skin directories,~/.mplayer/skins/and/usr/local/share/mplayer/skins/๐จ.
EXAMPLE:
-skin fittyfene
Tries ~/.mplayer/skins/fittyfene and afterwards /usr/local/share/mplayer/skins/fittyfene.
-slave(also see-input) โ switches on slave mode, in which MPlayer works as a backend for other programs ๐. Instead of intercepting keyboard events, MPlayer will read commands separated by a newline (\n) from stdin.
NOTE: see -input cmdlist for a list of slave commands and DOCS/tech/slave.txt for their description. Also, this is not intended to disable other inputs, e.g. via the video window โ use some other method like -input nodefault-bindings:conf=/dev/null for that.
-softsleepโ time frames by repeatedly checking the current time instead of asking the kernel to wake up MPlayer at the correct time. Useful if your kernel timing is imprecise and you cannot use the RTC either. Comes at the price of higher CPU consumption ๐ฅ (not the good kind).-sstep <sec>โ skip<sec>seconds after every frame. The normal framerate of the movie is kept, so playback is accelerated โฉ. Since MPlayer can only seek to the next keyframe this may be inexact.-udp-ip <ip>โ sets the destination address for datagrams sent by the-udp-master. Setting it to a broadcast address allows multiple slaves having the same broadcast address to sync to the master (default:127.0.0.1).-udp-masterโ send a datagram to-udp-ipon-udp-portjust before playing each frame ๐ก. The datagram indicates the master's position in the file.-udp-port <port>โ sets the destination port for datagrams sent by the-udp-master, and the port a-udp-slavelistens on (default:23867).-udp-seek-threshold <sec>โ when the master seeks, the slave has to decide whether to seek as well, or to catch up by decoding frames without pausing between frames. If the master is more than<sec>seconds away from the slave, the slave seeks. Otherwise, it "runs" to catch up or waits for the master. This should almost always be left at its default setting of1second ๐ซถ.-udp-slaveโ listen on-udp-portand match the master's position.
โจ DEMUXER/STREAM OPTIONS โจ
-a52drc <level>โ select the Dynamic Range Compression level for AC-3 audio streams.<level>is a float value ranging from0to1, where0means no compression and1(which is the default) means full compression (make loud passages more silent and vice versa). Values up to2are also accepted, but are purely experimental ๐งช. This option only shows an effect if the AC-3 stream contains the required range compression information.-aid <ID>(also see-alang) โ select audio channel (MPEG:0-31, AVI/OGM:1-99, ASF/RM:0-127, VOB(AC-3):128-159, VOB(LPCM):160-191, MPEG-TS17-8190). MPlayer prints the available audio IDs when run in verbose (-v) mode. When playing an MPEG-TS stream, MPlayer/MEncoder will use the first program (if present) with the chosen audio stream ๐ง.-ausid <ID>(also see-alang) โ select audio substream channel. Currently the valid range is0x55..0x75and applies only to MPEG-TS when handled by the native demuxer (not by libavformat). The format type may not be correctly identified because of how this information (or lack thereof) is embedded in the stream, but it will demux correctly the audio streams when multiple substreams are present. MPlayer prints the available substream IDs when run with-identify.-alang <language code[,language code,...]>(also see-aid) โ specify a priority list of audio languages to use ๐. Different container formats employ different language codes. DVDs use ISO 639-1 two letter language codes, Matroska, MPEG-TS and NUT use ISO 639-2 three letter language codes while OGM uses a free-form identifier. MPlayer prints the available languages when run in verbose (-v) mode.
EXAMPLE:
mplayer dvd://1 -alang hu,en
Chooses the Hungarian language track on a DVD and falls back on English if Hungarian is not available.
mplayer -alang jpn example.mkv
Plays a Matroska file in Japanese.
-audio-demuxer <[+]name>(-audiofileonly) โ force audio demuxer type for-audiofile. Use a+before the name to force it, this will skip some checks! Give the demuxer name as printed by-audio-demuxer help. For backward compatibility it also accepts the demuxer ID as defined inlibmpdemux/demuxer.h.-audio-demuxer audioor-audio-demuxer 17forces MP3.-audiofile <filename>โ play audio from an external file (WAV, MP3 or Ogg Vorbis) while viewing a movie ๐ฌ๐ต.-audiofile-cache <kBytes>โ enables caching for the stream used by-audiofile, using the specified amount of memory.-reuse-socket(udp://only) โ allows a socket to be reused by other processes as soon as it is closed.-bandwidth <Bytes>(network only) โ specify the maximum bandwidth for network streaming (for servers that are able to send content in different bitrates). Useful if you want to watch live streamed media behind a slow connection ๐. With Real RTSP streaming, it is also used to set the maximum delivery bandwidth allowing faster cache filling and stream dumping.-bluray-angle <angle ID>(Blu-ray only) โ okay so some Blu-ray discs literally have scenes you can watch from multiple angles, cinematic queen behavior ๐ . This is where you tell MPlayer which angle to use (default:1).-bluray-device <path to disc>(Blu-ray only) โ points MPlayer at where the Blu-ray disc actually lives. Has to be a directory with a Blu-ray structure in it, no cap.-cache <kBytes>โ how much memory (in kBytes!) MPlayer is allowed to use when precaching a file or URL ๐ง. Sending all the good vibes to slow media specifically โ this is where it shines.-nocacheโ turns caching off. periodt.-cache-min <percentage>โ playback kicks in once the cache is filled up to<percentage>of the total. like, it'll wait, bestie, it's patient ๐ธ.-cache-seek-min <percentage>โ so if you're seeking to a spot that's within<percentage>of the cache size from where you currently are, MPlayer will just chill and wait for the cache to fill up to that position instead of doing a whole stream seek (default:50). lowkey efficient.-capture(MPlayer only) โ lets you capture the primary stream (so like, NOT the additional audio tracks or other kinds of streams, just the main one) into the file you set with-dumpfile, or the default one if you didn't. Give this option and you can start and stop capturing by pressing the key bound to that function (peep the INTERACTIVE CONTROL section ๐). Same deal as-dumpstream: this will likely not produce usable results for anything other than MPEG streams, fr. And heads up โ because of cache latencies, the captured data may start and end somewhat delayed compared to what you're seeing displayed. clock's just a little off, it's fine ๐ซถ.-cdda <option1:option2>(CDDA only) โ this one tunes up MPlayer's CD Audio reading feature. the options are:speed=<value>โ set the CD spin speed. spin it, diva ๐ฟ.paranoia=<0-2>โ set the paranoia level. ngl, values other than0seem to break playback of anything but the first track ๐ญ.0: disable checking (default)1: overlap checking only2: full data correction and verification
generic-dev=<value>โ use the specified generic SCSI device.sector-size=<value>โ set the atomic read size.overlap=<value>โ force the minimum overlap search during verification to<value>sectors.toc-biasโ assumes that the beginning offset of track 1 as reported in the TOC will be addressed as LBA 0. Some Toshiba drives literally need this to get track boundaries correct, iconic of them.toc-offset=<value>โ add<value>sectors to the values reported when addressing tracks. May be negative, she's flexible.(no)skipโ (never) accept imperfect data reconstruction. imperfect is a vibe, but maybe not here.
-cdrom-device <path to device>โ tells MPlayer where the CD-ROM device is (default:/dev/cdrom) โจ.-channels <number>(also see-af channels) โ request the number of playback channels (default:2). MPlayer asks the decoder to decode the audio into as many channels as you specified, and then it's up to the decoder to actually fulfill that requirement โ girl, it's a request, not a demand ๐ . This is usually only important when you're playing videos with AC-3 audio (like DVDs). In that case liba52 does the decoding by default and correctly downmixes the audio into the number of channels you asked for. If you wanna directly control the number of output channels independently of how many channels get decoded, use thechannelsfilter instead. Here's your menu:2โ stereo4โ surround6โ full 5.18โ full 7.1
NOTE: This option is honored by codecs (AC-3 only), filters (surround) and audio output drivers (OSS at least). picky little kings, but we love them.
-chapter <chapter ID>[-<endchapter ID>]โ pick which chapter to start playing at, and optionally which chapter to end at (default:1). chapter-select era ๐.-cookies(network only) โ send cookies when making HTTP requests. yes babe, the website needs to know it's you ๐ช.-cookies-file <filename>(network only) โ read HTTP cookies from<filename>(default:~/.mozilla/and~/.netscape/) and skip reading from the default locations. The file is assumed to be in Netscape format, so no funny business.-delay <sec>โ audio delay in seconds (positive or negative float value, she's precise ๐). Negative values delay the audio, positive values delay the video. Lowkey important: this is the exact opposite of the-audio-delayMEncoder option, don't get it twisted.
NOTE: When used with MEncoder, this is not guaranteed to work correctly with-ovc copy; use-audio-delayinstead. fr fr, just use the other one.
-ignore-startโ ignore the specified starting time for streams in AVI files. In MPlayer, this nullifies stream delays in files encoded with the-audio-delayoption. During encoding, this option prevents MEncoder from transferring original stream start times to the new file โ and note that the-audio-delayoption is not affected. Heads up though: MEncoder sometimes adjusts stream starting times automatically to compensate for anticipated decoding delays, so don't use this option for encoding without testing it first ๐. test it, bestie.-demuxer <[+]name>โ force the demuxer type. Put a+before the name to force it hard โ this will skip some checks! โ ๏ธ Give the demuxer name as printed by-demuxer help. For backward compatibility it also accepts the demuxer ID as defined inlibmpdemux/demuxer.h. old school, we respect it.-dumpaudio(MPlayer only) โ dumps the raw compressed audio stream to./stream.dump(useful with MPEG/AC-3; in most other cases the resulting file will not be playable, sorry babe ๐ญ). If you give more than one of-dumpaudio,-dumpvideo,-dumpstreamon the command line, only the last one will work. one at a time, diva.-dumpfile <filename>(MPlayer only) โ specify which file MPlayer should dump to. Should be used together with-dumpaudio/-dumpvideo/-dumpstream/-capture๐ซถ.-dumpstream(MPlayer only) โ dumps the raw stream to./stream.dump. Useful when ripping from DVD or network, we love a lil ripping era โจ. Same rule as always: if you give more than one of-dumpaudio,-dumpvideo,-dumpstreamon the command line, only the last one will work.-dumpvideo(MPlayer only) โ dump the raw compressed video stream to./stream.dump. ngl, not very usable ๐. And yes โ if you give more than one of-dumpaudio,-dumpvideo,-dumpstreamon the command line, only the last one will work.-dvbin <options>(DVB only) โ passes the following parameters to the DVB input module so you can override the defaults. the lineup:card=<1-4>โ specifies using card number 1-4 (default:1).file=<filename>โ instructs MPlayer to read the channels list from<filename>. Default is~/.mplayer/channels.conf.{sat,ter,cbl,atsc}(based on your card type) or~/.mplayer/channels.confas a last resort.timeout=<1-240>โ maximum number of seconds to wait when trying to tune a frequency before giving up (default:30). she's patient but not that patient โณ.
-dvd-device <path to device>(DVD only) โ specify the DVD device or.isofilename (default:/dev/dvd). You can also point it at a directory that contains files previously copied directly from a DVD (with e.g.vobcopy). iykyk ๐ฟ.-dvd-speed <factor or speed in KB/s>(DVD only) โ try to limit DVD speed (default:0, no change). Here's the math, bestie: DVD base speed is about1350KB/s, so an 8x drive can read at speeds up to10800KB/s. Slower speeds make the drive more quiet โ for watching DVDs,2700KB/sshould be quiet and fast enough ๐ธ. MPlayer resets the speed to the drive default value on close. Values less than100mean multiples of1350KB/s, i.e.-dvd-speed 8selects10800KB/s.
NOTE: You need write access to the DVD device to change the speed. no write access, no speed change, that's the rule ๐ซถ.
-dvdangle <angle ID>(DVD only) โ some DVD discs contain scenes that can be viewed from multiple angles. Here you tell MPlayer which angles to use (default:1). main character gets to pick her angle ๐ .-edl <filename>โ enables edit decision list (EDL) actions during playback. Video gets skipped over, and audio gets muted and unmuted according to the entries in the file you gave. Peephttp://www.mplayerhq.hu/DOCS/HTML/en/edl.htmlfor the details on how to use it โจ.-endpos <[[hh:]mm:]ss[.ms]|size[b|kb|mb]>(also see-ssand-sb) โ stop at the given time or byte position.
NOTE: Byte position may not be accurate, as it can only stop at a frame boundary. When used together with the-ssoption,-endpostime will shift forward by the seconds specified with-ssif it's not a byte position. On top of that, it may not work well or not at all when used with any of the-dumpoptions ๐ญ.
EXAMPLE:
-endpos 56
Stop at 56 seconds.
-endpos 01:10:00
Stop at 1 hour 10 minutes.
-ss 10 -endpos 56
Stop at 1 minute 6 seconds.
mplayer -endpos 100mb
Stop playback after reading 100MB of the input file.
mencoder -endpos 100mb
Encode only 100 MB.
-forceidxโ force index rebuilding ๐ฅ. Useful for files with a broken index (A/V desync, etc). This will enable seeking in files where seeking wasn't possible before. And you can fix the index permanently with MEncoder (see the documentation). she doesn't just patch it, she heals it.
NOTE: This option only works if the underlying media supports seeking (i.e. not with stdin, pipe, etc). pipes said no ๐คทโโ๏ธ.
-fps <float value>โ override the video framerate. Useful if the original value is wrong or straight-up missing. we're fixing his homework ๐.-frames <number>โ play/convert only the first<number>frames, then quit. small dose, then dip ๐ .-hr-mp3-seek(MP3 only) โ hi-res MP3 seeking โจ. Enabled when playing from an external MP3 file, since we need to seek to the very exact position to keep A/V sync. Can be slow, especially when seeking backwards, because it has to rewind allll the way to the beginning to find an exact frame position. worth it for the accuracy though.-http-header-fields <field1,field2>โ set custom HTTP fields when accessing an HTTP stream. custom headers, custom vibe ๐.
EXAMPLE: ๐
mplayer -http-header-fields 'Field1: value1','Field2:
value2' http://localhost:1234
Will generate HTTP request:
GET / HTTP/1.0
Host: localhost:1234
User-Agent: MPlayer
Icy-MetaData: 1
Field1: value1
Field2: value2
Connection: close
bestie look at that, the headers just slot in right before Connection: close, obsessed with the ordering ngl โจ
-idx(also see-forceidx) โ Rebuilds the index of your file if like, there wasn't one to begin with, which is what lets you seek around. Highkey a lifesaver with broken or incomplete downloads, or files that were just badly created. NOTE: this one only works if the underlying media actually supports seeking โ so not withstdin, pipe, etc. ๐-noidxโ Skip rebuilding the index file. With this option, MEncoder skips writing the index too. ๐-ipv4-only-proxy(network only) โ Skips the proxy for IPv6 addresses. It'll still be used for IPv4 connections, no cap. ๐ฆ-lavfstreamopts <options>โ Specify extra options for libavformat based streams. Slay.-loadidx <index file>โ The file you read the video index data from, the one that was saved by-saveidx. This index gets used for seeking and overrides any index data that's chillin' inside the AVI itself. MPlayer will absolutely not stop you from loading an index file that was generated from a different AVI, but bestieโฆ that is sure to cause unfavorable results. ๐ NOTE: this option is obsolete now that MPlayer has OpenDML support. It's giving legacy.-mc <seconds/frame>โ maximum A-V sync correction per frame (in seconds).-mc 0should always be combined with-noskipfor mencoder, otherwise it will almost certainly cause A-V desync. Like, don't test it. ๐ญ-mf <option1:option2:...>โ Used when decoding from multiple PNG or JPEG files.
Available options are:
w=<value>โ input file width (default: autodetect)h=<value>โ input file height (default: autodetect)fps=<value>โ output fps (default: 25)type=<value>โ input file type (available:jpeg,png,tga,sgi)
-niโ Force treating files as non-interleaved. In particular it forces usage of the non-interleaved AVI parser (which fixes playback of some bad AVI files). It can also help play files that otherwise play audio and video alternating instead of at the same time. Heads up though: this can significantly increase memory usage, so it would be preferable to just fix the interleaving of the affected files. ๐-nobps(AVI only) โ Do not use the average byte/second value for A-V sync. Helps with some AVI files that have a broken header. ๐-noextbasedโ Disables extension-based demuxer selection. By default, when the file type (demuxer) can't be detected reliably โ like the file has no header, or the header isn't reliable enough โ the filename extension gets used to pick the demuxer. This always falls back on content-based demuxer selection. ๐-passwd <password>(also see-user) (network only) โ Specify the password for HTTP authentication. ๐-prefer-ipv4(network only) โ Use IPv4 on network connections. Falls back on IPv6 automatically. ๐ซถ-prefer-ipv6(IPv6 network only) โ Use IPv6 on network connections. Falls back on IPv4 automatically. ๐ซถ-psprobe <byte position>โ When playing MPEG-PS or MPEG-PES streams, this option lets you specify how many bytes into the stream you want MPlayer to scan so it can identify which video codec is being used. You need this one to play EVO or VDR files containing H.264 streams. โญ-pvr <option1:option2:...>(PVR only) โ This option tunes various encoding properties of the PVR capture module. It has to be used with any hardware MPEG encoder based card that's supported by the V4L2 driver. The Hauppauge WinTV PVR-150/250/350/500 and all IVTV based cards are known as PVR capture cards. Be aware that only Linux 2.6.18 kernel and above is able to handle an MPEG stream through the V4L2 layer. For hardware capture of an MPEG stream and watching it with MPlayer/MEncoder, use'pvr://'as a movie URL. ๐
Available options are:
aspect=<0-3>โ Specify input aspect ratio:0: 1:11: 4:3 (default)2: 16:93: 2.21:1
arate=<32000-48000>โ Specify encoding audio rate (default: 48000 Hz, available: 32000, 44100 and 48000 Hz).alayer=<1-5>โ Specify MPEG audio layer encoding (default: 2).abitrate=<32-448>โ Specify audio encoding bitrate in kbps (default: 384).amode=<value>โ Specify audio encoding mode. Available preset values are'stereo','joint_stereo','dual'and'mono'(default: stereo).vbitrate=<value>โ Specify average video bitrate encoding in Mbps (default: 6).vmode=<value>โ Specify video encoding mode:vbr: Variable BitRate (default)cbr: Constant BitRate
vpeak=<value>โ Specify peak video bitrate encoding in Mbps (only useful for VBR encoding, default: 9.6).fmt=<value>โ Choose an MPEG format for encoding:ps: MPEG-2 Program Stream (default)ts: MPEG-2 Transport Streammpeg1: MPEG-1 System Streamvcd: Video CD compatible streamsvcd: Super Video CD compatible streamdvd: DVD compatible stream
-radio <option1:option2:...>(radio only) โ These options set various parameters of the radio capture module. For listening to radio with MPlayer, use'radio://<frequency>'(if the channels option is not given) or'radio://<channel_number>'(if the channels option is given) as a movie URL. You can see the allowed frequency range by running MPlayer with'-v'. To start the grabbing subsystem, use'radio://<frequency or channel>/capture'. If the capture keyword isn't given, you can only listen to radio using the line-in cable. Using capture to listen is not recommended due to synchronization problems, which makes this whole process uncomfortable. ๐ญ
Available options are:
device=<value>โ Radio device to use (default:/dev/radio0for Linux and/dev/tuner0for *BSD).driver=<value>โ Radio driver to use (default:v4l2if available, otherwisev4l). Currently,v4landv4l2drivers are supported.volume=<0..100>โ sound volume for radio device (default 100)freq_min=<value>(BSD BT848 only)* โ minimum allowed frequency (default: 87.50)freq_max=<value>(BSD BT848 only)* โ maximum allowed frequency (default: 108.00)channels=<frequency>-<name>,<frequency>-<name>,...โ Set channel list. Use_for spaces in names (or play with quoting ;-). The channel names will then be written using OSD, and the slave commandsradio_step_channelandradio_set_channelwill be usable for a remote control (see LIRC). If given, the number in the movie URL will be treated as the channel position in the channel list.EXAMPLE:radio://1,radio://104.4,radio_set_channel 1adevice=<value>(radio capture only) โ Name of device to capture sound from. Without such a name, capture will be disabled, even if the capture keyword appears in the URL. For ALSA devices use it in the formhw=<card>.<device>. If the device name contains a'=', the module will use ALSA to capture, otherwise OSS.arate=<value>(radio capture only) โ Rate in samples per second (default: 44100). NOTE: when using audio capture, also set the-rawaudio rate=<value>option with the same value as arate. If you have problems with sound speed (it runs too quickly), try playing with different rate values (e.g. 48000,44100,32000,...).achannels=<value>(radio capture only) โ Number of audio channels to capture.
-rawaudio <option1:option2:...>โ This option lets you play raw audio files. You have to use-demuxer rawaudioas well. It may also be used to play audio CDs that aren't 44kHz 16-bit stereo. For playing raw AC-3 streams use-rawaudio format=0x2000 -demuxer rawaudio. ๐ฅ
Available options are:
channels=<value>โ number of channelsrate=<value>โ rate in samples per secondsamplesize=<value>โ sample size in bytesbitrate=<value>โ bitrate for rawaudio filesformat=<value>โ fourcc in hex
-rawvideo <option1:option2:...>โ This option lets you play raw video files. You have to use-demuxer rawvideoas well.
Available options are:
fps=<value>โ rate in frames per second (default: 25.0)sqcif|qcif|cif|4cif|pal|ntscโ set standard image sizew=<value>โ image width in pixelsh=<value>โ image height in pixelsi420|yv12|yuy2|y8โ set colorspaceformat=<value>โ colorspace (fourcc) in hex or string constant. Use-rawvideo format=helpfor a list of possible strings.size=<value>โ frame size in Bytes
EXAMPLE:
mplayer foreman.qcif -demuxer rawvideo -rawvideo qcif
Play the famous "foreman" sample video.
mplayer sample-720x576.yuv -demuxer rawvideo -rawvideo w=720:h=576
Play a raw YUV sample.
-referrer <string>(network only) โ Specify a referrer path or URL for HTTP requests. ๐ฆ-rtsp-portโ Used with'rtsp://'URLs to force the client's port number. This option may be useful if you're behind a router and want to forward the RTSP stream from the server to a specific client. ๐ธ-rtsp-destinationโ okay so when you're usingrtsp://URLs this one forces the destination IP address to be bound. Super useful with those RTSP servers that are being dramatic and not sending RTP packets to the right interface ๐ . If the connection to the RTSP server fails, run with-vto see which IP address MPlayer is trying to bind to, then force it to one that's actually assigned to your computer instead. iykyk.-rtsp-stream-over-tcp(LIVE555 and NEMESI only) โ withrtsp://URLs this says "bestie, stream the incoming RTP and RTCP packets over TCP instead" (using the same TCP connection as RTSP). Genuinely a lifesaver if your internet connection is broken and won't pass incoming UDP packets (seehttp://www.live555.com/mplayer/).-rtsp-stream-over-http(LIVE555 only) โ withhttp://URLs this specifies that the resulting incoming RTP and RTCP packets get streamed over HTTP. slay.-saveidx <filename>โ forces index rebuilding and dumps the index to<filename>. rn this only works with AVI files.
NOTE: this option is obsolete now that MPlayer has OpenDML support. it's giving legacy, no cap.
-sb <byte position>(also see-ss) โ seeks to a byte position. iconic for playback from CD-ROM images or VOB files that have junk at the beginning ๐๏ธ.-speed <0.01-100>โ slows down or speeds up playback by the factor you pass as the parameter. not guaranteed to work correctly with-oac copy๐ญ. add-af scaletempoto get past the 4x limit on playback โ yes bestie, there's a ceiling.-srate <Hz>โ picks the output sample rate to be used (and yeah, sound cards have limits on this, they're only human). if the sample frequency you selected is different from that of the current media, the resample or lavcresample audio filter gets inserted into the audio filter layer to compensate for the difference. the type of resampling can be controlled by the-af-advoption. default is fast resampling, which may cause distortion โ lowkey a tradeoff, highkey worth knowing ๐.-ss <time>(also see-sb) โ seeks to the given time position. use-ss noptsto disable seeking, and heads up:-ss 0has different behaviour ๐.
EXAMPLE:
-ss 56
Seeks to 56 seconds.
-ss 01:10:00
Seeks to 1 hour 10 min.
-tskeepbrokenโ tells MPlayer not to discard TS packets that are reported as broken in the stream. sometimes you literally need this to play corrupted MPEG-TS files ๐.-tsprobe <byte position>โ when playing an MPEG-TS stream, this lets you specify how many bytes in the stream you want MPlayer to search for the desired audio and video IDs. detective mode ๐.-tsprog <1-65534>โ when playing an MPEG-TS stream, you can specify with this which program (if present) you want to play. can be used with-vidand-aid๐ซถ.-tv <option1:option2:...>(TV/PVR only) โ this option tunes various properties of the TV capture module. for watching TV with MPlayer, usetv://ortv://<channel_number>or eventv://<channel_name>(see optionchannelsfor channel_name below) as a movie URL. you can also usetv:///<input_id>to start watching a movie from a composite or S-Video input (see optioninputfor details). so many vibes, so many colons โจ
Available options are:
noaudioโ no sound. that's it. that's the tweet ๐automute=<0-255>(v4l and v4l2 only) โ if the signal strength reported by the device is less than this value, audio and video will be muted. in most casesautomute=100will be enough. default is0(automute disabled).driver=<value>โ see-tv driver=helpfor a list of compiled-in TV input drivers. available:dummy,v4l,v4l2,bsdbt848(default: autodetect).device=<value>โ specify TV device (default:/dev/video0).
NOTE: for thebsdbt848driver you can provide both bktr and tuner device names, separating them with a comma, tuner after bktr (e.g.-tv device=/dev/bktr1,/dev/tuner1).
input=<value>โ specify input (default:0(TV), see console output for available inputs).freq=<value>โ specify the frequency to set the tuner to (e.g.511.250). not compatible with thechannelsparameter ๐ซ.outfmt=<value>โ specify the output format of the tuner with a preset value supported by the V4L driver (yv12,rgb32,rgb24,rgb16,rgb15,uyvy,yuy2,i420) or an arbitrary format given as hex value. tryoutfmt=helpfor a list of all available formats ๐จ.width=<value>โ output window width.height=<value>โ output window height.fps=<value>โ framerate at which to capture video (frames per second).buffersize=<value>โ maximum size of the capture buffer in megabytes (default: dynamical).norm=<value>โ forbsdbt848andv4l,PAL,SECAM,NTSCare available. forv4l2, see the console output for a list of all available norms, and also see thenormidoption below.normid=<value>(v4l2 only) โ sets the TV norm to the given numeric ID. the TV norm depends on the capture card. see the console output for a list of available TV norms ๐บ.channel=<value>โ set tuner to<value>channel.chanlist=<value>โ available:argentina,australia,china-bcast,europe-east,europe-west,france,ireland,italy,japan-bcast,japan-cable,newzealand,russia,southafrica,us-bcast,us-cable,us-cable-hrc.channels=<chan>-<name>[=<norm>],<chan>-<name>[=<norm>],...โ set names for channels.
NOTE: if <chan> is an integer greater than 1000, it will be treated as frequency (in kHz) rather than a channel name from the frequency table.
use _ for spaces in names (or play with quoting ;-). the channel names will then be written using OSD, and the slave commands tv_step_channel, tv_set_channel and tv_last_channel will be usable for a remote control (see LIRC). not compatible with the frequency parameter.
NOTE: the channel number will then be the position in the 'channels' list, beginning with 1.
EXAMPLE: tv://1, tv://TV1, tv_set_channel 1, tv_set_channel TV1 โ honestly iconic little lineup ๐
[brightness|contrast|hue|saturation]=<-100-100>โ set the image equalizer on the card.audiorate=<value>โ set input audio sample rate.forceaudioโ capture audio even if there are no audio sources reported by v4l. stubborn and valid ๐alsaโ capture from ALSA.amode=<0-3>โ choose an audio mode:0: mono1: stereo2: language 13: language 2
forcechan=<1-2>โ by default, the count of recorded audio channels is determined automatically by querying the audio mode from the TV card. this option lets you force stereo/mono recording regardless of theamodeoption and the values returned by v4l. can be used for troubleshooting when the TV card is unable to report the current audio mode ๐ฉบ.adevice=<value>โ set an audio device.<value>should be/dev/xxxfor OSS and a hardware ID for ALSA. you must replace any ':' by a '.' in the hardware ID for ALSA. tiny detail, huge consequences ๐ญaudioid=<value>โ choose an audio output of the capture card, if it has more than one.[volume|bass|treble|balance]=<0-65535>(v4l1)[volume|bass|treble|balance]=<0-100>(v4l2) โ these options set parameters of the mixer on the video capture card. they will have no effect if your card does not have one. for v4l2, 50 maps to the default value of the control, as reported by the driver ๐๏ธ.gain=<0-100>(v4l2) โ set gain control for video devices (usually webcams) to the desired value and switch off automatic control. a value of0enables automatic control. if this option is omitted, gain control will not be modified.immediatemode=<bool>โ a value of0means capture and buffer audio and video together (default for MEncoder). a value of1(default for MPlayer) means to do video capture only and let the audio go through a loopback cable from the TV card to the sound card. pick your fighter ๐ฅmjpegโ use hardware MJPEG compression (if the card supports it). when using this option, you do not need to specify the width and height of the output window, because MPlayer will determine it automatically from the decimation value (see below). it's giving self-sufficient ๐decimation=<1|2|4>โ choose the size of the picture that will be compressed by hardware MJPEG compression:1: full size704x576PAL704x480NTSC
2: medium size352x288PAL352x240NTSC
4: small size176x144PAL176x120NTSC
quality=<0-100>โ choose the quality of the JPEG compression (< 60recommended for full size). bestie, trust the range ๐ธtdevice=<value>โ specify TV teletext device (example:/dev/vbi0) (default: none).tformat=<format>โ specify TV teletext display format (default:0):0: opaque1: transparent2: opaque with inverted colors3: transparent with inverted colors
tpage=<100-899>โ specify initial TV teletext page number (default:100).
tlang=<-1-127>โ sets the default teletext language code (default:0) that gets used as the primary language until a type 28 packet shows up. Super handy when the teletext system is running a non-latin character set but the language codes just... aren't being sent via teletext type 28 packets for some reason. Wanna see the list of supported language codes? Set this bad boy to-1. ๐hidden_video_renderer(dshow only) โ terminates the stream using the video renderer instead of the Null renderer (default:off). This one saves you if the video freezes but the audio keeps going. NOTE: may not work with the-vo directxand-vf cropcombo. ๐ญhidden_vp_renderer(dshow only) โ terminates the VideoPort pin stream with the video renderer instead of yanking it out of the graph (default:off). Useful if your card has a VideoPort pin and the video is choppy. NOTE: may not work with the-vo directxand-vf cropcombo either. ๐system_clock(dshow only) โ uses the system clock as the sync source instead of the default graph clock (which is usually the clock from one of the live sources in the graph).normalize_audio_chunks(dshow only) โ makes audio chunks with a time length equal to the video frame time length (default:off). Some audio cards create audio chunks that are like0.5s in size, and that's exactly what gives you choppy video when you're usingimmediatemode=0. ๐ซถ
-tvscan <option1:option2:...>(TV and MPlayer only) โ tunes the TV channel scanner. MPlayer will also print the value for the-tv channels=option, including the channels that already exist and the ones it just found. โจ
Available suboptions are:
autostartโ starts channel scanning immediately after startup (default:disabled).period=<0.1-2.0>โ the delay in seconds before switching to the next channel (default:0.5). Lower values mean faster scanning, but they can also make inactive TV channels show up as active. ๐threshold=<1-100>โ threshold value for signal strength (in percent) as reported by the device (default:50). A signal strength higher than this value means the channel currently being scanned is active.
-user <username>(also see-passwd) (network only) โ sets the username for HTTP authentication. ๐-user-agent <string>โ uses<string>as the user agent for HTTP streaming.-vid <ID>โ selects the video channel (MPG:0-15,ASF:0-255,MPEG-TS:17-8190). When you're playing an MPEG-TS stream, MPlayer/MEncoder will use the first program (if present) with the chosen video stream.-vivo <suboption>(DEBUG CODE) โ forces audio parameters for the VIVO demuxer (for debugging purposes only, bestie).FIXME: Document this.๐
๐ OSD/SUBTITLE OPTIONS ๐
NOTE: also go peep -vf expand. ๐
-ass(FreeType only) โ turns on SSA/ASS subtitle rendering. With this option,libassgets used for SSA/ASS external subtitles and Matroska tracks. You probably also want-embeddedfontswhile you're at it. NOTE: unlike normal OSD,libassuses fontconfig by default. Wanna disable that? Use-nofontconfig.-ass-border-color <value>โ sets the border (outline) color for text subtitles. The color format isRRGGBBAA.-ass-bottom-margin <value>โ adds a black band at the bottom of the frame. The SSA/ASS renderer can drop subtitles in there (with-ass-use-margins).-ass-color <value>โ sets the color for text subtitles. Color format isRRGGBBAA.-ass-font-scale <value>โ sets the scale coefficient used for fonts in the SSA/ASS renderer.-ass-force-style <[Style.]Param=Value[,...]>โ overrides some style or script info parameters. iconic for making a sub look right.
EXAMPLE:
-ass-force-style FontName=Arial,Default.Bold=1
-ass-force-style PlayResY=768
-ass-hinting <type>โ sets the hinting type.<type>can be:0โ no hinting1โ FreeType autohinter, light mode2โ FreeType autohinter, normal mode3โ font native hinter0-3 + 4โ the same, but hinting is only performed if the OSD is rendered at screen resolution and therefore won't be scaled.
The default value is 7 (use native hinter for unscaled OSD and no hinting otherwise). ๐ฆ
-ass-line-spacing <value>โ sets the line spacing value for the SSA/ASS renderer.-ass-styles <filename>โ loads all SSA/ASS styles found in the specified file and uses them for rendering text subtitles. The syntax of the file is exactly like the[V4 Styles]/[V4+ Styles]section of SSA/ASS. โจ-ass-top-margin <value>โ adds a black band at the top of the frame. The SSA/ASS renderer can place toptitles there (with-ass-use-margins).-ass-use-marginsโ enables placing toptitles and subtitles in the black borders when they're available. ๐-dumpjacosub(MPlayer only) โ converts the given subtitle (specified with the-suboption) to the time-based JACOsub subtitle format. Creates adumpsub.jsfile in the current directory.-dumpmicrodvdsub(MPlayer only) โ converts the given subtitle (specified with the-suboption) to the MicroDVD subtitle format. Creates adumpsub.subfile in the current directory.-dumpmpsub(MPlayer only) โ converts the given subtitle (specified with the-suboption) to MPlayer's own subtitle format, MPsub. Creates adump.mpsubfile in the current directory.-dumpsami(MPlayer only) โ converts the given subtitle (specified with the-suboption) to the time-based SAMI subtitle format. Creates adumpsub.smifile in the current directory.-dumpsrtsub(MPlayer only) โ converts the given subtitle (specified with the-suboption) to the time-based SubViewer (SRT) subtitle format. Creates adumpsub.srtfile in the current directory. NOTE: some broken hardware players literally choke on SRT subtitle files with Unix line endings ๐ญ. If you're unlucky enough to own such a box, run your subtitle files throughunix2dosor a similar program to swap those Unix line endings for DOS/Windows line endings.-dumpsub(MPlayer only) (BETA CODE) โ dumps the subtitle substream from VOB streams. Also go see the-dump*suband-vobsubout*options. ๐-embeddedfonts(FreeType only) โ enables extraction of Matroska embedded fonts (default:disabled). These fonts can be used for SSA/ASS subtitle rendering (the-assoption). Font files get created in the~/.mplayer/fontsdirectory. NOTE: with FontConfig 2.4.2 or newer, embedded fonts are opened directly from memory, and this option is enabled by default. ๐-ffactor <number>โ resamples the font alphamap. Can be:0โ plain white fonts0.75โ very narrow black outline (default)1โ narrow black outline10โ bold black outline
-flip-hebrew(FriBiDi only) โ turns on flipping subtitles using FriBiDi. ๐ธ-noflip-hebrew-commasโ changes FriBiDi's assumptions about where commas go in subtitles. Use this if commas are showing up at the start of a sentence instead of at the end. (We've all been there.)-font <path to font.desc file, path to font (FreeType), font pattern (Fontconfig)>โ searches for the OSD/subtitle fonts in an alternative directory (default for normal fonts:~/.mplayer/font/font.desc, default for FreeType fonts:~/.mplayer/subfont.ttf, default for Fontconfig:"sans-serif"). NOTE: with FreeType, this option determines the path to the font file. With Fontconfig, this option determines the Fontconfig font pattern.
EXAMPLE:
-font ~/.mplayer/arial-14/font.desc
-font ~/.mplayer/arialuni.ttf
-font 'Bitstream Vera Sans'
-font 'Bitstream Vera Sans:style=Bold'
-fontconfig(fontconfig only) โ enables the usage of fontconfig managed fonts (default:autodetect). NOTE: by default fontconfig is used for libass-rendered subtitles and not used for OSD. With-fontconfigit's used for both libass and OSD, and with-nofontconfigit's not used at all โ which is literally the only case where-fontand-subfontwill work with a given path to font. ๐ซถ-forcedsubsonlyโ displays only forced subtitles for the DVD subtitle stream selected by e.g.-slang.-fribidi-charset <charset name>(FriBiDi only) โ specifies the character set that gets passed to FriBiDi when decoding non-UTF-8 subtitles (default:ISO8859-8).-ifo <VOBsub IFO file>โ indicates the file that will be used to load the palette and frame size for VOBsub subtitles. โจ-noautosubโ turns off automatic subtitle file loading. Note: VOBsub subtitles are not affected. ๐-osd-duration <time>โ sets the duration of OSD messages in ms (default:1000).-osd-fractions <0-2>โ sets how fractions of seconds of the current timestamp get printed on the OSD:0โ do not display fractions (default).1โ show the first two decimals.2โ show an approximated frame count within the current second. Heads up: this frame count is not accurate, it's only an approximation. For variable fps, the approximation is known to be way off the correct frame count. ๐
-osdlevel <0-3>(MPlayer only) โ specifies which mode the OSD should start in.0โ subtitles only1โ volume + seek (default)2โ volume + seek + timer + percentage3โ volume + seek + timer + percentage + total time
-overlapsubโ allows the next subtitle to be displayed while the current one is still visible (by default the support is only enabled for specific formats). ๐ฅ-progbar-align <0-100>โ specifies the vertical alignment of the progress bar (0: top,100: bottom, default is50, i.e. centered). ๐-sid <ID>(also peep-slang,-vobsubid) โ picks which subtitle stream to show, and<ID>is a number from0to31๐. Run MPlayer in verbose mode (-v) and it'll print all the subtitle IDs it found so you can actually pick one. And if you literally cannot select one of the subtitles on a DVD, try-vobsubidtoo ๐ .-nosubโ kills off any internal subtitles that would've been auto-selected (like the ones the Matroska/mkv demuxer supports). Wanna stop external subtitle files from loading instead? That's-noautosub, different flag bestie ๐.-slang <language code[,language code,...]>(also see-sid) โ gives a priority list of subtitle languages to use ๐. And here's the tea: different container formats use different language codes. DVDs use ISO 639-1 two-letter language codes, Matroska uses ISO 639-2 three-letter language codes, and OGM just uses a free-form identifier ๐ซ . MPlayer prints the available languages when you run it in verbose (-v) mode.
EXAMPLE:
mplayer dvd://1 -slang hu,en
Picks the Hungarian subtitle track on a DVD and falls back on English if Hungarian isn't available ๐ฏ
mplayer -slang jpn example.mkv
Plays a Matroska file with Japanese subtitles โจ
-spuaa <mode>โ antialiasing/scaling mode for DVD/VOBsub ๐ฆ. You can add a value of16to<mode>to force scaling even when the original and scaled frame size already match โ super handy for smoothing subtitles with gaussian blur. Available modes are:0โ none (fastest, very ugly) ๐1โ approximate (broken?)2โ full (slow)3โ bilinear (default, fast and not too bad) ๐4โ uses swscaler gaussian blur (looks very good) ๐ฅ
-spualign <-1-2>โ says how SPU (DVD/VOBsub) subtitles should be aligned ๐-1โ original position0โ align at top (original behavior, default).1โ align at center.2โ align at bottom.
-spugauss <0.0-3.0>โ the variance parameter of the gaussian that-spuaa 4uses. Higher number = more blur (default:1.0) ๐ซ๏ธ.-sub <subtitlefile1,subtitlefile2,...>โ use/display these subtitle files ๐. Heads up: only one file can be displayed at the same time.-sub-bg-alpha <0-255>โ sets the alpha channel value for subtitles and OSD backgrounds. Big values mean more transparency, and0means completely transparent ๐ซฅ.-sub-bg-color <0-255>โ sets the color value for subtitles and OSD backgrounds. Currently subtitles are grayscale, so this value is equivalent to the intensity of the color.255means white and0means black ๐ค๐ค.-sub-demuxer <[+]name>(-subfileonly) (BETA CODE) โ forces the subtitle demuxer type for-subfile๐. Slap a+before the name to force it โ but bestie, that skips some checks! โ ๏ธ Give the demuxer name exactly as printed by-sub-demuxer help. For backward compatibility it also accepts the demuxer ID as defined insubreader.h.-sub-fuzziness <mode>โ adjusts the matching fuzziness when it's out here searching for subtitles (does not apply to VOBsub):0โ exact match (default)1โ load all subs containing the movie name.2โ load all subs in the current and-sub-pathsdirectories.
-sub-no-text-ppโ disables any kind of text post processing done after the subtitles are loaded. It's for debug purposes ๐งช.-subalign <0-2>โ says which edge of the subtitles should be aligned at the height given by-subpos๐0โ align subtitle top edge (original behavior).1โ align subtitle center.2โ align subtitle bottom edge (default).
-subcc <1-8>โ displays DVD Closed Caption (CC) subtitles from the channel you specify ๐บ. Values5to8select a mode that can extract EIA-608 compatibility streams from EIA-708 data. These are not the VOB subtitles โ they're special ASCII subtitles for the hearing impaired, encoded in the VOB userdata stream on most region 1 DVDs. And CC subtitles have not been spotted on DVDs from other regions so far ๐.-subcp <codepage>(iconv only) โ if your system supportsiconv(3), you can use this to specify the subtitle codepage. It takes priority over both-utf8and-unicode๐.
EXAMPLE:
-subcp latin2
-subcp cp1250
-subcp enca:<language>:<fallback codepage>(ENCA only) โ you can specify your language with a two-letter language code and let ENCA auto-detect the codepage ๐ต๏ธโโ๏ธ. Not sure? Enter literally anything and watch themplayer -voutput for available languages. Use__(two underscores) if your language isn't supported. The fallback codepage is the one used when autodetection fails.
EXAMPLE:
-subcp enca:cs:latin2
Guesses the encoding, assuming the subtitles are Czech, and falls back on latin 2 if the detection fails.
-subcp enca:pl:cp1250
Guesses the encoding for Polish, falls back on cp1250.
-subcp enca:__:latin1
Generic detection (mostly unicode) with latin1 fallback ๐
-sub-paths <path1,path2,...>โ specify extra subtitle paths to track in the media directory ๐๏ธ.
EXAMPLE: assuming /path/to/movie/movie.avi is played and -sub-paths sub,subtitles,/tmp/subs is specified, MPlayer searches for subtitle files in these directories:
/path/to/movie/
/path/to/movie/sub/
/path/to/movie/subtitles/
/tmp/subs/
~/.mplayer/sub/
-subdelay <sec>โ delays subtitles by<sec>seconds. Can be negative โฑ๏ธ (yes, you can rewind them, queen behaviour).-subfile <filename>(BETA CODE) โ currently useless ๐ซ . Same as-audiofile, but for subtitle streams (OggDS?).-subfont <path to font (FreeType), font pattern (Fontconfig)>(FreeType only) โ sets the subtitle font (see-font). If no-subfontis given,-fontis used ๐.-subfont-autoscale <0-3>(FreeType only) โ sets the autoscale mode.
NOTE: 0 means that text scale and OSD scale are font heights in points.
The mode can be:
0โ no autoscale1โ proportional to movie height2โ proportional to movie width3โ proportional to movie diagonal (default) ๐
-subfont-blur <0-8>(FreeType only) โ sets the font blur radius (default:2) ๐ซ๏ธ.-subfont-encoding <value>โ sets the font encoding. When set to'unicode', all the glyphs from the font file will be rendered and unicode will be used (default:unicode) ๐. (Without FreeType, setting any other value than'unicode'will disable unicode glyphs rendering forfont.descfiles. With FreeType and for other values than'unicode'your system has to supporticonv(3)in order for this to work.)-subfont-osd-scale <0-100>(FreeType only) โ sets the autoscale coefficient of the OSD elements (default:6) โจ.-subfont-outline <0-8>(FreeType only) โ sets the font outline thickness (default:2) ๐๏ธ.-subfont-text-scale <0-100>(FreeType only) โ sets the subtitle text autoscale coefficient as a percentage of the screen size (default:5) ๐.-subfps <rate>โ specify the framerate of the subtitle file (default: movie fps) ๐๏ธ.
NOTE: <rate> > movie fps speeds the subtitles up for frame-based subtitle files and slows them down for time-based ones. No cap, that's just how the math lands.
-subpos <0-150>(useful with-vf expand) โ specify the position of subtitles on the screen. The value is the vertical position of the subtitle in % of the screen height. Values larger than100allow part of the subtitle to be cut off โ๏ธ๐ญ.-subwidth <10-100>โ specify the maximum width of subtitles on the screen. Useful for TV-out ๐บ. The value is the width of the subtitle in % of the screen width.-noterm-osdโ disable the display of OSD messages on the console when no video output is available ๐ โโ๏ธ.-term-osd-esc <escape sequence>โ specify the escape sequence to use before writing an OSD message on the console. The escape sequence should move the pointer to the beginning of the line used for the OSD and clear it (default:^[[A\r^[[K) ๐ .-unicodeโ tells MPlayer to handle the subtitle file as unicode. (It will only take effect if neither-subcpnor-utf8is given.) ๐ธ-unrarexec <path to unrar executable>(not supported on MingW) โ specify the path to theunrarexecutable so MPlayer can use it to access rar-compressed VOBsub files (default: not set, so the feature is off) ๐๏ธ. The path must include the executable's filename, i.e./usr/local/bin/unrar.-utf8โ tells MPlayer to handle the subtitle file as UTF-8. (It will only take effect if-subcpisn't given, and it takes priority over-unicode.) ๐ฆ-vobsub <VOBsub file without extension>โ specify a VOBsub file to use for subtitles. Has to be the full pathname without extension, i.e. without the'.idx','.ifo'or'.sub'๐ฏ.-vobsubid <0-31>โ specify the VOBsub subtitle ID ๐.
๐ง AUDIO OUTPUT OPTIONS (MPLAYER ONLY) ๐ง
okay bestie, this is the section where we tell MPlayer how to make the sounds come out ๐
-abs <value>(-aooss only) (OBSOLETE) โ overrides the audio driver/card buffer size detection. it's giving retired, ngl.-format <format>(also see the format audio filter) โ picks the sample format that gets sent out from the audio filter layer to the sound card. the values<format>can take are listed down below in the description of the format audio filter, iykyk.-mixer <device>โ use a mixer device that isn't the default/dev/mixer. for ALSA, this is the mixer name.-mixer-channel <mixer line>[,mixer index](-aooss and-aoalsa only) โ tells MPlayer to use a different channel for controlling volume than the defaultPCM. OSS options includevol,pcm,line. for the complete list of options, go look forSOUND_DEVICE_NAMESin/usr/include/linux/soundcard.h. for ALSA you can use the names that, like, alsamixer displays, likeMaster,Line,PCM.
NOTE: ALSA mixer channel names followed by a number have to be written in the<name,number>format โ so a channel labeled'PCM 1'in alsamixer must be converted toPCM,1. no cap, that trips everyone up ๐
-softvolโ forces the use of the software mixer instead of the sound card mixer. main character energy for your volume slider โจ-softvol-max <10.0-10000.0>โ sets the maximum amplification level in percent (default:110). a value of200lets you crank the volume up to a max of double the current level. heads up though: with values below100, the initial volume (which is100%) will be above the maximum, which means e.g. the OSD cannot display it correctly ๐ญ-volstep <0-100>โ sets the step size for mixer volume changes, in percent of the whole range (default:3).-volume <-1-100>(also see-af volume) โ sets the startup volume in the mixer, either hardware or software (if used with-softvol). a value of-1(the default) won't change the volume at all ๐ซถ
๐ AUDIO OUTPUT DRIVERS (MPLAYER ONLY) ๐
audio output drivers are interfaces to different audio output facilities. the syntax is:
-ao <driver1[:suboption1[=value]:...],driver2,...[,]>
Specify a priority list of audio output drivers to be used.
if the list has a trailing ',', MPlayer will fall back on drivers that aren't in the list. suboptions are optional and can mostly be omitted ๐
NOTE: see -ao help for a list of compiled-in audio output drivers.
EXAMPLE:
-ao alsa,oss,
Try the ALSA driver, then the OSS driver, then others.
-ao alsa:noblock:device=hw=0.3
Sets noblock-mode and the device-name as first card,
fourth device.
available audio output drivers are, bestie, a whole buffet:
alsaโ ALSA 0.9/1.x audio output drivernoblockโ sets noblock-mode.device=<device>โ sets the device name. replace any','with'.'and any':'with'='in the ALSA device name. for hwac3 output via S/PDIF, use an"iec958"or"spdif"device โ unless you really know how to set it correctly ๐
ossโ OSS audio output driver<dsp-device>โ sets the audio output device (default:/dev/dsp).<mixer-device>โ sets the audio mixer device (default:/dev/mixer).<mixer-channel>โ sets the audio mixer channel (default:pcm).
sdl(SDL only) โ highly platform independent SDL (Simple Directmedia Layer) library audio output driver<driver>โ explicitly choose the SDL audio driver to use (default: let SDL choose).
artsโ audio output through the aRts daemonesdโ audio output through the ESD daemon<server>โ explicitly choose the ESD server to use (default:localhost).
jackโ audio output through JACK (Jack Audio Connection Kit)(no)connectโ automatically create connections to output ports (default: enabled). when enabled, the maximum number of output channels will be limited to the number of available output ports.port=<name>โ connects to the ports with the given name (default: physical ports).name=<clientโ client name that is passed to JACK (default:MPlayer [<PID>]). useful if you want to have certain connections established automatically.(no)estimateโ estimate the audio delay, supposed to make the video playback smoother (default: enabled).(no)autostartโ automatically startjackdif necessary (default: disabled). note that this seems unreliable and will spam stdout with server messages ๐
nasโ audio output through NAScoreaudio(Mac OS X only) โ native Mac OS X audio output driverdevice_id=<id>โ ID of output device to use (0= default device)helpโ list all available output devices with their IDs.
openalโ experimental OpenAL audio output driverpulseโ PulseAudio audio output driver[<host>[:<output sink>[:broken_pause]]]โ specify the host and optionally output sink to use. an empty<host>string uses a local connection,"localhost"uses network transfer (most likely not what you want). you can also explicitly force the workaround for broken pause functionality (default: autodetected). to only enable that without specifying a host/sink, the syntax is-ao pulse:::broken_pause
sgi(SGI only) โ native SGI audio output driver<output device name>โ explicitly choose the output device/interface to use (default: system-wide default). for example,'Analog Out'or'Digital Out'.
sun(Sun only) โ native Sun audio output driver<device>โ explicitly choose the audio device to use (default:/dev/audio).
win32(Windows only) โ native Windows waveout audio output driverdsound(Windows only) โ DirectX DirectSound audio output driverdevice=<devicenum>โ sets the device number to use. playing a file with-vwill show a list of available devices.
kai(OS/2 only) โ OS/2 KAI audio output driveruniaudโ force UNIAUD mode.dartโ force DART mode.(no)shareโ open audio in shareable or exclusive mode.bufsize=<size>โ set buffer size to<size>in samples (default:2048).
dart(OS/2 only) โ OS/2 DART audio output driver(no)shareโ open DART in shareable or exclusive mode.bufsize=<size>โ set buffer size to<size>in samples (default:2048).
dxr2(also see-dxr2) (DXR2 only) โ Creative DXR2 specific output driverv4l2(requires Linux 2.6.22+ kernel) โ audio output driver for V4L2 cards with hardware MPEG decoder.mpegpes(DVB only) โ audio output driver for DVB cards that writes the output to an MPEG-PES file if no DVB card is installed.card=<1-4>โ DVB card to use if more than one card is present. if not specified, MPlayer will search the first usable card.file=<filename>โ output filename
nullโ produces no audio output but maintains video playback speed. use-nosoundfor benchmarking.pcmโ raw PCM/wave file writer audio output(no)waveheaderโ include or do not include the wave header (default: included). when not included, raw PCM will be generated.file=<filename>โ write the sound to<filename>instead of the defaultaudiodump.wav. ifnowaveheaderis specified, the default isaudiodump.pcm.fastโ try to dump faster than realtime. make sure the output doesn't get truncated (usually with the"Too many video packets in buffer"message). it is normal that you get a"Your system is too SLOW to play this!"message ๐ข
pluginโ plugin audio output driver
๐ผ๏ธ VIDEO OUTPUT OPTIONS (MPLAYER ONLY) ๐ผ๏ธ
-adapter <value>โ sets the graphics card that will receive the image. you can get a list of available cards by running this option with-v. currently only works with thedirectxvideo output driver.-bpp <depth>โ overrides the autodetected color depth. only supported by thefbdev,dga,svga,vesavideo output drivers.-borderโ play movie with window border and decorations. since this is on by default, use-noborderto disable the standard window decorations ๐-brightness <-100-100>โ adjusts the brightness of the video signal (default:0). not supported by all video output drivers.-contrast <-100-100>โ adjusts the contrast of the video signal (default:0). not supported by all video output drivers.-display <name>(X11 only) โ specify the hostname and display number of the X server you want to display on.
EXAMPLE:
-display xtest.localdomain:0
-drโ turns on direct rendering (not supported by all codecs and video outputs). this can result in significantly faster blitting on some systems โ on most, the difference will be minimal. in some cases, particularly with decoders that specify their buffer requirements badly, it can be vastly slower.
WARNING: may cause OSD/SUB corruption! ๐ฑ
-dxr2 <option1:option2:...>โ this option is used to control thedxr2video output driver.ar-mode=<value>โ aspect ratio mode (0= normal,1= pan-and-scan,2= letterbox (default))iec958-encodedโ set iec958 output mode to encoded.iec958-decodedโ set iec958 output mode to decoded (default).macrovision=<value>โ macrovision mode (0= off (default),1= agc,2= agc 2 colorstripe,3= agc 4 colorstripe)
muteโ cuts the sound output, silence era ๐unmuteโ brings the sound back, we're so back ๐ucode=<value>โ the path to the microcode
๐ฆ TV output ๐ฆ
75ireโ turns on 7.5 IRE output modeno75ireโ turns off 7.5 IRE output mode (this is the default)bwโ black & white TV output, vintage aesthetic โจcolorโ color TV output (default, bestie, we're in color)interlacedโ interlaced TV output (default)nointerlacedโ disables interlaced TV outputnorm=<value>โ sets the TV norm:ntsc(default),pal,pal60,palm,paln,palncโ pick your region's vibe, no capsquare-pixelโ sets pixel mode to squareccir601-pixelโ sets pixel mode to ccir601
๐ overlay ๐
cr-left=<0-500>โ sets the left cropping value (default:50)cr-right=<0-500>โ sets the right cropping value (default:300)cr-top=<0-500>โ sets the top cropping value (default:0)cr-bottom=<0-500>โ sets the bottom cropping value (default:0)ck-[r|g|b]=<0-255>โ sets the r(ed), g(reen) or b(lue) gain of the overlay color-key ๐ฅck-[r|g|b]min=<0-255>โ the minimum value for the respective color keyck-[r|g|b]max=<0-255>โ the maximum value for the respective color keyignore-cacheโ ignores the cached overlay settings, forget it ever happened ๐update-cacheโ updates the cached overlay settingsol-osdโ enables overlay onscreen displaynool-osdโ disables overlay onscreen display (default)ol[h|w|x|y]-cor=<-20-20>โ adjusts the overlay size (h,w) and position (x,y) in case it doesn't match the window perfectly (default:0) โ a little nudge, a little wiggle ๐ซถoverlayโ activates overlay (default)nooverlayโ activates TV-outoverlay-ratio=<1-2500>โ tunes the overlay (default:1000)
-fbmode <modename>(-vo fbdev only) โ changes the video mode to the one labeled as<modename>in/etc/fb.modes
โ ๏ธ NOTE: VESA framebuffer does not support mode changing. Not me getting rejected by VESA ๐ญ
-fbmodeconfig <filename>(-vo fbdev only) โ overrides the framebuffer mode configuration file (default:/etc/fb.modes)-fs(also see-zoom) โ fullscreen playback. It centers the movie and paints black bands around it. Lowkey iconic, but not supported by all video output drivers โ vibe check your driver first ๐-fsmode-dontuse <0-31>(OBSOLETE, use the-fsoption instead) โ try this option if you still experience fullscreen problems. It's giving deprecated energy, but she's still here ๐ซถ-fstype <type1,type2,...>(X11 only) โ specifies a priority list of fullscreen modes to be used. You can negate the modes by prefixing them with-. If you're getting problems like the fullscreen window being covered by other windows, try a different order โ the way that window stacking is a whole thing ๐
โ ๏ธ NOTE: See -fstype help for a full list of available modes.
The available types are, bestie:
aboveโ uses the_NETWM_STATE_ABOVEhint if availablebelowโ uses the_NETWM_STATE_BELOWhint if availablefullscreenโ uses the_NETWM_STATE_FULLSCREENhint if availablelayerโ uses the_WIN_LAYERhint with the default layerlayer=<0...15>โ uses the_WIN_LAYERhint with the given layer numbernetwmโ forces NETWM stylenoneโ clears the list of modes; you can add modes to enable afterwardstays_on_topโ uses the_NETWM_STATE_STAYS_ON_TOPhint if available
EXAMPLE: โญ
layer,stays_on_top,above,fullscreenโ the default order, and it'll be used as a fallback if incorrect or unsupported modes are specified-fullscreenโ fixes fullscreen switching on OpenBox 1.x (slay, we love a fix)
-fs-border-left <pixels>-fs-border-right <pixels>-fs-border-top <pixels>-fs-border-bottom <pixels>
Specifies extra borders in fullscreen mode. The borders apply to all displayed elements: video, OSD and EOSD. The number of pixels is specified in terms of screen resolution. Currently only supported by the gl video output driver โ everyone else, sit down ๐ช
-gamma <-100-100>โ adjusts the gamma of the video signal (default:0). Not supported by all video output drivers. Brightness queen behavior ๐ธ-geometry x[%][:y[%]]or[WxH][+-x+-y]โ adjusts where the output is on the screen initially. Thexandyspecs are in pixels, measured from the top-left of the screen to the top-left of the image being displayed, BUT if you slap a percentage sign after the argument it turns the value into a percentage of the screen size in that direction. It also supports the standard X11-geometryoption format, where e.g.+10-50means "place 10 pixels from the left border and 50 pixels from the lower border" and--20+-10means "place 20 pixels beyond the right and 10 pixels beyond the top border". If an external window is specified using the-widoption, then thexandycoordinates are relative to the top-left corner of the window rather than the screen. The coordinates are relative to the screen given with-screenfor the video output drivers that fully support-screen(direct3d,gl,gl_tiled,vdpau,x11,xv,corevideo).
โ ๏ธ NOTE: This option is only supported by thex11,xmga,xv,xvidix,gl,gl_tiled,direct3d,directx,fbdev,sdl,dfxfbandcorevideovideo output drivers. Check the roster before you try it, bestie ๐
EXAMPLE: โจ
50:40โ places the window atx=50,y=4050%:50%โ places the window in the middle of the screen (main character placement, honestly ๐)100%โ places the window at the middle of the right edge of the screen100%:100%โ places the window at the bottom right corner of the screen
-gui-wid <window ID>(also see-wid) (GUI only) โ tells the GUI to also use an X11 window and stick itself to the bottom of the video, which is useful to embed a mini-GUI in a browser (with the MPlayer plugin, for instance). Mini-GUI in a browser?? Obsessed ๐ฆ-hue <-100-100>โ adjusts the hue of the video signal (default:0). You can get a colored negative of the image with this option. Not supported by all video output drivers. Colored negative is such a look ๐-monitor-dotclock <range[,range,...]>(-vo fbdev and vesa only) โ specifies the dotclock or pixelclock range of the monitor-monitor-hfreq <range[,range,...]>(-vo fbdev and vesa only) โ specifies the horizontal frequency range of the monitor-monitor-vfreq <range[,range,...]>(-vo fbdev and vesa only) โ specifies the vertical frequency range of the monitor-monitoraspect <ratio>(also see-aspect) โ sets the aspect ratio of your monitor or TV screen. A value of0disables a previous setting (e.g. in the config file). Overrides the-monitorpixelaspectsetting if enabled.
EXAMPLE: ๐
-monitoraspect 4:3 or 1.3333
-monitoraspect 16:9 or 1.7777
-monitorpixelaspect <ratio>(also see-aspect) โ sets the aspect of a single pixel of your monitor or TV screen (default:1). A value of1means square pixels, which is correct for (almost?) all LCDs. The "(almost?)" is doing so much heavy lifting here ngl ๐ญ-name(X11 only) โ sets the window class name-nodoubleโ disables double buffering, mostly for debugging purposes. Double buffering fixes flicker by storing two frames in memory, and displaying one while decoding another. It can affect OSD negatively, but often removes OSD flickering. Trade-offs, bestie, trade-offs ๐-nograbpointerโ do not grab the mouse pointer after a video mode change (-vm). Useful for multihead setups. Let the mouse be free ๐ฆ-nokeepaspectโ do not keep window aspect ratio when resizing windows. Only works with thex11,xv,xmga,xvidix,directxvideo output drivers. Furthermore under X11 your window manager has to honor window aspect hints โ so like, your WM has to cooperate, and that's not always a given ๐-ontopโ makes the player window stay on top of other windows. Supported by video output drivers which use X11, except SDL, as well asdirectx,corevideo,quartz,ggiandgl_tiled. Main character energy, always in front ๐-panscan <0.0-1.0>โ enables pan-and-scan functionality (cropping the sides of e.g. a 16:9 movie to make it fit a 4:3 display without black bands). The range controls how much of the image gets cropped. Only works with thedirectx,xv,xmga,mga,gl,gl_tiled,quartz,corevideoandxvidixvideo output drivers.
โ ๏ธ NOTE: Values between-1and0are allowed as well, but highly experimental and may crash or worse. Use at your own risk! The "or worse" is sending me ๐ญ please be careful
-panscanrange <-19.0-99.0>(experimental) โ changes the range of the pan-and-scan functionality (default:1). Positive values mean multiples of the default range. Negative numbers mean you can zoom in up to a factor of-panscanrange+1. E.g.-panscanrange -3allows a zoom factor of up to 4. This feature is experimental โ we're in beta territory, bestie ๐งช-border-pos-x <0.0-1.0>(-vo gl,xv,vdpau,direct3d only, default0.5) โ when black borders are added to adjust for aspect, this determines where they're placed.0.0places borders on the right,1.0on the left. Values outside the range0.0-1.0will add extra black borders on one side and remove part of the image on the other side. Chaos option, honestly ๐-border-pos-y <0.0-1.0>(-vo gl,xv,vdpau,direct3d only, default0.5) โ as-border-pos-xbut for top/bottom borders.0.0places borders on the bottom,1.0on the top.-monitor-orientation <0-3>(experimental) โ rotates the display by 90, 180 or 270 degrees. It rotates the OSD too, not just the video image itself โ the whole vibe gets rotated, no cap. Currently only supported by theglvideo output driver. For all other video outputs-vf ass,expand=osd=1,rotate=ncan be used, and in the future this might even happen automatically. The future is now-ish ๐ฎ-refreshrate <Hz>โ sets the monitor refreshrate in Hz. Currently only supported by-vo directxcombined with the-vmoption.-rootwinโ plays the movie directly in the root window (aka your desktop background) ๐ผ๏ธ. Lowkey a serve, but heads up: your desktop background images may cover the movie window, so it's giving "hidden under the wallpaper" energy. Only works with thex11,xv,xmga,xvidix,quartz,corevideoanddirectxvideo output drivers.-saturation <-100-100>โ adjusts the saturation of the video signal (default:0). Want grayscale? You can literally get grayscale output with this one ๐ฉถ. Ngl not every video output driver supports it though.-screenh <pixels>โ tells the video output driver your screen height, for the ones that don't know the resolution themselves (looking at you,fbdev,x11and TV-out).-screenw <pixels>โ same vibe as above but for screen width ๐. For video output drivers that don't know the screen resolution likefbdev,x11and TV-out.-(no)stop-xscreensaver(X11 only) โ turns off xscreensaver at startup and turns it back on again when you exit (default: enabled). Iconic behaviour honestly. If your screensaver supports neither the XSS nor the XResetScreenSaver API, please use-heartbeat-cmdinstead ๐ซถ.-title(also see-use-filename-title) โ sets the window title โจ. Supported by X11-based video output drivers.-use-filename-title(also see-title) โ sets the window title using the media filename, but only when it's not already set with-title. Supported by X11-based video output drivers.-vmโ tries to change to a different video mode. Supported by thedga,x11,xv,sdlanddirectxvideo output drivers. If you use it with thedirectxvideo output driver, the-screenw,-screenh,-bppand-refreshrateoptions can be used to set the new display mode ๐-vsyncโ enables VBI for thevesa,dfbmgaandsvgavideo output drivers.-wid <window ID>(also see-gui-wid) (X11, OpenGL and DirectX only) โ tells MPlayer to attach to an existing window ๐ช. Super useful for embedding MPlayer in a browser (e.g. the plugger extension). Fair warning: this option fills the given window completely, so aspect scaling, panscan, etc. are no longer handled by MPlayer โ the application that created the window has to manage all that now. No cap, it's a whole handoff situation.-screen <-2-...>(alias for-xineramascreen) โ in Xinerama configurations (i.e. a single desktop spanning across multiple displays) this tells MPlayer which screen to display the movie on ๐ฅ๏ธโจ. Here's the lore:- A value of
-2means fullscreen across the whole virtual display (Xinerama information is completely ignored in this case). -1means fullscreen on the display the window is currently on.- The initial position set via the
-geometryoption is relative to the specified screen. - It'll usually only work with
"-fstype -fullscreen"or"-fstype none". - This option is not suitable for just setting the startup screen (because it will always display on the given screen in fullscreen mode) โ
-geometryis the best available for that purpose currently. Sorry bestie, that's just the situation ๐ญ. - Supported by at least the
direct3d,gl,gl_tiled,x11,xvandcorevideovideo output drivers.
- A value of
-zrbw(-vo zronly) โ displays in black and white ๐ค๐ค. For optimal performance, you can combine this with'-lavdopts gray'.-zrcrop <[width]x[height]+[x offset]+[y offset]>(-vo zronly) โ selects a part of the input image to display. Use this option multiple times and it switches on cinerama mode ๐ฌ. In cinerama mode the movie is distributed over more than one TV (or beamer) to create a larger image. The tea โ: options appearing after the n-th-zrcropapply to the n-th MJPEG card, and each card should at least have a-zrdevin addition to the-zrcrop. For examples, see the output of-zrhelpand the Zr section of the documentation.-zrdev <device>(-vo zronly) โ specifies the device special file that belongs to your MJPEG card. By default thezrvideo output driver just takes the firstv4ldevice it can find ๐.-zrfd(-vo zronly) โ forces decimation ๐ . Here's the deal: decimation, as specified by-zrhdecand-zrvdec, only happens if the hardware scaler can stretch the image to its original size. Use this option to force it anyway.-zrhdec <1|2|4>(-vo zronly) โ horizontal decimation: asks the driver to send only every 2nd or 4th line/pixel of the input image to the MJPEG card, and use the scaler of the MJPEG card to stretch the image back to its original size.-zrhelp(-vo zronly) โ displays a list of all-zr*options, their default values and a cinerama mode example ๐. Little cheatsheet moment.-zrnorm <norm>(-vo zronly) โ specifies the TV norm asPALorNTSC(default: no change).-zrquality <1-20>(-vo zronly) โ a number from1(best) to20(worst) representing the JPEG encoding quality.-zrvdec <1|2|4>(-vo zronly) โ vertical decimation: asks the driver to send only every 2nd or 4th line/pixel of the input image to the MJPEG card, and use the scaler of the MJPEG card to stretch the image back to its original size.-zrxdoff <x display offset>(-vo zronly) โ if the movie is smaller than the TV screen, this specifies the x offset from the upper-left corner of the TV screen (default: centered).-zrydoff <y display offset>(-vo zronly) โ same energy but for the y offset from the upper-left corner of the TV screen, when the movie is smaller than the TV screen (default: centered).
๐ VIDEO OUTPUT DRIVERS (MPLAYER ONLY) ๐
Video output drivers are interfaces to different video output facilities, bestie. They're literally the little adapters between MPlayer and whatever screen situation you've got going on. The syntax is:
-vo <driver1[:suboption1[=value]:...],driver2,...[,]>
Specify a priority list of video output drivers to be used ๐.
If the list has a trailing ',' MPlayer will fall back on drivers not contained in the list. Suboptions are optional and can mostly be omitted. Flexible queen behaviour.
NOTE: See -vo help for a list of compiled-in video output drivers.
EXAMPLE:
-vo xmga,xv,
Try the Matrox X11 driver, then the Xv driver, then others.
-vo directx:noaccel
Uses the DirectX driver with acceleration features turned off.
Available video output drivers are:
xv (X11 only)
Uses the XVideo extension of XFree86 4.x to enable hardware accelerated playback ๐ฅ. If you cannot use a hardware specific driver, this is probably the best option. For information about what colorkey is used and how it is drawn, run MPlayer with the -v option and look out for the lines tagged with [xv common] at the beginning. iykyk ๐
adaptor=<number>โ select a specific XVideo adaptor (checkxvinforesults).port=<number>โ select a specific XVideo port.ck=<cur|use|set>โ select the source from which the colorkey is taken (default:cur).curโ the default: takes the colorkey currently set in Xv.useโ use but do not set the colorkey from MPlayer (use the-colorkeyoption to change it).setโ same asusebut also sets the supplied colorkey.
ck-method=<man|bg|auto>โ sets the colorkey drawing method (default:man).manโ draw the colorkey manually (reduces flicker in some cases).bgโ set the colorkey as window background.autoโ let Xv draw the colorkey.
x11 (X11 only)
Shared memory video output driver without hardware acceleration that works whenever X11 is present ๐ซถ. Reliable, lowkey, always there for you.
xover (X11 only)
Adds X11 support to all overlay based video output drivers โจ. Currently only supported by tdfx_vid.
<vo_driver>โ select the driver to use as source to overlay on top of X11.
๐ vdpau (with -vc ffmpeg2vdpau, ffwmv3vdpau, ffvc1vdpau, ffh264vdpau or ffodivxvdpau)
Okay so this is the hardware-decode icon. Video output that uses VDPAU to decode video via hardware. And before you come for her โ she also supports displaying of software-decoded video. Versatile queen. ๐
sharpen=<-1-1>โ For positive values, apply a sharpening algorithm to the video, for negative values a blurring algorithm (default:0). Yes bestie, one flag, two moods. ๐denoise=<0-1>โ Apply a noise reduction algorithm to the video (default:0, no noise reduction).deint=<0-4>โ Select the deinterlacer (default:0). All modes >0respect-field-dominance. Pick your fighter:0โ no deinterlacing1โ Show only first field, similar to-vf field.2โ Bob deinterlacing, similar to-vf tfields=1.3โ motion adaptive temporal deinterlacing. May lead to A/V desync with slow video hardware and/or high resolution. This is the default if "D" is used to enable deinterlacing. ๐ญ4โ motion adaptive temporal deinterlacing with edge-guided spatial interpolation. Needs fast video hardware. Like, genuinely fast, don't play with her. ๐ฅ
chroma-deintโ Makes temporal deinterlacers operate both on luma and chroma (default). Usenochroma-deintto solely use luma and speed up advanced deinterlacing. Useful with slow video memory. Work smarter not harder fr.pullupโ Try to skip deinterlacing for progressive frames, useful for watching telecined content, needs fast video hardware for high resolutions. Only works with motion adaptive temporal deinterlacing. Loves a specific situation, honestly relatable. ๐colorspaceโ Select the color space for YUV to RGB conversion. In general BT.601 should be used for standard definition (SD) content and BT.709 for high definition (HD) content. Using incorrect color space results in slightly under or over saturated and shifted colors. So get it right, she's not subtle about it. โจ0โ Guess the color space based on video resolution. Video with width >=1280or height >576is assumed to be HD and BT.709 color space will be used.1โ Use ITU-R BT.601 color space (default).2โ Use ITU-R BT.709 color space.3โ Use SMPTE-240M color space.
hqscalingโ the quality dial:0โ Use default VDPAU scaling (default).1-9โ Apply high quality VDPAU scaling (needs capable hardware).
force-mixerโ Forces the use of the VDPAU mixer, which implements all above options (default). Usenoforce-mixerto allow displaying BGRA colorspace. (Disables all above options and the hardware equalizer if image format BGRA is actually used.) So like, read that before you act surprised bestie. ๐
๐ซถ dga (X11 only)
Play video through the XFree86 Direct Graphics Access extension. Considered obsolete. She's giving vintage, and not in the cute thrifted way โ more like a flip phone in 2025. Still iconic history though. ๐
๐ง sdl (SDL only, buggy/outdated)
Highly platform independent SDL (Simple Directmedia Layer) library video output driver. Since SDL uses its own X11 layer, MPlayer X11 options do not have any effect on SDL. Note that it has several minor bugs (-vm/-novm is mostly ignored, -fs behaves like -novm should, window is in top-left corner when returning from fullscreen, panscan is not supported, ...). Not me listing her whole red flag list โ but she's still serving portability, so we keep her. ๐ญ
driver=<driver>โ Explicitly choose the SDL driver to use.(no)forcexvโ Use XVideo through thesdlvideo output driver (default:forcexv).(no)hwaccelโ Use hardware accelerated scaler (default:hwaccel).
๐ธ vidix
VIDIX (VIDeo Interface for *niX) is an interface to the video acceleration features of different graphics cards. Very fast video output driver on cards that support it. Like she's fast fast, no cap. โก
<subdevice>โ Explicitly choose the VIDIX subdevice driver to use. Available subdevice drivers arecyberblade,ivtv,mach64,mga_crtc2,mga,nvidia,pm2,pm3,radeon,rage128,s3,sh_veu,sis_vidandunichrome. Pick your girlies. ๐
๐ xvidix (X11 only)
X11 frontend for VIDIX. Same energy, X11 outfit.
<subdevice>โ same asvidix
โญ cvidix
Generic and platform independent VIDIX frontend, can even run in a text console with nVidia cards. Genuinely unbothered, runs anywhere, main character energy. ๐
<subdevice>โ same asvidix
๐ฆ winvidix (Windows only)
Windows frontend for VIDIX. That's it, that's the whole personality.
<subdevice>โ same asvidix
๐ฅ direct3d (Windows only) (BETA CODE!)
Video output driver that uses the Direct3D interface (useful for Vista). Heads up bestie โ the manpage literally labels this BETA CODE!, so treat her like a work in progress, because she is. ๐
๐
directx (Windows only)
Video output driver that uses the DirectX interface.
noaccelโ Turns off hardware acceleration. Try this option if you have display problems. The "have you tried turning it off" of video output. ๐
๐ kva (OS/2 only)
Video output driver that uses the libkva interface. Niche, retro, deeply committed to her niche. Respect.
snapโ Force SNAP mode.woโ Force WarpOverlay! mode.diveโ Force DIVE mode.(no)t23โ Enable or disable workaround for T23 laptop (default: disabled). Try to enable this option if your video card supports upscaling only.
๐ quartz (Mac OS X only)
Mac OS X Quartz video output driver. Under some circumstances, it might be more efficient to force a packed YUV output format, with e.g. -vf format=yuy2. Efficiency hack, we love to see it. โจ
device_id=<number>โ Choose the display device to use in fullscreen.fs_res=<width>:<height>โ Specify the fullscreen resolution (useful on slow systems).
๐ corevideo (Mac OS X 10.4 or 10.3.9 with QuickTime 7)
Mac OS X CoreVideo video output driver. Very specific era, very specific girlie. ๐
device_id=<number>โ DEPRECATED, use-screeninstead. Choose the display device to use for fullscreen or set it to-1to always use the same screen the video window is on (default:-1- auto). It's deprecated babes, she said it herself, don't @ me. ๐ญshared_bufferโ Write output to a shared memory buffer instead of displaying it and try to open an existing NSConnection for communication with a GUI.buffer_name=<name>โ Name of the shared buffer created withshm_openas well as the name of the NSConnection MPlayer will try to open (default:"mplayerosx"). Settingbuffer_nameimplicitly enablesshared_buffer. Sneaky little auto-enable, we stan a self-starting queen. ๐ซถ
๐ง fbdev (Linux only)
Uses the kernel framebuffer to play video. Raw, direct, no middleman โ the bare-metal bestie. โก
<device>โ Explicitly choose the fbdev device name to use (e.g./dev/fb0) or the name of the VIDIX subdevice if the device name starts with 'vidix' (e.g. 'vidixsis_vid' for thesisdriver). Yes the prefix is doing a lot of work there, but that's the rule. ๐
๐ธ fbdev2 (Linux only)
Uses the kernel framebuffer to play video, alternative implementation. Same vibe, different arc.
<device>โ Explicitly choose the fbdev device name to use (default:/dev/fb0).
โญ vesa
Very general video output driver that should work on any VESA VBE 2.0 compatible card. The "will show up to literally anything" friend of the group. ๐
(no)dgaโ Turns DGA mode on or off (default: on).neotv_palโ Activate the NeoMagic TV out and set it to PAL norm.neotv_ntscโ Activate the NeoMagic TV out and set it to NTSC norm.vidixโ Use the VIDIX driver.lvo:โ Activate the Linux Video Overlay on top of VESA mode.
๐ฆ svga
Play video using the SVGA library. Old-school cool, honestly.
<video mode>โ Specify video mode to use. The mode can be given in a<width>x<height>x<colors>format, e.g.640x480x16Mor be a graphics mode number, e.g.84.bbosdโ Draw OSD into black bands below the movie (slower). Cute placement, costs you speed. Trade-offs bestie. ๐ญnativeโ Use only native drawing functions. This avoids direct rendering, OSD and hardware acceleration. So, like, everything fun โ gone. But sometimes that's the move. ๐retraceโ Force frame switch on vertical retrace. Usable only with-double. It has the same effect as the-vsyncoption.sqโ Try to select a video mode with square pixels. No stretching, no distortion, just clean geometry. โจvidixโ Usesvgawith VIDIX.
โจ gl โ the OpenGL video output driver, simple version โจ
Okay bestie, so this is the OpenGL video output driver, the simple version. One thing to know before you even start: your video size must be smaller than the maximum texture size of your OpenGL implementation, no cap. It's designed to work even with the most basic OpenGL implementations, but it also flexes newer extensions when they're there, which is what lets it support more colorspaces and direct rendering. For optimal speed, try adding the options:
-dr -noslices
Real talk though โ this code performs very few checks, so if some feature just isn't working, it might be because your card/OpenGL implementation doesn't support it, even if you don't get any error message at all. Use glxinfo or a similar tool to display the supported OpenGL extensions. Slay.
backend=<n>โ Select the backend/OpenGL implementation to use (default:-1).-1: Autoselect0: Win32/WGL1: X11/GLX2: SDL3: X11/EGL (highly experimental)4: OSX/Cocoa5: Android (very bad hack, only for testing)
(no)ati-hackโ ATI drivers may give a corrupted image when PBOs are used (when using-dror force-pbo). This option fixes this, at the expense of using a bit more memory.(no)force-pboโ Always uses PBOs to transfer textures even if this involves an extra copy. Currently this gives a little extra speed with NVidia drivers and a lot more speed with ATI drivers. May need-noslicesand theati-hacksuboption to work correctly.(no)scaled-osdโ Changes the way the OSD behaves when the size of the window changes (default: disabled). When enabled it behaves more like the other video output drivers, which is better for fixed-size fonts. Disabled looks much better with FreeType fonts and uses the borders in fullscreen mode. Does not work correctly with ass subtitles (see-ass) โ you can instead render them without OpenGL support via-vf ass.osdcolor=<0xAARRGGBB>โ Color for OSD (default:0x00ffffff, which corresponds to non-transparent white).rectangle=<0,1,2>โ Select usage of rectangular textures which saves video RAM, but often is slower (default:0).0: Use power-of-two textures (default).1: Use theGL_ARB_texture_rectangleextension.2: Use theGL_ARB_texture_non_power_of_twoextension. In some cases only supported in software and thus very slow.
swapinterval=<n>โ Minimum interval between two buffer swaps, counted in displayed frames (default:1).1is equivalent to enabling VSYNC,0to disabling VSYNC. Values below 0 will leave it at the system default. This limits the framerate to (horizontal refresh rate /n). RequiresGLX_SGI_swap_controlsupport to work. With some (most/all?) implementations this only works in fullscreen mode.ycbcrโ Use theGL_APPLE_ycbcr_422extension to convert YUV to RGB. Default is disabled ifyuv=is specified, auto-detected otherwise. Note that this will enable a few special settings to get into a special driver fast-path.yuv=<n>โ Select the type of YUV to RGB conversion. The default is auto-detection deciding between values0and2.0: Use software conversion. Compatible with all OpenGL versions. Provides brightness, contrast and saturation control.1: Use register combiners. This uses an nVidia-specific extension (GL_NV_register_combiners). At least three texture units are needed. Provides saturation and hue control. This method is fast but inexact.2: Use a fragment program using the POW instruction. Needs theGL_ARB_fragment_programextension and at least three texture units. Provides brightness, contrast, saturation, hue and gamma control. Gamma can also be set independently for red, green and blue. Method4is usually faster.3: Same as2. They exist as distinct values for legacy reasons, MPlayer now inserts the extra instructions for gamma control on-demand.4: Use a fragment program with additional lookup. Needs theGL_ARB_fragment_programextension and at least four texture units. Provides brightness, contrast, saturation, hue and gamma control. Gamma can also be set independently for red, green and blue.5: Use ATI-specific method (for older cards). This uses an ATI-specific extension (GL_ATI_fragment_shaderโ notGL_ARB_fragment_shader!). At least three texture units are needed. Provides saturation and hue control. This method is fast but inexact.6: Use a 3D texture to do conversion via lookup. Needs theGL_ARB_fragment_programextension and at least four texture units. Extremely slow (software emulation) on some (all?) ATI cards since it uses a texture with border pixels. Provides brightness, contrast, saturation, hue and gamma control. Gamma can also be set independently for red, green and blue. Speed depends more on GPU memory bandwidth than other methods.
colorspaceโ Select the color space for YUV to RGB conversion.0โ Use the formula used normally by MPlayer (default).1โ Use ITU-R BT.601 color space.2โ Use ITU-R BT.709 color space.3โ Use SMPTE-240M color space.
levelconv=<n>โ Select the brightness level conversion to use for the YUV to RGB conversion.0โ Convert TV to PC levels (default).1โ Convert PC to TV levels.2โ Do not do any conversion.
lscale=<n>โ Select the scaling function to use for luminance scaling. Only valid for yuv modes2,3,4and6.0โ Use simple linear filtering (default).1โ Use bicubic B-spline filtering (better quality). Needs one additional texture unit. Older cards will not be able to handle this for chroma at least in fullscreen mode.2โ Use cubic filtering in horizontal, linear filtering in vertical direction. Works on a few more cards than method1.3โ Same as1but does not use a lookup texture. Might be faster on some cards.4โ Use experimental unsharp masking with 3x3 support and a default strength of0.5(seefilter-strength).5โ Use experimental unsharp masking with 5x5 support and a default strength of0.5(seefilter-strength).64โ Use nearest-neighbor scaling.
cscale=<n>โ Select the scaling function to use for chrominance scaling. For details seelscale.filter-strength=<value>โ Set the effect strength for thelscale/cscalefilters that support it.noise-strength=<value>โ Set how much noise to add.0to disable (default),1.0for level suitable for dithering to 6 bit.stereo=<value>โ Select a method for stereo display. You may have to use-aspectto fix the aspect value. Add32to swap left and right side. Experimental, do not expect too much from it.0โ normal 2D display1โ Convert side by side input to full-color red-cyan stereo.2โ Convert side by side input to full-color green-magenta stereo.3โ Convert side by side input to quadbuffered stereo. Only supported by very few OpenGL cards.4โ Mix left and right in a pixel pattern. Pattern is given bystippleoption.
stipple=<bitโ Lowest 16 bit give the 4x4 pattern to use (default:0x0f0f). Examples to try:0x0f0f,0xf0f0: horizontal lines;0xaaaa,0x5555: vertical lines;0xa5a5,0x5a5a: checkerboard pattern
The following options are only useful if writing your own fragment programs. ๐
customprog=<filename>โ Load a custom fragment program from <filename>. SeeTOOLS/edgedect.fpfor an example.customtex=<filename>โ Load a custom "gamma ramp" texture from <filename>. This can be used in combination withyuv=4or with thecustomprogoption.(no)customtlinโ If enabled (default) useGL_LINEARinterpolation, otherwise useGL_NEARESTforcustomtextexture.(no)customtrectโ If enabled, usetexture_rectangleforcustomtextexture. Default is disabled.(no)mipmapgenโ If enabled, mipmaps for the video are automatically generated. This should be useful together with thecustomprogand theTXBinstruction to implement blur filters with a large radius. For most OpenGL implementations this is very slow for any non-RGB formats. Default is disabled.
Okay bestie, the main gl driver obviously has โจopinionsโจ about its sub-options, and here's the disclaimer before we get into them:
Normally there's literally no reason to touch any of these โ they lowkey exist for testing purposes only. ๐
(no)glfinishโ callsglFinish()before swapping buffers. It's slower, but in some cases gives you more correct output (default: disabled).(no)manyfmtsโ turns on support for more color formats (RGB and BGR ones) (default: enabled). Needs OpenGL version >= 1.2, no cap.slice-height=<0-...>โ how many lines get copied to the texture in one piece (default: 0).0means the whole image, periodt.
NOTE: if a YUV colorspace is being used (peep theyuvsuboption), special rules kick in: - If the decoder uses slice rendering (see-noslices), this setting has no effect โ the size of the slices as provided by the decoder is what gets used, fr fr. - If the decoder does not use slice rendering, the default is16.
(no)osdโ enable or disable support for OSD rendering via OpenGL (default: enabled). Heads up: this option is for testing; if you actually wanna disable the OSD, use-osdlevel 0instead. ๐ซถ(no)aspectโ enable or disable aspect scaling and pan-and-scan support (default: enabled). Disabling it might increase speed, bestie. โก
๐ gl_tiled
A variant of the OpenGL video output driver. It supports videos larger than the maximum texture size, but it's missing a lot of the advanced features and optimizations of the gl driver, and it's unlikely to be extended further. It's giving "side quest driver". ๐ญ
(no)glfinishโ same asgl(default: enabled).yuv=<n>โ picks the type of YUV to RGB conversion. If you set it to anything except0, OSD will be disabled and brightness, contrast and gamma setting is only available via the global X server settings. Apart from all that, the values mean the same thing as for-vo gl.
๐ฉ matrixview
OpenGL-based renderer that creates a Matrix-like running-text effect. Very main character energy, honestly. ๐
cols=<n>โ number of text columns to display. Very low values (< 16) will probably fail due to scaler limitations. Values not divisible by 16 may cause issues as well. ๐rows=<n>โ number of text rows to display. Very low values (< 16) will probably fail due to scaler limitations. Values not divisible by 16 may cause issues as well. (Yes, same warning, it's not a typo, bestie.)
๐ซฅ null
Produces no video output. Useful for benchmarking. That's it, that's the driver. ๐
๐ aa
ASCII art video output driver that works on a text console.
NOTE: the driver does not handle-aspectcorrectly. ๐ฌ HINT: you probably have to specify-monitorpixelaspect. Try:mplayer -vo aa -monitorpixelaspect 0.5
๐ฆ caca
Color ASCII art video output driver that works on a text console. Same vibe, but rainbow. ๐
๐ก bl
Video playback using the Blinkenlights UDP protocol. Heads up: this driver is highly hardware specific.
<subdevice>โ explicitly choose the Blinkenlights subdevice driver to use. It's something likearcade:host=localhost:2323orhdl:file=name1,file=name2. You must specify a subdevice. No subdevice, no playback, periodt.
๐ง ggi
GGI graphics system video output driver.
<driver>โ explicitly choose the GGI driver to use. Replace any,that would appear in the driver string by a.. Little punctuation glow-up, yk?
๐ directfb
Play video using the DirectFB library.
(no)inputโ use DirectFB instead of the MPlayer keyboard code (default: enabled).buffermode=single|double|tripleโ double and triple buffering give the best results if you wanna avoid tearing issues. Triple buffering is more efficient than double buffering since it doesn't block MPlayer while waiting for the vertical retrace. Single buffering should be avoided (default:single). Like, genuinely, avoid it. ๐fieldparity=top|bottomโ controls the output order for interlaced frames (default: disabled). Valid values aretop= top fields first,bottom= bottom fields first. This option doesn't have any effect on progressive film material like most MPEG movies are. You need to enable it if you've got tearing issues or unsmooth motions watching interlaced film material.layer=Nโ will force the layer with IDNfor playback (default:-1โ auto).dfbopts=<list>โ specify a parameter list for DirectFB.
๐ dfbmga
Matrox G400/G450/G550 specific video output driver that uses the DirectFB library to make use of special hardware features. Enables CRTC2 (second head), displaying video independently of the first head. Two heads, one icon. ๐
(no)inputโ same asdirectfb(default: disabled).buffermode=single|double|tripleโ same asdirectfb(default:triple).fieldparity=top|bottomโ same asdirectfb.(no)besโ enable the use of the Matrox BES (backend scaler) (default: disabled). Gives very good results concerning speed and output quality, since interpolated picture processing is done in hardware. Works only on the primary head.(no)spicโ make use of the Matrox sub picture layer to display the OSD (default: enabled).(no)crtc2โ turn on TV-out on the second head (default: enabled). The output quality is amazing, as it's a full interlaced picture with proper sync to every odd/even field. Chef's kiss. ๐tvnorm=pal|ntsc|autoโ will set the TV norm of the Matrox card without needing to modify/etc/directfbrc(default: disabled). Valid norms arepal= PAL,ntsc= NTSC. The special norm isauto(auto-adjust using PAL/NTSC), because it decides which norm to use by looking at the framerate of the movie. Detective behavior, honestly. ๐ต๏ธโโ๏ธ
๐ง mga (Linux only)
Matrox specific video output driver that makes use of the YUV back end scaler on Gxxx cards through a kernel module. If you've got a Matrox card, this is the fastest option. Slay.
<device>โ explicitly choose the Matrox device name to use (default:/dev/mga_vid).
๐ช xmga (Linux, X11 only)
The mga video output driver, but running in an X11 window. Same driver, windowed era.
<device>โ explicitly choose the Matrox device name to use (default:/dev/mga_vid).
๐ธ s3fb (Linux only) (also see -dr)
S3 Virge specific video output driver. Supports the card's YUV conversion and scaling, double buffering and direct rendering features. Use -vf format=yuy2 to get hardware-accelerated YUY2 rendering, which is much faster than YV12 on this card. Speed upgrade, bestie. ๐ฅ
<device>โ explicitly choose the fbdev device name to use (default:/dev/fb0).
๐ฎ wii (Linux only)
Nintendo Wii/GameCube specific video output driver. It's giving living room. ๐น๏ธ
๐ 3dfx (Linux only)
3dfx-specific video output driver that directly uses the hardware on top of X11. Only 16 bpp are supported โ that's the whole rule, don't fight it.
๐งต tdfxfb (Linux only)
This driver employs the tdfxfb framebuffer driver to play movies with YUV acceleration on 3dfx cards.
<device>โ explicitly choose the fbdev device name to use (default:/dev/fb0).
โญ tdfx_vid (Linux only)
3dfx-specific video output driver that works in combination with the tdfx_vid kernel module. Duo energy. ๐ค
<device>โ explicitly choose the device name to use (default:/dev/tdfx_vid).
๐ dxr2 (also see -dxr2) (DXR2 only)
Creative DXR2 specific video output driver.
<vo_driver>โ output video subdriver to use as overlay (x11,xv).
๐ฟ dxr3 (DXR3 only)
Sigma Designs em8300 MPEG decoder chip (Creative DXR3, Sigma Designs Hollywood Plus) specific video output driver. Also see the lavc video filter.
overlayโ activates the overlay instead of TV-out.prebufโ turns on prebuffering.syncโ will turn on the new sync-engine.norm=<norm>โ specifies the TV norm:0: does not change current norm (default).1: auto-adjust using PAL/NTSC.2: auto-adjust using PAL/PAL-60.3: PAL4: PAL-605: NTSC
<0-3>โ specifies the device number to use if you have more than one em8300 card.
๐บ v4l2 (requires Linux 2.6.22+ kernel)
Video output driver for V4L2 compliant cards with built-in hardware MPEG decoder. Also see the lavc video filter.
<device>โ explicitly choose the MPEG decoder device name to use (default:/dev/video16).<output>โ explicitly choose the TV-out output to be used for the video signal.
๐ก mpegpes (DVB only)
Video output driver for DVB cards that writes the output to an MPEG-PES file if no DVB card is installed. Backup plan icon. ๐
card=<1-4>โ specifies the device number to use if you've got more than one DVB output card (V3 API only, such as the 1.x.y series drivers). If it's not specified, MPlayer will search the first usable card.<filename>โ output filename (default:./grab.mpg).
๐ฅ zr (also see -zr* and -zrhelp)
Video output driver for a number of MJPEG capture/playback cards.
๐๏ธ zr2 (also see the zrmjpeg video filter)
Video output driver for a number of MJPEG capture/playback cards, second generation. Glow-up era. โจ
dev=<device>โ specifies the video device to use.norm=<PAL|NTSC|SECAM|auto>โ specifies the video norm to use (default:auto).(no)prebufโ (de)activate prebuffering, not yet supported. Yeah, it's a vibe-in-progress, don't @ me. ๐ญ
md5sum
Okay so this one is a whole little forensic vibe ๐ โ it calculates MD5 sums of each frame and writes them to a file. It only supports RGB24 and YV12 colorspaces. Genuinely useful for debugging, no cap.
outfile=<value>โ pick the output filename (default:./md5sums).
yuv4mpeg
Transforms the video stream into a sequence of uncompressed YUV 4:2:0 images and stores it in a file (default: ./stream.yuv). The format is literally the same one the mjpegtools crew uses, so this is the move if you want to process the video with the mjpegtools suite ๐. It supports the YV12 format.
If your source file is rockin' a different format and is interlaced, make sure to use -vf scale=::1 so the conversion uses interlaced mode. You can also combine it with the -fixed-vo option to concatenate files with the same dimensions and fps value. Chef's kiss ๐ซถ
interlacedโ write the output as interlaced frames, top field first.interlaced_bfโ write the output as interlaced frames, bottom field first.file=<filename>โ write the output to<filename>instead of the defaultstream.yuv.
NOTE: If you do not specify any option, the output is progressive (i.e. not interlaced). Default behavior stays default-ing, bestie.
gif89a
Outputs each frame into a single animated GIF file in the current directory ๐ฆ. It only supports RGB format with 24 bpp, and the output gets converted to 256 colors โ so, y'know, retro GIF energy.
<fps>โ float value to specify framerate (default:5.0).<output>โ specify the output filename (default:./out.gif).
NOTE: You must specify the framerate before the filename, or the framerate will end up being part of the filename. Not me warning you twice ๐
EXAMPLE:
mplayer video.nut -vo gif89a:fps=15:output=test.gif
jpeg
Outputs each frame into a JPEG file in the current directory ๐ธ. Each file takes the frame number padded with leading zeros as its name.
[no]progressiveโ specify standard or progressive JPEG (default:noprogressive).[no]baselineโ specify use of baseline or not (default:baseline).optimize=<0-100>โ optimization factor (default:100).smooth=<0-100>โ smooth factor (default:0).quality=<0-100>โ quality factor (default:75).outdir=<dirname>โ specify the directory to save the JPEG files to (default:./).subdirs=<prefix>โ create numbered subdirectories with the specified prefix to save the files in, instead of the current directory.maxfiles=<value>(subdirs only) โ maximum number of files to be saved per subdirectory. Must be equal to or larger than1(default:1000).
pnm
Outputs each frame into a PNM file in the current directory โจ. Each file takes the frame number padded with leading zeros as its name. It supports PPM, PGM and PGMYUV files in both raw and ASCII mode. Also see pnm(5), ppm(5) and pgm(5) โ the lore is out there.
ppmโ write PPM files (default).pgmโ write PGM files.pgmyuvโ write PGMYUV files. PGMYUV is like PGM, but it also contains the U and V plane, appended at the bottom of the picture ๐rawโ write PNM files in raw mode (default).asciiโ write PNM files in ASCII mode.outdir=<dirname>โ specify the directory to save the PNM files to (default:./).subdirs=<prefix>โ create numbered subdirectories with the specified prefix to save the files in, instead of the current directory.maxfiles=<value>(subdirs only) โ maximum number of files to be saved per subdirectory. Must be equal to or larger than1(default:1000).
png
Outputs each frame into a PNG file in the current directory ๐. Each file takes the frame number padded with leading zeros as its name. 24bpp RGB and BGR formats are supported.
z=<0-9>โ specifies the compression level.0is no compression,9is maximum compression.outdir=<dirname>โ specify the directory to save the PNG files to (default:./).prefix=<prefix>โ specify the prefix to be used for the PNG filenames (default: no prefix).alphaโ create PNG files with an alpha channel. Note that MPlayer in general does not support alpha, so this will only be useful in some rare cases ๐
mng
Outputs video into an animated MNG file using 24 bpp RGB images with lossless compression ๐.
output=<filename>โ specify the output filename (default:out.mng).
EXAMPLE:
mplayer video.mkv -vo mng:output=test.mng
tga
Outputs each frame into a Targa file in the current directory โญ. Each file takes the frame number padded with leading zeros as its name. The whole purpose of this video output driver is to have a simple lossless image writer you can use without any external library โ lowkey iconic for that. It supports the BGR[A] color format, with 15, 24 and 32 bpp. You can force a particular format with the format video filter.
EXAMPLE:
mplayer video.nut -vf format=bgr15 -vo tga
๐ฅ DECODING/FILTERING OPTIONS ๐ฅ
-ac <[-|+]codec1,[-|+]codec2,...[,]>โ specify a priority list of audio codecs to be used, according to their codec name incodecs.conf. Put a-before the codec name to omit it. Put a+before the codec name to force it โ and bestie, this will likely crash! ๐ญ If the list has a trailing,MPlayer will fall back on codecs not contained in the list.
NOTE: See -ac help for a full list of available codecs.
EXAMPLE:
-ac mp3acmโ force thel3codeca.acmMP3 codec.-ac mad,โ try libmad first, then fall back on others.-ac hwac3,a52,โ try hardware AC-3 passthrough, software AC-3, then others.-ac hwdts,โ try hardware DTS passthrough, then fall back on others.-ac -ffmp3,โ skip FFmpeg's MP3 decoder.
-af-adv <force=(0-7):list=(filters)>(also see-af) โ specify advanced audio filter options:force=<0-7>โ forces the insertion of audio filters to one of the following:0: Use completely automatic filter insertion (currently identical to1).1: Optimize for accuracy (default).2: Optimize for speed. Warning: Some features in the audio filters may silently fail, and the sound quality may drop ๐ฌ3: Use no automatic insertion of filters and no optimization. Warning: It may be possible to crash MPlayer using this setting ๐4: Use automatic insertion of filters according to0above, but use floating point processing when possible.5: Use automatic insertion of filters according to1above, but use floating point processing when possible.6: Use automatic insertion of filters according to2above, but use floating point processing when possible.7: Use no automatic insertion of filters according to3above, and use floating point processing when possible.
list=<filters>โ same as-af.
-afm <driver1,driver2,...>โ specify a priority list of audio codec families to be used, according to their codec name incodecs.conf. Falls back on the default codecs if none of the given codec families work. ๐ง
NOTE: See -afm help for a full list of available codec families.
EXAMPLE:
-afm ffmpegโ try FFmpeg's libavcodec codecs first.-afm acm,dshowโ try Win32 codecs first.
-aspect <ratio>(also see-zoom) โ override movie aspect ratio, in case the aspect information is incorrect or missing in the file being played. Fix-it energy ๐
EXAMPLE:
-aspect 4:3 or -aspect 1.3333
-aspect 16:9 or -aspect 1.7777
-noaspectโ disable automatic movie aspect ratio compensation. Hands off, MPlayer ๐ โโ๏ธ
-field-dominance <-1-1>โ set first field for interlaced content. Useful for deinterlacers that double the framerate:-vf tfields=1,-vf yadif=1and-vo vdpau:deint.-1โ auto (default): If the decoder does not export the appropriate information, it falls back to0(top field first).0โ top field first1โ bottom field first
-flipโ flip image upside-down. Gravity? Never heard of her ๐ฆ
-lavdopts <option1:option2:...>(DEBUG CODE) โ specify libavcodec decoding parameters. Separate multiple options with a colon.
EXAMPLE:
-lavdopts gray:skiploopfilter=all:skipframe=nonref
Available options are:
bitexactโ only use bit-exact algorithms in all decoding steps (for codec testing).bug=<value>โ hand-fix encoder bugs yourself, like you're doing surgery with a tiny spoon ๐ฉน0: nothing1: autodetect bugs (default)2(msmpeg4v3): some old lavc generated msmpeg4v3 files (no autodetection)4(mpeg4): Xvid interlacing bug (autodetected if fourcc==XVIX)8(mpeg4): UMP4 (autodetected if fourcc==UMP4)16(mpeg4): padding bug (autodetected)32(mpeg4): illegal vlc bug (autodetected per fourcc)64(mpeg4): Xvid and DivX qpel bug (autodetected per fourcc/version)128(mpeg4): old standard qpel (autodetected per fourcc/version)256(mpeg4): another qpel bug (autodetected per fourcc/version)512(mpeg4): direct-qpel-blocksize bug (autodetected per fourcc/version)1024(mpeg4): edge padding bug (autodetected per fourcc/version)
debug=<value>โ spill the tea on what the decoder is doing ๐0: disabled1: picture info2: rate control4: bitstream8: macroblock (MB) type16: per-block quantization parameter (QP)32: motion vector0x0040: motion vector visualization (use-noslices)0x0080: macroblock (MB) skip0x0100: startcode0x0200: PTS0x0400: error resilience0x0800: memory management control operations (H.264)0x1000: bugs0x2000: Visualize quantization parameter (QP), lower QP are tinted greener.0x4000: Visualize block types.
ec=<value>โ pick your error concealment strategy, aka how we cope when the stream is a mess ๐ญ1: Use strong deblock filter for damaged MBs.2: iterative motion vector (MV) search (slow)3: all (default)
er=<value>โ set your error resilience strategy ๐ก๏ธ0: disabled1: careful (Should work with broken encoders.)2: normal (default) (Works with compliant encoders.)3: aggressive (More checks, but might cause problems even for valid bitstreams.)4: very aggressive
fast(MPEG-2, MPEG-4, and H.264 only) โ turn on optimizations that straight-up do not comply to the specification and might potentially cause problems, like simpler dequantization, simpler motion compensation, assuming use of the default quantization matrix, assuming YUV 4:2:0 and skipping a few checks to detect damaged bitstreams. Speed at a price, bestie โกgrayโ grayscale only decoding (a bit faster than with color) ๐ฉถidct=<0-99>(see-lavcopts) โ for best decoding quality use the same IDCT algorithm for decoding and encoding. This may come at a price in accuracy, though ๐ฏlowres=<number>[,<w>]โ decode at lower resolutions. Low resolution decoding is not supported by all codecs, and it will often result in ugly artifacts. This is not a bug, but a side effect of not decoding at full resolution ๐0: disabled1: 1/2 resolution2: 1/4 resolution3: 1/8 resolution
If <w> is specified lowres decoding will be used only if the width of the video is major than or equal to <w>.
o=<key>=<value>[,<key>=<value>[,...]]โ Pass AVOptions to libavcodec decoder. Note, a patch to make theo=unneeded and pass all unknown options through the AVOption system is welcome. A full list of AVOptions can be found in the FFmpeg manual. Note that some options may conflict with MEncoder options ๐งฉ
EXAMPLE:
o=debug=pict
sb=<number>(MPEG-2 only) โ Skip the given number of macroblock rows at the bottom โฌ๏ธst=<number>(MPEG-2 only) โ Skip the given number of macroblock rows at the top โฌ๏ธskiploopfilter=<skipvalue>(H.264 only) โ Skips the loop filter (AKA deblocking) during H.264 decoding. Since the filtered frame is supposed to be used as reference for decoding dependent frames this has a worse effect on quality than not doing deblocking on e.g. MPEG-2 video. But at least for high bitrate HDTV this provides a big speedup with no visible quality loss ๐
<skipvalue> can be either one of the following:
none: Never skip.default: Skip useless processing steps (e.g. 0 size packets in AVI).nonref: Skip frames that are not referenced (i.e. not used for decoding other frames, the error cannot "build up").bidir: Skip B-Frames.nonkey: Skip all frames except keyframes.all: Skip all frames.
skipidct=<skipvalue>(MPEG-1/2 only) โ Skips the IDCT step. This degrades quality a lot of in almost all cases (seeskiploopfilterfor available skip values) ๐skipframe=<skipvalue>โ Skips decoding of frames completely. Big speedup, but jerky motion and sometimes bad artifacts (seeskiploopfilterfor available skip values) ๐ช๏ธthreads=<1-32>โ Maximum number of threads used for decoding. Not all decoders support threading and decoders with support might stay below the provided limit at their choice. (default:1) ๐งตvismv=<value>โ Visualize motion vectors, little arrows everywhere, very main character โจ0: disabled1: Visualize forward predicted MVs of P-frames.2: Visualize forward predicted MVs of B-frames.4: Visualize backward predicted MVs of B-frames.
vstatsโ Prints some statistics and stores them in./vstats_*.log. Receipts, in a file ๐wait_keyframeโ Wait for a keyframe before displaying anything. Avoids broken frames at startup or after seeking with some formats ๐๏ธ-noslicesโ Disable drawing video by 16-pixel height slices/bands, instead draws the whole frame in a single run. May be faster or slower, depending on video card and available cache. It has effect only withlibmpeg2andlibavcodeccodecs ๐งฑ-nosoundโ Do not play/encode sound. Useful for benchmarking ๐-novideoโ Do not play/encode video. In many cases this will not work, use-vc null -vo nullinstead ๐-pp <quality>(also see-vf pp) โ Set the DLL postprocess level. This option is no longer usable with-vf pp. It only works with Win32 DirectShow DLLs with internal postprocessing routines. The valid range of-ppvalues varies by codec, it is mostly0-6, where0=disable,6=slowest/best ๐-pphelp(also see-vf pp) โ Show a summary about the available postprocess filters and their usage ๐-ssf <mode>โ Specifies software scaler parameters ๐๏ธ
EXAMPLE:
-vf scale -ssf lgb=3.0
lgb=<0-100>โ gaussian blur filter (luma)cgb=<0-100>โ gaussian blur filter (chroma)ls=<-100-100>โ sharpen filter (luma)cs=<-100-100>โ sharpen filter (chroma)chs=<h>โ chroma horizontal shiftingcvs=<v>โ chroma vertical shifting
-stereo <mode>โ Select type of MP2/MP3 stereo output ๐ง0stereo1left channel2right channel
-sws <software scaler type>(also see-vf scaleand-zoom) โ Specify the software scaler algorithm to be used with the-zoomoption. This affects video output drivers which lack hardware acceleration, e.g.x11๐ผ๏ธ
Available types are:
0fast bilinear1bilinear2bicubic (good quality) (default)3experimental4nearest neighbor (bad quality)5area6luma bicubic / chroma bilinear7gauss8sincR9lanczos10natural bicubic spline
NOTE: Some-swsoptions are tunable. The description of thescalevideo filter has further information.
-swsopts <software scaler options>โ Specify advanced software scaler options provided bylibswscale. Set to"help"to get a list of supported options ๐ง-vc <[-|+]codec1,[-|+]codec2,...[,]>โ Specify a priority list of video codecs to be used, according to their codec name incodecs.conf. Use a'-'before the codec name to omit it. Use a'+'before the codec name to force it, this will likely crash! If the list has a trailing','MPlayer will fall back on codecs not contained in the list โ ๏ธ
NOTE: See -vc help for a full list of available codecs.
EXAMPLE:
-vc divx
Force Win32/VfW DivX codec, no fallback.
-vc -divxds,-divx,
Skip Win32 DivX codecs.
-vc ffmpeg12,mpeg12,
Try libavcodec's MPEG-1/2 codec, then libmpeg2, then others.
-vfm <driver1,driver2,...>โ Specify a priority list of video codec families to be used, according to their names incodecs.conf. Falls back on the default codecs if none of the given codec families work ๐
NOTE: See -vfm help for a full list of available codec families.
EXAMPLE:
-vfm ffmpeg,dshow,vfw
Try the libavcodec, then Directshow, then VfW codecs and fall back on others, if they do not work.
-vfm xanim
Try XAnim codecs first.
-x <x>(also see-zoom) (MPlayer only) โ scales the image to width<x>, but only if software or hardware scaling is actually available. Heads up: this disables aspect calculations, so the vibes are on you.-xvidopts <option1:option2:...>โ drop in extra params when decoding with Xvid.
ok so real talk, bestie: sincelibavcodecis faster than Xvid, you probs wanna use the libavcodec postprocessing filter (-vf pp) and decoder (-vfm ffmpeg) instead. iykyk ๐
Xvid's internal postprocessing filters:
deblock-chroma(also see-vf pp) โ chroma deblock filter โจdeblock-luma(also see-vf pp) โ luma deblock filter โจdering-luma(also see-vf pp) โ luma deringing filter ๐ฆdering-chroma(also see-vf pp) โ chroma deringing filter ๐ฆfilmeffect(also see-vf noise) โ adds artificial film grain to the video. May increase perceived quality while lowering true quality. it's giving filter-on-the-grain energy, ngl ๐
Rendering methods:
dr2โ activate direct rendering method 2 ๐ฅnodr2โ deactivate direct rendering method 2 ๐
-xy <value>(also see-zoom) โvalue<=8โ scale the image by factor<value>.value>8โ set the width to value and calculate the height so the aspect ratio stays correct. math girlie behavior fr ๐งฎโจ
-y <y>(also see-zoom) (MPlayer only) โ scales the image to height<y>(again, only if software/hardware scaling is available). Also disables aspect calculations, same deal as-x.-zoomโ allows software scaling where available. This is the slay that lets you scale with output drivers (likex11,fbdev) that don't support hardware scaling โ because MPlayer disables scaling by default for performance reasons. lowkey essential if your driver is being uncooperative ๐
๐ AUDIO FILTERS ๐
Audio filters let you modify the audio stream and its properties. The syntax is literally:
-af <filter1[=parameter1:parameter2:...],filter2,...>
-af <filter1[=parameter1:parameter2:...],filter2,...>โ set up a whole chain of audio filters. chain gang ๐ซถ
NOTE: to get a full list of available audio filters, hit -af help. free real estate โจ
Audio filters are managed in lists, and there are a few commands to manage the filter list:
-af-add <filter1[,filter2,...]>โ appends the filters given as arguments to the filter list. adding to the end, no cap ๐-af-pre <filter1[,filter2,...]>โ prepends the filters given as arguments to the filter list. front of the line, main character energy ๐-af-del <index1[,index2,...]>โ deletes the filters at the given indexes. Index numbers start at0, and negative numbers address the end of the list (-1is the last one). so-1is literally the last filter, iconic ๐-af-clrโ completely empties the filter list. poof, gone, the audacity ๐
Available filters are:
resample[=srate[:sloppy[:type]]]
Changes the sample rate of the audio stream. Can be used if you have a fixed frequency sound card, or if you're stuck with an old sound card that's only capable of max 44.1kHz. This filter is automatically enabled if necessary. It only supports 16-bit integer and float in native-endian format as input.
NOTE: with MEncoder, you need to also use -srate <srate>.
<srate>โ output sample frequency in Hz. The valid range for this parameter is8000to192000. If the input and output sample frequency are the same, or if this parameter is omitted, the filter is automatically unloaded. A high sample frequency normally improves the audio quality, especially when used in combination with other filters. highkey a glow-up for your ears ๐งโจ<sloppy>โ allow (1) or disallow (0) the output frequency to differ slightly from the frequency given by<srate>(default:1). Can be used if the startup of the playback is extremely slow. sloppy but make it fashion ๐<type>โ select which resampling method to use:0: linear interpolation (fast, poor quality especially when upsampling)1: polyphase filterbank and integer processing2: polyphase filterbank and floating point processing (slow, best quality)
EXAMPLE:
mplayer -af resample=44100:0:0
Would set the output frequency of the resample filter to 44100Hz using exact output frequency scaling and linear interpolation. ate that ๐
lavcresample[=srate[:length[:linear[:count[:cutoff]]]]]
Changes the sample rate of the audio stream to an integer <srate> in Hz. It only supports the 16-bit native-endian format.
NOTE: with MEncoder, you need to also use -srate <srate>.
<srate>โ the output sample rate<length>โ length of the filter with respect to the lower sampling rate (default:16)<linear>โ if1, then filters will be linearly interpolated between polyphase entries<count>โ log2 of the number of polyphase entries (...,10->1024,11->2048,12->4096, ...) (default:10->1024)<cutoff>โ cutoff frequency (0.0-1.0), default set depending upon filter length
lavcac3enc[=tospdif[:bitrate[:minchn]]]
Encode multi-channel audio to AC-3 at runtime using libavcodec. Supports 16-bit native-endian input format, maximum 6 channels. The output is big-endian when outputting a raw AC-3 stream, native-endian when outputting to S/PDIF. The output sample rate of this filter is same with the input sample rate. When input sample rate is 48kHz, 44.1kHz, or 32kHz, this filter directly use it. Otherwise a resampling filter is auto-inserted before this filter to make the input and output sample rate be 48kHz. You need to specify -channels N to make the decoder decode audio into N-channel, then the filter can encode the N-channel input to AC-3. surround sound slay ๐๐
<tospdif>โ output raw AC-3 stream if zero or not set, output to S/PDIF for passthrough when<tospdif>is set non-zero.<bitrate>โ the bitrate to encode the AC-3 stream. Set it to either384or384000to get 384kbits. Valid values:32,40,48,56,64,80,96,112,128,160,192,224,256,320,384,448,512,576,640. Default bitrate is based on the input channel number:1ch: 96,2ch: 192,3ch: 224,4ch: 384,5ch: 448,6ch: 448<minchn>โ if the input channel number is less than<minchn>, the filter will detach itself (default:5).
sweep[=speed]
Produces a sine sweep. ๐
<0.0-1.0>โ sine function delta, use very low values to hear the sweep.
sinesuppress[=freq:decay]
Removes a sine at the specified frequency. Useful to get rid of the 50/60Hz noise on low quality audio equipment. It probably only works on mono input. bye-bye hum ๐ฆ
<freq>โ the frequency of the sine which should be removed (in Hz) (default:50)<decay>โ controls the adaptivity (a larger value will make the filter adapt to amplitude and phase changes quicker, a smaller value will make the adaptation slower) (default:0.0001). Reasonable values are around0.001.
bs2b[=option1:option2:...]
Bauer stereophonic to binaural transformation using libbs2b. Improves the headphone listening experience by making the sound similar to that from loudspeakers, allowing each ear to hear both channels and taking into account the distance difference and the head shadowing effect. It is applicable only to 2 channel audio. headphones girlies rise ๐ง๐
fcut=<300-1000>โ set cut frequency in Hz.feed=<10-150>โ set feed level for low frequencies in0.1*dB.profile=<value>โ several profiles are available for convenience:defaultโ will be used if nothing else was specified (fcut=700,feed=45)cmoyโ Chu Moy circuit implementation (fcut=700,feed=60)jmeierโ Jan Meier circuit implementation (fcut=650,feed=95)
If fcut or feed options are specified together with a profile, they will be applied on top of the selected profile. stacking perks fr fr โจ
hrtf[=flag]
Head-related transfer function: converts multichannel audio to 2 channel output for headphones, preserving the spatiality of the sound. it's giving 3D audio but make it headphone ๐๐
mโ matrix decoding of the rear channelsโ 2-channel matrix decoding0โ no matrix decoding (default)
equalizer=[g1:g2:g3:...:g10]
10 octave band graphic equalizer, implemented using 10 IIR band pass filters. This means that it works regardless of what type of audio is being played back. The center frequencies for the 10 bands are:
- No.
0โ31.25 Hz - No.
1โ62.50 Hz - No.
2โ125.00 Hz - No.
3โ250.00 Hz - No.
4โ500.00 Hz - No.
5โ1.00 kHz - No.
6โ2.00 kHz - No.
7โ4.00 kHz - No.
8โ8.00 kHz - No.
9โ16.00 kHz
If the sample rate of the sound being played is lower than the center frequency for a frequency band, then that band will be disabled. A known bug with this filter is that the characteristics for the uppermost band are not completely symmetric if the sample rate is close to the center frequency of that band. This problem can be worked around by upsampling the sound using the resample filter before it reaches this filter. ๐ not the bug being iconic
<g1>:<g2>:<g3>:...:<g10>โ floating point numbers representing the gain in dB for each frequency band (-12-12)
EXAMPLE:
mplayer -af equalizer=11:11:10:5:0:-12:0:5:12:12 media.avi
Would amplify the sound in the upper and lower frequency region while canceling it almost completely around 1kHz. the way that bass hits different ๐ฅ๐ถ
channels=nch[:nr:from1:to1:from2:to2:from3:to3:...]โ the channel-routing icon ๐ this one can add, remove, route and copy audio channels, all at once. If you only give it<nch>, the default routing takes over and does this: if the number of output channels is bigger than the number of input channels, empty channels get inserted (the one exception: mixing from mono to stereo, where the mono channel is literally repeated in both output channels ๐ซถ). If the number of output channels is smaller than the number of input channels, the extra channels get truncated. bye ๐<nch>โ number of output channels (1-8).<nr>โ number of routes (1-8).<from1:to1:from2:to2:from3:to3:...>โ pairs of numbers between 0 and 7 that define where to route each channel.
EXAMPLE:
mplayer -af channels=4:4:0:1:1:0:2:2:3:3 media.avi
Would change the number of channels to 4 and set up 4 routes that swap channel 0 and channel 1 and leave channel 2 and 3 intact. Observe that if media containing two channels was played back, channels 2 and 3 would contain silence but 0 and 1 would still be swapped โจ
mplayer -af channels=6:4:0:0:0:1:0:2:0:3 media.avi
Would change the number of channels to 6 and set up 4 routes that copy channel 0 to channels 0 to 3. Channel 4 and 5 will contain silence.
format[=format](also see-format) โ sample-format glow-up ๐ converts between different sample formats, and it auto-enables itself whenever the sound card or another filter needs it. no manual labour required.<format>โ sets the desired format. General form is'sbe', where's'is the sign ('s'for signed,'u'for unsigned),'b'is the number of bits per sample (16, 24 or 32) and'e'is the endianness ('le'= little-endian,'be'= big-endian,'ne'= the endianness of the computer MPlayer is running on). Valid values (amongst others) are:'s16le','u32be'and'u24ne'. Exceptions to this rule that are also valid format specifiers:u8,s8,floatle,floatbe,floatne,mulaw,alaw,mpeg2,ac3andimaadpcm.
volume[=v[:sc]]โ software volume control, aka the filter you should lowkey be careful with ๐ it can reduce the signal to noise ratio of the sound. In most cases the best move is: set the level for the PCM sound to max, leave this filter out, and control the output level to your speakers with the master volume control of the mixer. If your sound card has a digital PCM mixer instead of an analog one and you're hearing distortion, use the MASTER mixer instead. If there's an external amplifier connected to the computer (which is almost always the case), you can minimize the noise level by adjusting the master level and the volume knob on the amplifier until that hissing noise in the background is gone. icon behaviour honestly ๐ง
This filter has a second feature, and it's giving main character energy: it measures the overall maximum sound level and prints out that level when MPlayer exits ๐ญ you can use that volume estimate to set the sound level in MEncoder so the maximum dynamic range is utilized. This feature currently only works with floating-point data โ use e.g. -af-adv force=5, or use -af stats.
NOTE: this filter is not reentrant and can therefore only be enabled once for every audio stream. one filter, one stream, periodt ๐
<v>โ sets the desired gain in dB for all channels in the stream, from-200dBto+60dB, where-200dBmutes the sound completely and+60dBequals a gain of 1000 (default: 0).<sc>โ turns soft clipping on (1) or off (0). Soft-clipping can make the sound more smooth if very high volume levels are used. Enable this option if the dynamic range of the loudspeakers is very low.
WARNING: this feature creates distortion and should be considered a last resort ๐
EXAMPLE:
mplayer -af volume=10.1:0 media.avi
Would amplify the sound by 10.1dB and hard-clip if the sound level is too high.
pan=n[:L00:L01:L02:...L10:L11:L12:...Ln0:Ln1:Ln2:...]โ the chaotic mixer ๐ mixes channels arbitrarily. Basically it's a combination of thevolumeand thechannelsfilter, and you can use it to down-mix many channels to only a few (stereo to mono, hii ๐) or to vary the "width" of the center speaker in a surround sound system. This filter is hard to use and will require some tinkering before you get the desired result โ that's not a bug, that's the vibe. The number of options for this filter depends on the number of output channels. An example of how to down-mix a six-channel file to two channels with this filter lives in the examples section near the end โจ<n>โ number of output channels (1-8).<Lij>โ how much of input channel i is mixed into output channel j (0-1). So in principle you first have n numbers saying what to do with the first input channel, then n numbers that act on the second input channel etc. If you do not specify any numbers for some input channels, 0 is assumed.
EXAMPLE:
mplayer -af pan=1:0.5:0.5 media.avi
Would down-mix from stereo to mono.
mplayer -af pan=3:1:0:0.5:0:1:0.5 media.avi
Would give 3 channel output leaving channels 0 and 1 intact, and mix channels 0 and 1 into output channel 2 (which could be sent to a subwoofer for example).
sub[=fc:ch]โ adds a subwoofer channel to the audio stream, boom boom ๐ the audio data used for creating the subwoofer channel is an average of the sound in channel 0 and channel 1. The resulting sound is then low-pass filtered by a 4th order Butterworth filter with a default cutoff frequency of60Hzand added to a separate channel in the audio stream.
Warning: disable this filter when you are playing DVDs with Dolby Digital 5.1 sound, otherwise this filter will disrupt the sound to the subwoofer ๐
<fc>โ cutoff frequency in Hz for the low-pass filter (20Hz to 300Hz) (default: 60Hz). For the best result try setting the cutoff frequency as low as possible โ this will improve the stereo or surround sound experience โจ<ch>โ determines the channel number in which to insert the sub-channel audio. Channel number can be between 0 and 7 (default: 5). Observe that the number of channels will automatically be increased to<ch>if necessary.
EXAMPLE:
mplayer -af sub=100:4 -channels 5 media.avi
Would add a sub-woofer channel with a cutoff frequency of 100Hz to output channel 4.
centerโ creates a center channel from the front channels ๐ฏ may currently be low quality since it does not implement a high-pass filter for proper extraction yet โ instead it just averages and halves the channels. it's doing its best, ok ๐ญ<ch>โ determines the channel number in which to insert the center channel. Channel number can be between 0 and 7 (default: 5). Observe that the number of channels will automatically be increased to<ch>if necessary.
surround[=delay]โ decoder for matrix encoded surround sound like Dolby Surround ๐ many files with 2 channel audio actually contain matrixed surround sound, which is lowkey iconic. Requires a sound card supporting at least 4 channels.<delay>โ delay time in ms for the rear speakers (0 to 1000) (default: 20). This delay should be set as follows: if d1 is the distance from the listening position to the front speakers and d2 is the distance from the listening position to the rear speakers, then the delay should be set to15msif d1 <= d2 and to15 + 5*(d1-d2)if d1 > d2.
EXAMPLE:
mplayer -af surround=15 -channels 4 media.avi
Would add surround sound decoding with 15ms delay for the sound to the rear speakers.
delay[=ch1:ch2:...]โ delays the sound to the loudspeakers so that the sound from the different channels arrives at the listening position simultaneously โฑ๏ธ it is only useful if you have more than 2 loudspeakers.ch1,ch2,...โ the delay in ms that should be imposed on each channel (floating point number between 0 and 1000).
To calculate the required delay for the different channels, do as follows:
- Measure the distance to the loudspeakers in meters in relation to your listening position, giving you the distances s1 to s5 (for a 5.1 system). There is no point in compensating for the subwoofer (you will not hear the difference anyway).
- Subtract the distances s1 to s5 from the maximum distance, i.e.
s[i] = max(s) - s[i]; i = 1...5. - Calculate the required delays in ms as
d[i] = 1000*s[i]/342; i = 1...5.
EXAMPLE:
mplayer -af delay=10.5:10.5:0:0:7:0 media.avi
Would delay front left and right by 10.5ms, the two rear channels and the sub by 0ms and the center channel by 7ms.
export[=mmapped_file[:nsamples]]โ exports the incoming signal to other processes using memory mapping (mmap()) ๐ฆ the memory mapped areas contain a header:
int nch /*number of channels*/
int size /*buffer size*/
unsigned long long counter /*Used to keep sync, updated every
time new data is exported.*/
The rest is payload (non-interleaved) 16 bit data.
<mmapped_file>โ file to map data to (default:~/.mplayer/mplayer-af_export).<nsamples>โ number of samples per channel (default: 512).
And here's the export filter doing its lil demo, because we love a visual:
mplayer -af export=/tmp/mplayer-af_export:1024 media.avi
โ Would export 1024 samples per channel to '/tmp/mplayer-af_export'. ๐พโจ
๐ extrastereo[=mul]
Okay so this one (linearly) increases the difference between the left and right channels, which adds some sort of "live" effect to playback. It's giving concert-in-your-headphones. ๐ง
<mul>โ sets the difference coefficient (default:2.5).0.0means mono sound (average of both channels), with1.0sound will be unchanged, with-1.0left and right channels will be swapped. Yes bestie,-1.0literally swaps them. ๐
๐ volnorm[=method:target]
Maximizes the volume without distorting the sound. No more rage-whispering at your volume keys, it just handles it. ๐
<method>โ sets the used method.1: Use a single sample to smooth the variations via the standard weighted mean over past samples (default).2: Use several samples to smooth the variations via the standard weighted mean over past samples.
<target>โ sets the target amplitude as a fraction of the maximum for the sample type (default:0.25).
๐งฉ ladspa=file:label[:controls...]
Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin. This filter is reentrant, so multiple LADSPA plugins can be used at once โ stack 'em, periodt. ๐ซถ
<file>โ specifies the LADSPA plugin library file. IfLADSPA_PATHis set, it searches for the specified file. If it is not set, you must supply a fully specified pathname. Like, the whole path, no shortcuts. ๐<label>โ specifies the filter within the library. Some libraries contain only one filter, but others contain many of them. Entering'help'here will list all available filters within the specified library, which eliminates the use of'listplugins'from the LADSPA SDK. Iconic shortcuts only. โจ<controls>โ controls are zero or more floating point values that determine the behavior of the loaded plugin (for example delay, threshold or gain). In verbose mode (add-vto the MPlayer command line), all available controls and their valid ranges are printed. This eliminates the use of'analyseplugin'from the LADSPA SDK. ๐
๐๏ธ comp
Compressor/expander filter usable for microphone input. Prevents artifacts on very loud sound and raises the volume on very low sound. > Heads up: this filter is untested, maybe even unusable. ๐ Proceed with the awareness of a main character.
๐ช gate
Noise gate filter similar to the comp audio filter. > Same warning bestie: this filter is untested, maybe even unusable. ๐
๐ค karaoke
Simple voice removal filter exploiting the fact that voice is usually recorded with mono gear and later 'center' mixed onto the final audio stream. So it just kinda yanks the vocals out. ๐ถ
Beware that this filter will turn your signal into mono. Works well for 2 channel tracks; do not bother trying it on anything but 2 channel stereo. It's a 2-channel-only girlie. ๐
โฉ scaletempo[=option1:option2:...]
Scales audio tempo without altering pitch, optionally synced to playback speed (default). The glow-up your podcasts needed. ๐
This works by playing ยดstrideยด ms of audio at normal speed then consuming ยดstride*scaleยด ms of input audio. It pieces the strides together by blending ยดoverlapยด% of stride with audio following the previous stride. It optionally performs a short statistical analysis on the next ยดsearchยด ms of audio to determine the best overlap position. Science, but make it cute. ๐งช
scale=<amount>โ nominal amount to scale tempo. Scales this amount in addition to speed. (default:1.0)stride=<amount>โ length in milliseconds to output each stride. Too high of value will cause noticeable skips at high scale amounts and an echo at low scale amounts. Very low values will alter pitch. Increasing improves performance. (default:60)overlap=<percent>โ percentage of stride to overlap. Decreasing improves performance. (default:.20)search=<amount>โ length in milliseconds to search for best overlap position. Decreasing improves performance greatly. On slow systems, you will probably want to set this very low. (default:14)speed=<tempo|pitch|both|none>โ set response to speed change.tempoโ scale tempo in sync with speed (default).pitchโ reverses effect of filter. Scales pitch without altering tempo. Add ยด[ speed_mult 0.9438743126816935ยด and ยด] speed_mult 1.059463094352953ยด to yourinput.confto step by musical semi-tones. > WARNING: Loses sync with video. Yeah, the video just wanders off. ๐ญbothโ scale both tempo and pitch.noneโ ignore speed changes.
EXAMPLE:
mplayer -af scaletempo -speed 1.2 media.ogg
โ Would playback media at 1.2x normal speed, with audio at normal pitch. Changing playback speed would change audio tempo to match. ๐ฅ
mplayer -af scaletempo=scale=1.2:speed=none -speed 1.2 media.ogg
โ Would playback media at 1.2x normal speed, with audio at normal pitch, but changing playback speed has no effect on audio tempo.
mplayer -af scaletempo=stride=30:overlap=.50:search=10 media.ogg
โ Would tweak the quality and performace parameters. (their spelling, not mine ๐ซฃ)
mplayer -af format=floatne,scaletempo media.ogg
โ Would make scaletempo use float code. Maybe faster on some platforms. โก
mplayer -af scaletempo=scale=1.2:speed=pitch audio.ogg
โ Would playback audio file at 1.2x normal speed, with audio at normal pitch. Changing playback speed would change pitch, leaving audio tempo at 1.2x.
๐ stats
Collects and prints statistics about the audio stream, especially the volume. These statistics are especially intended to help adjusting the volume while avoiding clipping. The volumes are printed in dB and compatible with the volume audio filter, they are always rounded towards -0dB. Math but make it helpful. ๐
The n_samples field is the total number of samples seen by the filter. The mean_volume field is the root mean square. The max_volume field is exactly what it says. The histogram_Xdb fields count how many samples were at -XdB, for X just below max_volume.
For example, if max_volume is -7dB and histogram_7dB is 19, 'volume=7' will not cause clipping and 'volume=8' will cause clipping on exactly 19 samples. Precise. Obsessed. ๐
๐ฌ VIDEO FILTERS ๐ฌ
Video filters allow you to modify the video stream and its properties. The syntax is:
-vf <filter1[=parameter1:parameter2:...],filter2,...>
Setup a chain of video filters. Chain 'em like charms on a bracelet. ๐ฆ
Many parameters are optional and set to default values if omitted. To explicitly use a default value set a parameter to '-1'. Parameters w:h means width x height in pixels, x:y means x;y position counted from the upper left corner of the bigger image. Upper left is the origin, always. ๐
NOTE: To get a full list of available video filters, see -vf help. Bless.
Video filters are managed in lists. There are a few commands to manage the filter list. ๐๏ธ
-vf-add <filter1[,filter2,...]>โ Appends the filters given as arguments to the filter list.-vf-pre <filter1[,filter2,...]>โ Prepends the filters given as arguments to the filter list. Front of the line, VIP style. ๐-vf-del <index1[,index2,...]>โ Deletes the filters at the given indexes. Index numbers start at0, negative numbers address the end of the list (-1is the last).-vf-clrโ Completely empties the filter list. Poof, gone, clean slate. ๐จ
With filters that support it, you can access parameters by their name. Name drop your way to success: โจ
-vf <filter>=helpโ Prints the parameter names and parameter value ranges for a particular filter.-vf <filter=named_parameter1=value1[:named_parameter2=value2:...]>โ Sets a named parameter to the given value. Useonandofforyesandnoto set flag parameters.
Available filters are:
โ๏ธ crop[=w:h:x:y]
Crops the given part of the image and discards the rest. Useful to remove black bands from widescreen movies โ the little letterbox bars get yeeted. ๐ค
<w>,<h>โ cropped width and height, defaults to original width and height.<x>,<y>โ position of the cropped picture, defaults to center.
๐ cropdetect[=limit:round[:reset]]
Calculates necessary cropping parameters and prints the recommended parameters to stdout. It literally does the math for you, bestie. ๐งฎ
<limit>โ threshold, which can be optionally specified from nothing (0) to everything (255) (default:24).<round>โ value which the width/height should be divisible by (default:16). The offset is automatically adjusted to center the video. Use2to get only even dimensions (needed for 4:2:2 video).16is best when encoding to most video codecs.<reset>โ counter that determines after how many framescropdetectwill reset the previously detected largest video area and start over to detect the current optimal crop area (default:0). This can be useful when channel logos distort the video area.0indicates never reset and return the largest area encountered during playback. Team no-reset over here. ๐
๐ฅ rectangle[=w:h:x:y]
Draws a rectangle of the requested width and height at the specified coordinates over the image and prints current rectangle parameters to the console. This can be used to find optimal cropping parameters. If you bind the input.conf directive 'change_rectangle' to keystrokes, you can move and resize the rectangle on the fly. Draggable rectangle, we love interactive content. ๐ซถ
<w>,<h>โ width and height (default:-1, maximum possible width where boundaries are still visible.)<x>,<y>โ top left corner position (default:-1, uppermost leftmost)
expand[=w:h:x:y:o:a:r]
Expands the movie resolution to whatever value you hand it (this is not scaling, bestie โ it's literally just adding space) and plops the unscaled original down at coordinates x, y. What's the point? Putting subtitles/OSD in those fresh black bands. Iconic.
<w>,<h>โ expanded width,height (default: original width,height). Negative values forwandhget treated as offsets to the original size. ๐
EXAMPLE:
expand=0:-50:0:0
Adds a 50 pixel border to the bottom of the picture.
<x>,<y>โ position of the original image on the expanded image (default: center).<o>โ OSD/subtitle rendering0: disable (default)1: enable
<a>โ expands to fit an aspect instead of a resolution (default:0).
EXAMPLE:
expand=800:::::4/3
Expands to 800x600, unless the source is higher resolution โ in which case it expands to fill a 4/3 aspect.
<r>โ rounds up to make both width and height divisible by<r>(default:1).
flip (also see -flip)
Flips the image upside down. That's it. That's the filter. ๐
mirror
Mirrors the image on the Y axis. ๐ช
rotate[=<0-7>]
Rotates the image by 90 degrees and optionally flips it. Heads up: for values between 4-7, rotation only happens if the movie geometry is portrait and not landscape โ so landscape sources just vibe there unrotated, iykyk.
0โ rotate by 90 degrees clockwise and flip (default).1โ rotate by 90 degrees clockwise.2โ rotate by 90 degrees counterclockwise.3โ rotate by 90 degrees counterclockwise and flip.
scale[=w:h[:interlaced[:chr_drop[:par[:par2[:presize[:noup[:arnd]]]]]]]]
Scales the image with the software scaler (slow, no cap, this thing is not fast) and does a YUV<->RGB colorspace conversion (also see -sws).
<w>,<h>โ scaled width/height (default: original width/height)
NOTE: if-zoomis used, and underlying filters (includinglibvo) are incapable of scaling, it defaults tod_width/d_height! ๐ญ
0: scaledd_width/d_height-1: original width/height-2: calculate w/h using the other dimension and the prescaled aspect ratio.-3: calculate w/h using the other dimension and the original aspect ratio.-(n+8): like-nabove, but rounding the dimension to the closest multiple of 16.
<interlaced>โ toggle interlaced scaling.0: off (default)1: on
<chr_drop>โ chroma skipping0: use all available input lines for chroma.1: use only every 2. input line for chroma.2: use only every 4. input line for chroma.3: use only every 8. input line for chroma.
<par>[:<par2>](also see-sws) โ set some scaling parameters depending on the type of scaler selected with-sws.-sws 2(bicubic): B (blurring) and C (ringing)0.00:0.60default0.00:0.75VirtualDub's "precise bicubic"0.00:0.50Catmull-Rom spline0.33:0.33Mitchell-Netravali spline1.00:0.00cubic B-spline
-sws 7(gaussian): sharpness (0(soft) -100(sharp))-sws 9(lanczos): filter length (1-10)
<presize>โ scale to preset sizes. ๐qntsc:352x240(NTSC quarter screen)qpal:352x288(PAL quarter screen)ntsc:720x480(standard NTSC)pal:720x576(standard PAL)sntsc:640x480(square pixel NTSC)spal:768x576(square pixel PAL)
<noup>โ disallow upscaling past the original dimensions.0: allow upscaling (default).1: disallow upscaling if one dimension exceeds its original value.2: disallow upscaling if both dimensions exceed their original values.
<arnd>โ accurate rounding for the vertical scaler, which may be faster or slower than the default rounding.0: disable accurate rounding (default).1: enable accurate rounding.
dsize[=aspect|w:h:aspect-method:r]
Changes the intended display size/aspect at an arbitrary point in the filter chain. Aspect can be given as a fraction (4/3) or a floating point number (1.33). Alternatively you can just specify the exact display width and height you want. Big note: this filter does not do any scaling itself โ it only affects what later scalers (software or hardware) will do when auto-scaling to correct aspect. It's the vibe-setter, not the vibe-doer.
<w>,<h>โ new display width and height. Can also be these special values:0: original display width and height-1: original video width and height (default)-2: calculate w/h using the other dimension and the original display aspect ratio.-3: calculate w/h using the other dimension and the original video aspect ratio.
EXAMPLE:
dsize=800:-2
Specifies a display resolution of 800x600 for a 4/3 aspect video, or 800x450 for a 16/9 aspect video.
<aspect-method>โ modifies width and height according to original aspect ratios.-1: ignore original aspect ratio (default).0: keep display aspect ratio by using<w>and<h>as maximum resolution.1: keep display aspect ratio by using<w>and<h>as minimum resolution.2: keep video aspect ratio by using<w>and<h>as maximum resolution.3: keep video aspect ratio by using<w>and<h>as minimum resolution.
EXAMPLE:
dsize=800:600:0
Specifies a display resolution of at most 800x600, or smaller, in order to keep aspect.
<r>โ rounds up to make both width and height divisible by<r>(default:1).
yvu9
Forces software YVU9 to YV12 colorspace conversion. โ ๏ธ Deprecated in favor of the software scaler โ so like, it still works, but it's giving legacy behavior, bestie.
yuvcsp
Clamps YUV color values to the CCIR 601 range without doing real conversion. No actual conversion happens, it just clamps. ๐ซถ
palette
RGB/BGR 8 -> 15/16/24/32bpp colorspace conversion using palette. ๐
format[=fourcc[:outfourcc]]
Restricts the colorspace for the next filter without doing any conversion. Use it together with the scale filter if you actually want a real conversion.
NOTE: for a list of available formats see format=fmt=help.
<fourcc>โ format name likergb15,bgr24,yv12, etc (default:yuy2)<outfourcc>โ format name that should be substituted for the output. If this is not 100% compatible with the<fourcc>value it will crash. ๐
Valid examples:
format=rgb24:bgr24 format=yuyv:yuy2
Invalid examples (will crash):
format=rgb24:yv12
noformat[=fourcc]
Restricts the colorspace for the next filter without doing any conversion. Unlike the format filter, this one allows any colorspace except the one you specify โ it's the inverse queen. ๐
NOTE: for a list of available formats see noformat=fmt=help.
<fourcc>โ format name likergb15,bgr24,yv12, etc (default:yv12)
pp[=filter1[:option1[:option2...]]/[-]filter2...] (also see -pphelp)
Enables the specified chain of postprocessing subfilters. Subfilters have to be separated by / and can be disabled by prepending a -. Each subfilter and some options have a short and a long name that you can use interchangeably โ i.e. dr/dering are the same thing, fr fr. All subfilters share these common options that decide their scope:
a/autoqโ automatically switch the subfilter off if the CPU is too slow. ๐ญc/chromโ do chrominance filtering, too (default).y/nochromโ do luminance filtering only (no chrominance).n/nolumaโ do chrominance filtering only (no luminance).
NOTE: -pphelp shows a list of available subfilters.
Available subfilters are
hb/hdeblock[:difference[:flatness]]โ horizontal deblocking filter<difference>: difference factor where higher values mean more deblocking (default:32).<flatness>: flatness threshold where lower values mean more deblocking (default:39).
vb/vdeblock[:difference[:flatness]]โ vertical deblocking filter<difference>: difference factor where higher values mean more deblocking (default:32).<flatness>: flatness threshold where lower values mean more deblocking (default:39).
ha/hadeblock[:difference[:flatness]]โ accurate horizontal deblocking filter<difference>: difference factor where higher values mean more deblocking (default:32).<flatness>: flatness threshold where lower values mean more deblocking (default:39).
va/vadeblock[:difference[:flatness]]โ accurate vertical deblocking filter<difference>: difference factor where higher values mean more deblocking (default:32).<flatness>: flatness threshold where lower values mean more deblocking (default:39).
okay so the horizontal and vertical deblocking filters share the difference and flatness values โ which means you literally cannot set different horizontal and vertical thresholds. one setting, both directions, that's the deal ๐
h1/x1hdeblockโ the experimental horizontal deblocking filter โจv1/x1vdeblockโ the experimental vertical deblocking filter โจdr/deringโ deringing filter, bye bye rings ๐tn/tmpnoise[:threshold1[:threshold2[:threshold3]]]โ temporal noise reducer ๐<threshold1>: larger -> stronger filtering<threshold2>: larger -> stronger filtering<threshold3>: larger -> stronger filtering
al/autolevels[:f/fullyrange]โ automatic brightness / contrast correction โ๏ธf/fullyrange: Stretch luminance to (0-255).
lb/linblenddeintโ Linear blend deinterlacing filter that deinterlaces the given block by filtering all lines with a(1 2 1)filter.li/linipoldeintโ Linear interpolating deinterlacing filter that deinterlaces the given block by linearly interpolating every second line.ci/cubicipoldeintโ Cubic interpolating deinterlacing filter deinterlaces the given block by cubically interpolating every second line.md/mediandeintโ Median deinterlacing filter that deinterlaces the given block by applying a median filter to every second line.fd/ffmpegdeintโ FFmpeg deinterlacing filter that deinterlaces the given block by filtering every second line with a(-1 4 2 4 -1)filter.l5/lowpass5โ Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given block by filtering all lines with a(-1 2 6 2 -1)filter.fq/forceQuant[:quantizer]โ Overrides the quantizer table from the input with the constant quantizer you specify ๐ง<quantizer>: quantizer to use
de/defaultโ default pp filter combination (hb:a,vb:a,dr:a)fa/fastโ fast pp filter combination (h1:a,v1:a,dr:a)acโ high quality pp filter combination (ha:a:128:7,va:a,dr:a)
EXAMPLE:
-vf pp=hb/vb/dr/al
horizontal and vertical deblocking, deringing and automatic brightness/contrast ๐
-vf pp=de/-al
default filters without brightness/contrast correction
-vf pp=default/tmpnoise:1:2:3
Enable default filters & temporal denoiser.
-vf pp=hb:y/vb:a
Horizontal deblocking on luminance only, and switch vertical deblocking on or off automatically depending on available CPU time. iykyk ๐ฅ
spp[=quality[:qp[:mode]]]
Simple postprocessing filter that compresses and decompresses the image at several (or - in the case of quality level 6 - all) shifts and averages the results. it's giving "do it a bunch of times and average the chaos" ๐ฆ
<quality>โ 0-6 (default: 3)<qp>โ Force quantization parameter (default: 0, use QP from video).<mode>- 0: hard thresholding (default)
- 1: soft thresholding (better deringing, but blurrier)
- 4: like 0, but also use B-frames' QP (may cause flicker)
- 5: like 1, but also use B-frames' QP (may cause flicker)
uspp[=quality[:qp]]
Ultra simple & slow postprocessing filter that compresses and decompresses the image at several (or - in the case of quality level 8 - all) shifts and averages the results. The way this differs from the behavior of spp is that uspp actually encodes & decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8 DCT similar to MJPEG. so likeโฆ same energy, different engine, and yeah it's slow ๐ญ
<quality>โ 0-8 (default: 3)<qp>โ Force quantization parameter (default: 0, use QP from video).
fspp[=quality[:qp[:strength[:bframes]]]]
faster version of the simple postprocessing filter โก
<quality>โ 4-5 (equivalent tospp; default: 4)<qp>โ Force quantization parameter (default: 0, use QP from video).<-15-32>โ Filter strength, lower values mean more details but also more artifacts, while higher values make the image smoother but also blurrier (default: 0 - PSNR optimal).<bframes>- 0: do not use QP from B-frames (default)
- 1: use QP from B-frames too (may cause flicker)
pp7[=qp[:mode]]
Variant of the spp filter, similar to spp=6 with 7 point DCT where only the center sample is used after IDCT. main character filter fr fr ๐
<qp>โ Force quantization parameter (default: 0, use QP from video).<mode>- 0: hard thresholding
- 1: soft thresholding (better deringing, but blurrier)
- 2: medium thresholding (default, good results)
qp=equation
quantization parameter (QP) change filter ๐๏ธ
<equation>โ some equation like"2+2*sin(PI*qp)"
geq=equation
generic equation change filter ๐งฎ
<equation>โ Some equation, e.g.'p(W-X\,Y)'to flip the image horizontally. You can use whitespace to make the equation more readable. There are a couple of constants that can be used in the equation:PI: the number piE: the number eX / Y: the coordinates of the current sampleW / H: width and height of the imageSW / SH: width/height scale depending on the currently filtered plane, e.g. 1,1 and 0.5,0.5 for YUV 4:2:0.p(x,y): returns the value of the pixel at location x/y of the current plane.
test
Generate various test patterns. ๐จ slay, free rainbow bars
rgbtest[=width:height]
Generate an RGB test pattern useful for detecting RGB vs BGR issues. You should see a red, green and blue stripe from top to bottom. ๐
<width>โ Desired width of generated image (default: 0). 0 means width of input image.<height>โ Desired height of generated image (default: 0). 0 means height of input image.
lavc[=quality:fps]
Fast software YV12 to MPEG-1 conversion with libavcodec for use with DVB/DXR3/IVTV/V4L2. ๐ฅ
<quality>- 1-31: fixed qscale
- 32-: fixed bitrate in kbits
<fps>โ force output fps (float value) (default: 0, autodetect based on height)
dvbscale[=aspect]
Set up optimal scaling for DVB cards, scaling the x axis in hardware and calculating the y axis scaling in software to keep aspect. Only useful together with expand and scale. ๐บ
<aspect>โ Control aspect ratio, calculate asDVB_HEIGHT*ASPECTRATIO(default: 576*4/3=768), set it to 576*(16/9)=1024 for a 16:9 TV.
EXAMPLE:
-vf dvbscale,scale=-1:0,expand=-1:576:-1:-1:1,lavc
FIXME: Explain what this does. ๐ (that's literally what the page says bestie, i'm not making it up)
noise[=luma[u][t|a][h][p]:chroma[u][t|a][h][p]]
Adds noise. ๐ป static but make it fashion
<0-100>โ luma noise<0-100>โ chroma noiseuโ uniform noise (gaussian otherwise)tโ temporal noise (noise pattern changes between frames)aโ averaged temporal noise (smoother, but a lot slower)hโ high quality (slightly better looking, slightly slower)pโ mix random noise with a (semi)regular pattern
denoise3d[=luma_spatial:chroma_spatial:luma_tmp:chroma_tmp]
This filter aims to reduce image noise producing smooth images and making still images really still (This should enhance compressibility.). obsessed with the still-image-stays-still agenda ๐
<luma_spatial>โ spatial luma strength (default: 4)<chroma_spatial>โ spatial chroma strength (default: 3)<luma_tmp>โ luma temporal strength (default: 6)<chroma_tmp>โ chroma temporal strength (default:luma_tmp*chroma_spatial/luma_spatial)
hqdn3d[=luma_spatial:chroma_spatial:luma_tmp:chroma_tmp]
High precision/quality version of the denoise3d filter. Parameters and usage are the same. โจ highkey the upgraded one
ow[=depth[:luma_strength[:chroma_strength]]]
Overcomplete Wavelet denoiser. ๐
<depth>โ Larger depth values will denoise lower frequency components more, but slow down filtering (default: 8).<luma_strength>โ luma strength (default: 1.0)<chroma_strength>โ chroma strength (default: 1.0)
eq[=brightness:contrast] (OBSOLETE)
Software equalizer with interactive controls just like the hardware equalizer, for cards/drivers that do not support brightness and contrast controls in hardware. Might also be useful with MEncoder, either for fixing poorly captured movies, or for slightly reducing contrast to mask artifacts and get by with lower bitrates. โ ๏ธ note the OBSOLETE bestie, it's giving deprecated-era icon
<-100-100>โ initial brightness<-100-100>โ initial contrast
eq2[=gamma:contrast:brightness:saturation:rg:gg:bg:weight] ๐จ
Okay so this is the alternative software equalizer and bestie, it uses lookup tables, which means it's very slow ๐ญ โ but it gives you gamma correction on top of plain brightness and contrast tweaking. Fun fact: it uses the exact same MMX optimized code as -vf eq as long as all your gamma values are 1.0. All the parameters are floating point values, mwah ๐
<0.1-10>โ initial gamma value (default:1.0)<-2-2>โ initial contrast, where negative values give you a straight-up negative image (default:1.0)<-1-1>โ initial brightness (default:0.0)<0-3>โ initial saturation (default:1.0)<0.1-10>โ gamma value for the red component (default:1.0)<0.1-10>โ gamma value for the green component (default:1.0)<0.1-10>โ gamma value for the blue component (default:1.0)<0-1>โ the weight parameter, and it's giving damage control ๐ซถ it reduces how much a high gamma value messes with bright image areas โ like, keeps them from getting overamplified and turning into plain white. A value of0.0turns the gamma correction all the way down while1.0leaves it at full strength (default:1.0).
hue[=hue:saturation] ๐
A software equalizer with interactive controls, literally just like the hardware equalizer โ for cards/drivers that do not support hue and saturation controls in hardware. Iconic fallback behavior, no cap.
<-180-180>โ initial hue (default:0.0)<-10-10>โ initial saturation, where negative values give you negative chroma (default:1.0)
halfpack[=f] ๐ฆ
Converts planar YUV 4:2:0 into half-height packed 4:2:2 โ downsampling the luma but keeping all the chroma samples. So useful for output to low-resolution display devices when hardware downscaling is poor quality or just isn't available. It can also double as a primitive luma-only deinterlacer with very low CPU usage. Versatile queen ๐
<f>โ by default,halfpackaverages pairs of lines when downsampling. Any value different from0or1gives you the default (averaging) behavior.0: Only use even lines when downsampling.1: Only use odd lines when downsampling.
ilpack[=mode] ๐งต
Okay so here's the situation: when interlaced video is stored in YUV 4:2:0 formats, the chroma interlacing does not line up properly because of vertical downsampling of the chroma channels. Rude. This filter packs the planar 4:2:0 data into YUY2 (4:2:2) format with the chroma lines in their proper locations, so that in any given scanline, the luma and chroma data both come from the same field. Fixed it for you ๐
<mode>โ select the sampling mode.0: nearest-neighbor sampling, fast but incorrect1: linear interpolation (default)
harddup ๐ช
Only useful with MEncoder. If harddup is used when encoding, it forces duplicate frames to be encoded in the output. Uses slightly more space, but it's necessary for output to MPEG files or if you plan to demux and remux the video stream after encoding. Should be placed at or near the end of the filter chain unless you have a good reason to do otherwise. Put it last, bestie, it's the main character of the chain's ending โจ
softskip ๐ฆ
Only useful with MEncoder. softskip moves the frame skipping (dropping) step of encoding from before the filter chain to some point during the filter chain. That's what lets filters which need to see all frames โ inverse telecine, temporal denoising, etc. โ actually function properly. Should be placed after the filters that need to see all frames and before any subsequent filters that are CPU-intensive. Position matters, iykyk ๐
decimate[=max:hi:lo:frac] ๐๏ธ
Drops frames that don't differ greatly from the previous frame, all to reduce framerate. Main use is very-low-bitrate encoding (think streaming over a dialup modem ๐ญ), but in theory it could be used for fixing movies that were inverse-telecined incorrectly. Multi-purpose icon.
<max>โ sets the maximum number of consecutive frames which can be dropped (if positive), or the minimum interval between dropped frames (if negative).<hi>,<lo>,<frac>โ a frame is a candidate for dropping if no8x8region differs by more than a threshold of<hi>, and if not more than<frac>portion (1 meaning the whole image) differs by more than a threshold of<lo>. Values of<hi>and<lo>are for8x8pixel blocks and represent actual pixel value differences, so a threshold of64corresponds to1unit of difference for each pixel, or the same spread out differently over the block. Math is mathing ๐
dint[=sense:level] ๐
The drop-deinterlace (dint) filter detects and drops the first frame from a set of interlaced video frames.
<0.0-1.0>โ relative difference between neighboring pixels (default:0.1)<0.0-1.0>โ what part of the image has to be detected as interlaced to drop the frame (default:0.15)
lavcdeint (OBSOLETE) ๐
FFmpeg deinterlacing filter, same as -vf pp=fd. It's a relic, bestie โ she's retired.
lavfi=filtergraph ๐งช
FFmpeg libavfilter wrapper. filtergraph defines a whole libavfilter graph with one input and one output. See http://www.ffmpeg.org/libavfilter.html#SEC4 for details.
Special case incoming: if filtergraph is $word then the value of the word environment variable is used. This is necessary if commas are present in the graph description, because mplayer uses them as a delimiter between filters. Sneaky but valid ๐
NOTE: This filter is considered experimental, it may interact strangely with other filters. Proceed with caution, she's a little unhinged.
EXAMPLE:
overlay="movie=$small_video, scale=160:120 [ca]; [in] [ca] overlay=16:8" mplayer -vf lavfi='$overlay' $big_video
kerndeint[=thresh[:map[:order[:sharp[:twoway]]]]] ๐ง
Donald Graft's adaptive kernel deinterlacer. Deinterlaces parts of a video if a configurable threshold is exceeded. Adaptive queen โ she only does the work where it's needed.
<0-255>โ threshold (default:10)<map>0: Ignore pixels exceeding the threshold (default).1: Paint pixels exceeding the threshold white.
<order>0: Leave fields alone (default).1: Swap fields.
<sharp>0: Disable additional sharpening (default).1: Enable additional sharpening.
<twoway>0: Disable twoway sharpening (default).1: Enable twoway sharpening.
unsharp[=l|cWxH:amount[:l|cWxH:amount]] โจ
unsharp mask / gaussian blur. Two vibes, one filter.
lโ apply effect on luma component.cโ apply effect on chroma components.<width>x<height>โ width and height of the matrix, odd sized in both directions (min =3x3, max =13x11or11x13, usually something between3x3and7x7)amountโ relative amount of sharpness/blur to add to the image (a sane range should be-1.5-1.5).<0: blur>0: sharpen
swapuv ๐
Swap U & V plane. Short, sweet, does exactly what it says on the tin.
il[=d|i][s][:[d|i][s]] ๐๏ธ
(De)interleaves lines. The whole goal of this filter is to add the ability to process interlaced images pre-field without deinterlacing them. So you can filter your interlaced DVD and play it on a TV without breaking the interlacing. Here's the tea: while deinterlacing (with the postprocessing filter) removes interlacing permanently (by smoothing, averaging, etc), deinterleaving splits the frame into 2 fields (so called half pictures), so you can process (filter) them independently and then re-interleave them. Big brain energy ๐ง โจ
dโ deinterleave (placing one above the other)iโ interleavesโ swap fields (exchange even & odd lines)
fil[=i|d] โก
(De)interleaves lines. Super similar to the il filter but much faster โ the main disadvantage is that it does not always work. Especially if combined with other filters it may produce randomly messed up images, so be happy if it works but do not complain if it does not for your combination of filters. She's fast and a little unpredictable, we stan a chaotic queen ๐
dโ Deinterleave fields, placing them side by side.iโ Interleave fields again (reversing the effect offil=d).
field[=n] ๐พ
Extracts a single field from an interlaced image using stride arithmetic to avoid wasting CPU time. Efficient and unbothered. The optional argument n specifies whether to extract the even or the odd field (depending on whether n is even or odd). Parity math, slay.
detc[=var1=value1:var2=value2:...] ๐ผ
Attempts to reverse the 'telecine' process to recover a clean, non-interlaced stream at film framerate. This was the first and most primitive inverse telecine filter to be added to MPlayer/MEncoder โ an OG, respect her. She works by latching onto the telecine 3:2 pattern and following it as long as possible. That makes her suitable for perfectly-telecined material, even in the presence of a fair degree of noise, but she will fail in the presence of complex post-telecine edits ๐ญ Development on this filter is no longer taking place, since ivtc, pullup, and filmdint are better for most applications. The following arguments (see syntax above) may be used to control detc's behavior:
<dr>โ set the frame dropping mode.0: Do not drop frames to maintain fixed output framerate (default).1: Always drop a frame when there have been no drops or telecine merges in the past 5 frames.2: Always maintain exact5:4input to output frame ratio.- > NOTE: Use mode
1or2with MEncoder.
<am>โ analysis mode.0: Fixed pattern with initial frame number specified by<fr>.1: aggressive search for telecine pattern (default)
<fr>โ sets the initial frame number in the sequence.0โ2are the three clean progressive frames, and3and4are the two interlaced ones. The default,-1, means "not in telecine sequence". Whatever number you put here is the type assigned to the imaginary previous frame right before the movie starts. โจ<t0>,<t1>,<t2>,<t3>โ threshold values used in certain modes. That's the whole vibe.
๐ ivtc[=1]
Experimental "stateless" inverse telecine filter, bestie. And when the manpage says experimental, it means it. ๐
So unlike detc, which tries to lock onto a pattern and ride it out, ivtc makes its decisions independently for each frame. The upside? Way better results for material that's been heavily edited after telecine was applied. The tradeoff? It's not as forgiving of noisy input โ think TV capture, where the signal is giving chaos. ๐ญ
The optional parameter (ivtc=1) corresponds to the dr=1 option for the detc filter, and you should use it with MEncoder but not with MPlayer. As with detc, you must specify the correct output framerate (-ofps 24000/1001) when using MEncoder.
Heads up: further development onivtchas stopped, since thepullupandfilmdintfilters appear to be much more accurate. It's giving retired icon. ๐ซถ
๐ฆ pullup[=jl:jr:jt:jb:sb:mp]
Third-generation pulldown reversal (inverse telecine) filter โ and she can handle mixed hard-telecine, 24000/1001 fps progressive content, and 30000/1001 fps progressive content all at once. Main character energy. ๐
pullup is designed to be way more robust than detc or ivtc because it takes advantage of future context when making decisions. Like ivtc, it's stateless in the sense that it doesn't lock onto a pattern to follow โ instead it looks forward to the following fields to identify matches and rebuild progressive frames. It's still under development, but believed to be quite accurate. Slay.
jl,jr,jt, andjbโ these set the amount of "junk" to ignore at the left, right, top, and bottom of the image, respectively. Left/right are in units of8pixels, while top/bottom are in units of2lines. Default is8pixels on each side.sb(strict breaks) โ setting this to1reduces the chances ofpullupgenerating an occasional mismatched frame, but it may also cause an excessive number of frames to be dropped during high motion sequences. Conversely, setting it to-1makespullupmatch fields more easily. That can help with video where there's slight blurring between the fields, but it may also cause interlaced frames in the output. Pick your struggle. ๐mp(metric plane) โ set this to1or2to use a chroma plane instead of the luma plane forpullup's computations. It may improve accuracy on very clean source material, but more likely it'll decrease accuracy โ especially if there's chroma noise (rainbow effect) or any grayscale video. The main purpose of settingmpto a chroma plane is to reduce CPU load and makepullupusable in realtime on slow machines.
NOTE: always followpullupwith thesoftskipfilter when encoding, sopullupcan actually see each frame. If you don't, you'll get incorrect output and it'll usually crash โ due to design limitations in the codec/filter layer. Not a vibe. ๐
๐ง filmdint[=options]
Inverse telecine filter, similar to pullup up there. It's designed to handle any pulldown pattern โ including mixed soft and hard telecine, plus limited support for movies that got slowed down or sped up from their original framerate for TV. ๐บ
Only the luma plane is used to find the frame breaks. If a field has no match, it gets deinterlaced with simple linear approximation.
If the source is MPEG-2, this must be the first filter, so it can access the field-flags set by the MPEG-2 decoder. Depending on the source MPEG, you may be totally fine ignoring this advice โ as long as you don't see lots of "Bottom-first field" warnings.
With no options it does normal inverse telecine, and should be used together with mencoder -fps 30000/1001 -ofps 24000/1001. When this filter is used with MPlayer, it'll result in an uneven framerate during playback โ but it's still generally better than using pp=lb or no deinterlacing at all. โจ
You can specify multiple options separated by /.
crop=<w>:<h>:<x>:<y>โ just like thecropfilter, but faster, and it works on mixed hard and soft telecined content, plus when y isn't a multiple of4. If x or y would require cropping fractional pixels from the chroma planes, the crop area gets extended. This usually means x and y must be even.io=<ifps>:<ofps>โ for each ifps input frames, the filter will output ofps frames. The ratio ofifps/ofpsshould match the-fps/-ofpsratio. Could be used to filter movies broadcast on TV at a frame rate different from their original framerate.luma_only=<n>โ if n is nonzero, the chroma plane is copied unchanged. Useful for YV12 sampled TV, which discards one of the chroma fields.mmx2=<n>โ on x86, ifn=1use MMX2 optimized functions, ifn=2use 3DNow! optimized functions, otherwise use plain C. If this option isn't specified, MMX2 and 3DNow! are auto-detected โ use this option to override auto-detection.fast=<n>โ the larger n is, the more it speeds up the filter, at the expense of accuracy. Default value isn=3. If n is odd, a frame immediately following a frame marked with theREPEAT_FIRST_FIELDMPEG flag is assumed to be progressive โ so the filter won't spend any time on soft-telecined MPEG-2 content. This is the only effect of this flag if MMX2 or 3DNow! is available. Without MMX2 and 3DNow, ifn=0or1, the same calculations are used as withn=2or3. Ifn=2or3, the number of luma levels used to find the frame breaks is reduced from256to128, which results in a faster filter without losing much accuracy. Ifn=4or5, a faster but much less accurate metric is used to find the frame breaks โ which is more likely to misdetect high vertical detail as interlaced content. ๐verbose=<n>โ if n is nonzero, print the detailed metrics for each frame. Useful for debugging. ๐dint_thres=<n>โ deinterlace threshold, used during de-interlacing of unmatched frames. Larger value means less deinterlacing โ usen=256to completely turn off deinterlacing. Default isn=8.comb_thres=<n>โ threshold for comparing a top and bottom field. Defaults to128.diff_thres=<n>โ threshold to detect temporal change of a field. Default is128.sad_thres=<n>โ Sum of Absolute Difference threshold, default is64.
๐ธ softpulldown
This filter works only correct with MEncoder, and it acts on the MPEG-2 flags used for soft 3:2 pulldown (soft telecine). If you want to use the ivtc or detc filter on movies that are partly soft telecined, inserting this filter before them should make them more reliable. Teamwork, bestie. ๐ซถ
๐ divtc[=options]
Inverse telecine for deinterlaced video. Okay so picture this: 3:2-pulldown telecined video has lost one of its fields, or it's been deinterlaced using a method that keeps one field and interpolates the other. The result is juddering video that has every fourth frame duplicated. ๐ญ This filter is meant to find and drop those duplicates and restore the original film framerate.
When using this filter, you must specify -ofps that is 4/5 of the fps of the input file, and place the softskip later in the filter chain so that divtc sees all the frames.
Two different modes are available:
- One pass mode โ the default, and straightforward to use, but with the disadvantage that any changes in the telecine phase (lost frames or bad edits) cause momentary judder until the filter can resync again.
- Two pass mode โ avoids that by analyzing the whole video beforehand, so it has forward knowledge about the phase changes and can resync at the exact spot. ๐
These passes do not correspond to pass one and two of the encoding process. You must run an extra pass usingdivtcpass one before the actual encoding, throwing the resulting video away. Use-nosound -ovc raw -o /dev/nullto avoid wasting CPU power for this pass. You may add something likecrop=2:2:0:0afterdivtcto speed things up even more. Then usedivtcpass two for the actual encoding. If you use multiple encoder passes, usedivtcpass two for all of them.
The options are:
pass=1|2โ use two pass mode.file=<filename>โ set the two pass log filename (default:"framediff.log").threshold=<value>โ set the minimum strength the telecine pattern must have for the filter to believe in it (default:0.5). This is used to avoid recognizing false patterns from parts of the video that are very dark or very still.window=<numframes>โ set the number of past frames to look at when searching for pattern (default:30). A longer window improves the reliability of the pattern search, but a shorter window improves the reaction time to changes in the telecine phase. This only affects the one pass mode. The two pass mode currently uses a fixed window that extends to both future and past. ๐ฆphase=0|1|2|3|4โ sets the initial telecine phase for one pass mode (default:0). Bestie, the two pass mode literally sees the future ๐ so it can use the right phase from the very start โ but one pass mode can only guess. It'll catch the correct phase when it stumbles on it, and this option is what you use to fix the possible juddering at the beginning. The first pass of two pass mode uses this too, so if you save the output from the first pass, you get a constant phase result. Slay.deghost=<value>โ sets the deghosting threshold (0-255for one pass mode,-255-255for two pass mode, default0). If it's nonzero, deghosting mode is on. This one's for video that got deinterlaced by blending the fields together instead of dropping one of the fields ๐ซถ. Heads up: deghosting amplifies any compression artifacts in those blended frames, so the parameter value is used as a threshold to exclude pixels from deghosting that differ from the previous frame by less than the specified value. If two pass mode is in play, a negative value makes the filter analyze the whole video at the beginning of pass-2 to figure out whether it needs deghosting at all, then pick either zero or the absolute value of the parameter. Specify this option for pass-2 โ it makes no difference on pass-1.
โจ phase[=t|b|p|a|u|T|B|A|U][:v] โจ
Delays interlaced video by one field time so that the field order changes ๐ . The intended use is fixing PAL movies that were captured with the opposite field order to the film-to-video transfer. The options are:
tโ capture field order top-first, transfer bottom-first. The filter delays the bottom field.bโ capture bottom-first, transfer top-first. The filter delays the top field.pโ capture and transfer with the same field order. This mode only exists so the other options have something to refer to in the docs, but if you actually select it, the filter will faithfully do nothing ;-)aโ capture field order determined automatically by field flags, transfer opposite. The filter picks betweentandbmodes on a frame by frame basis using field flags. If no field information is available, it works just likeu.uโ capture unknown or varying, transfer opposite. The filter picks betweentandbon a frame by frame basis by analyzing the images and selecting the alternative that produces the best match between the fields.Tโ capture top-first, transfer unknown or varying. The filter picks betweentandpusing image analysis.Bโ capture bottom-first, transfer unknown or varying. The filter picks betweenbandpusing image analysis.Aโ capture determined by field flags, transfer unknown or varying. The filter picks betweent,bandpusing field flags and image analysis. If no field information is available, it works just likeU. This is the default mode ๐.Uโ both capture and transfer unknown or varying. The filter picks betweent,bandpusing image analysis only.vโ verbose operation. Prints the selected mode for each frame and the average squared difference between fields for thet,b, andpalternatives.
๐ธ telecine[=start] ๐ธ
Applies the 3:2 'telecine' process to increase framerate by 20% ๐ฅ. Ngl, this most likely will not work correctly with MPlayer, but it can be used with mencoder -fps 30000/1001 -ofps 30000/1001 -vf telecine. Both fps options are essential, bestie! (A/V sync will break if they're wrong ๐ญ.) The optional start parameter tells the filter where in the telecine pattern to start (0-3).
๐ฆ tinterlace[=mode] ๐ฆ
Temporal field interlacing โ merges pairs of frames into an interlaced frame, halving the framerate. Even frames get moved into the upper field, odd frames into the lower field โจ. You can use this to fully reverse the effect of the tfields filter (in mode 0). Available modes are:
0โ move odd frames into the upper field, even into the lower field, generating a full-height frame at half framerate.1โ only output odd frames, even frames are dropped; height unchanged.2โ only output even frames, odd frames are dropped; height unchanged.3โ expand each frame to full height, but pad alternate lines with black; framerate unchanged.4โ interleave even lines from even frames with odd lines from odd frames. Height unchanged at half framerate.
๐ tfields[=mode[:field_dominance]] ๐
Temporal field separation โ splits fields into frames, doubling the output framerate. Like the telecine filter, tfields might not work completely right unless you use it with MEncoder and set both -fps and -ofps to the desired (double) framerate!
<mode>0: leave fields unchanged (will jump/flicker ๐).1: interpolate missing lines. (The algorithm used might not be so good ๐.)2: translate fields by 1/4 pixel with linear interpolation (no jump).4: translate fields by 1/4 pixel with 4tap filter (higher quality) (default).
<field_dominance>(DEPRECATED)-1: auto (default). Only works if the decoder exports the appropriate information and no other filters which discard that information come beforetfieldsin the filter chain โ otherwise it falls back to0(top field first).0: top field first1: bottom field first
NOTE: This option will possibly be removed in a future version. Use -field-dominance instead.
๐ yadif=[mode[:field_dominance]] ๐
Yet another deinterlacing filter.
<mode>0: output 1 frame for each frame.1: output 1 frame for each field.2: like0but skips spatial interlacing check.3: like1but skips spatial interlacing check.
<field_dominance>(DEPRECATED) โ operates liketfields.
NOTE: This option will possibly be removed in a future version. Use -field-dominance instead.
โญ mcdeint=[mode[:parity[:qp]]] โญ
Motion compensating deinterlacer. It needs one field per frame as input, so it must be used together with tfields=1 or yadif=1/3 or an equivalent ๐ซถ.
<mode>0: fast1: medium2: slow, iterative motion estimation3: extra slow, like2plus multiple reference frames
<parity>โ0or1selects which field to use (note: no autodetection yet!).<qp>โ higher values should result in a smoother motion vector field but less optimal individual vectors.
๐ boxblur=radius:power[:radius:power] ๐
box blur ๐ซ
<radius>โ blur filter strength<power>โ number of filter applications
๐ sab=radius:pf:colorDiff[:radius:pf:colorDiff] ๐
shape adaptive blur
<radius>โ blur filter strength (~0.1-4.0) (slower if larger)<pf>โ prefilter strength (~0.1-2.0)<colorDiff>โ maximum difference between pixels to still be considered (~0.1-100.0)
๐ง smartblur=radius:strength:threshold[:radius:strength:threshold] ๐ง
smart blur โจ
<radius>โ blur filter strength (~0.1-5.0) (slower if larger)<strength>โ blur (0.0-1.0) or sharpen (-1.0-0.0)<threshold>โ filter all (0), filter flat areas (0-30) or filter edges (-30-0)
๐ perspective=x0:y0:x1:y1:x2:y2:x3:y3:t ๐
Corrects the perspective of movies not filmed perpendicular to the screen ๐.
- *
<x0>,<y0>,... โ coordinates of the top left, top right, bottom left, bottom right corners <t>โ linear (0) or cubic resampling (1)
๐ 2xsai ๐
Scales and smooths the image with the 2x scale and interpolate algorithm.
๐ฆ 1bpp ๐ฆ
1bpp bitmap to YUV/BGR 8/15/16/32 conversion
๐ down3dright[=lines] ๐
Repositions and resizes stereoscopic images. Extracts both stereo fields and places them side by side, resizing them to maintain the original movie aspect ๐ .
<lines>โ number of lines to select from the middle of the image (default:12)
๐ bmovl=hidden:opaque:fifo ๐
The bitmap overlay filter reads bitmaps from a FIFO and displays them on top of the movie, allowing some transformations on the image. Also see TOOLS/bmovl-test.c for a small bmovl test program ๐ฅ.
<hidden>โ sets the default value of the 'hidden' flag (0=visible,1=hidden).<opaque>โ sets the default value of the 'opaque' flag (0=transparent,1=opaque).<fifo>โ path/filename for the FIFO (named pipe connectingmplayer -vf bmovlto the controlling application)
also these FIFO commands?? they're literally how you talk to the overlay ๐ Send them in, and for the ones that carry image data, the raw bytes come right after:
RGBA32 width height xpos ypos alpha clear
- followed by
width*height*4Bytes of raw RGBA32 data.
ABGR32 width height xpos ypos alpha clear
- followed by
width*height*4Bytes of raw ABGR32 data.
RGB24 width height xpos ypos alpha clear
- followed by
width*height*3Bytes of raw RGB24 data.
BGR24 width height xpos ypos alpha clear
- followed by
width*height*3Bytes of raw BGR24 data.
ALPHA width height xpos ypos alpha
- Change the alpha transparency of the specified area, that's it, that's the whole job โจ
CLEAR width height xpos ypos
- Clear the area. poof. gone.
OPAQUE
- Kills all alpha transparency at once. To turn transparency back on, send
ALPHA 0 0 0 0 0. yes, that's the flip-flop, that's the ritual ๐ซถ
HIDE
- Hide the bitmap. it's shy now.
SHOW
- Show the bitmap again. main character returns ๐
okay and here's what all those arguments actually mean:
<width>,<height>โ the size of the image / the area you're messing with.<xpos>,<ypos>โ where the blitting starts, x/y style.<alpha>โ sets the alpha difference. And bestie, here's the cute part: set this to-255and then you can fire off a whole sequence ofALPHA-commands hitting-225,-200,-175etc. and get yourself a genuinely gorgeous fade-in effect! ;)0: same as the original255: makes everything opaque-255: makes everything transparent
<clear>โ wipes the framebuffer before blitting, if you want.0: the image just gets blitted on top of the old one, so you do not need to send1.8MBof RGBA32 data every single time a tiny part of the screen updates. efficiency slay.1: clear it, clean slate, fresh start.
๐ framestep=I|[i]step
Renders only every n-th frame, or only intra frames (aka keyframes). Pick your fighter.
If you call the filter with I (uppercase, important, capitalisation matters ๐ค) as the parameter, then only keyframes get rendered. For DVDs that generally means one in every 15/12 frames (IBBPBBPBBPBBPBB), and for AVI it means every scene change or every keyint value (go look at the -lavcopts keyint= value if you're using MEncoder to encode the video).
When a keyframe shows up, it prints an 'I!' string followed by a newline character, which leaves the current line of MPlayer/MEncoder output sitting on your screen โ because that line has the time (in seconds) and the frame number of the keyframe in it. (You can totally use that info to split the AVI. free tool, no cap.)
If you call the filter with a numeric parameter 'step' instead, then only one in every 'step' frames gets rendered.
Put an 'i' (lowercase this time, yes it's different) before the number and an 'I!' gets printed, just like with the I parameter.
And if you give only the i? Nothing happens to the frames at all, it just prints I!. that's it. that's the whole vibe check.
๐ tile=xtiles:ytiles:output:start:delta
Tiles a whole series of images into one single, bigger image. Iconic behaviour honestly. If you leave out a parameter or use a value less than 0, the default value kicks in. You can also just stop whenever you're satisfied (... -vf tile=10:5 ...). Also โ probably a good idea to put the scale filter before tile :-)
The parameters, in order:
<xtiles>โ number of tiles on the x axis (default:5)<ytiles>โ number of tiles on the y axis (default:5)<output>โ renders the tile once'output'number of frames are reached, where'output'should be a number less thanxtile * ytile. Missing tiles are just left blank, no drama. You could, for example, write an8 * 7tile every 50 frames to have one image every 2 seconds @ 25 fps. math slay ๐งฎ<start>โ outer border thickness in pixels (default:2)<delta>โ inner border thickness in pixels (default:4)
๐ฆ delogo[=x:y:w:h:t]
Suppresses a TV station logo via a simple interpolation of the surrounding pixels. You literally just set a rectangle covering the logo and watch it disappear โจ (and sometimes something even uglier appears instead โ your mileage may vary, no promises bestie ๐).
<x>,<y>โ top left corner of the logo<w>,<h>โ width and height of the cleared rectangle<t>โ thickness of the fuzzy edge of the rectangle (it gets added towandh). Set it to-1and a green rectangle gets drawn on the screen so you can actually find the rightx,y,w,hparameters without losing your mind. genuinely helpful.file=<file>โ you can specify a text file to load the coordinates from. Each line must have a timestamp (in seconds, and in ascending order) plus the"x:y:w:h:t"coordinates (tcan be omitted).
๐ธ remove-logo=/path/to/logo_bitmap_file_name.pgm
Suppresses a TV station logo, but this time using a PGM or PPM image file to work out which pixels actually make up the logo. Heads up: the width and height of the image file must match those of the video stream you're processing โ no mixing sizes. It uses the image filter and a circular blur algorithm to remove the logo.
/path/to/logo_bitmap_file_name.pgmโ[path]+ filename of the filter image.
๐ zrmjpeg[=options]
Software YV12 to MJPEG encoder, built for use with the zr2 video output device. niche but powerful.
maxheight=<h>|maxwidth=<w>โ these options set the maximum width and height the zr card can handle (the MPlayer filter layer currently cannot query those, so you gotta tell it, it's not being lazy it just can't).{dc10+,dc10,buz,lml33}-{PAL|NTSC}โ use these to setmaxwidthandmaxheightautomatically to the values known for that card/mode combo. Valid options look like:dc10-PALandbuz-NTSC(default:dc10+PAL).color|bwโ pick color or black and white encoding. Black and white is faster. Color is the default (because obviously ๐ ).hdec={1,2,4}โ horizontal decimation1,2or4.vdec={1,2,4}โ vertical decimation1,2or4.quality=1-20โ set JPEG compression quality,[BEST]1โ20[VERY BAD]. read the brackets, they're telling you something.fd|nofdโ by default, decimation is only performed if the Zoran hardware can upscale the resulting MJPEG images back to the original size. Thefdoption tells the filter to always perform the requested decimation (ugly). you've been warned, it said ugly itself.
๐ screenshot=prefix
Lets you grab screenshots of the movie using slave mode commands, which you can bind to keypresses. Go read the slave mode documentation and the INTERACTIVE CONTROL section for the details. By default, files named 'shotNNNN.png' get saved in the working directory, using the first available number โ and no files will be overwritten, she's polite like that. Specify a prefix to change the name or the location, e.g. -vf screenshot=shots/now will save the files in the directory shots with nowNNNN.png as the name. The filter has zero overhead when it's not being used and accepts an arbitrary colorspace, so it's completely safe to drop it in your configuration file. Just make sure the screenshot filter gets added after all the other filters whose effect you want recorded in the saved image. E.g. it should be the very last filter if you want an exact screenshot of what you see on the monitor. order matters, bestie ๐ซถ
โญ ass
Moves SSA/ASS subtitle rendering to an arbitrary point in the filter chain. Only useful with the -ass option. that's the whole thing, short and sweet.
EXAMPLE:
-vf ass,screenshot
- Moves SSA/ASS rendering before the
screenshotfilter. Screenshots taken this way will contain subtitles. yes, subbed screenshots, we love to see it ๐
๐ blackframe[=amount:threshold]
Detects frames that are (almost) completely black. Super useful for spotting chapter transitions or commercials โ the ad-break detector of your dreams. Output lines consist of: the frame number of the detected frame, the percentage of blackness, the frame type, and the frame number of the last encountered keyframe. four things, in that order.
<amount>โ percentage of the pixels that have to be below the threshold (default:98).<threshold>โ threshold below which a pixel value is considered black (default:32).
๐ง stereo3d[=in:out]
Stereo3d converts between different stereoscopic image formats. 3D girlies rise ๐
<in>โ stereoscopic image format of the input. Possible values:sbslorside_by_side_left_firstโ side by side parallel (left eye left, right eye right)sbsrorside_by_side_right_firstโ side by side crosseye (right eye left, left eye right)sbs2lorside_by_side_half_width_left_firstโ side by side with half width resolution (left eye left, right eye right)sbs2rorside_by_side_half_width_right_firstโ side by side with half width resolution (right eye left, left eye right)ablorabove_below_left_firstโ above-below (left eye above, right eye below)ablorabove_below_right_firstโ above-below (right eye above, left eye below)ab2lorabove_below_half_height_left_firstโ above-below with half height resolution (left eye above, right eye below)ab2rorabove_below_half_height_right_firstโ above-below with half height resolution (right eye above, left eye below)
<out>
The stereoscopic image format of the output ๐ โ this is where you tell it what kind of 3D situation you're tryna produce. Possible values are all the input formats plus these extra iconic ones:
arcgoranaglyph_red_cyan_grayโ anaglyph red/cyan gray (red filter on left eye, cyan filter on right eye) ๐archoranaglyph_red_cyan_half_colorโ anaglyph red/cyan half colored (red filter on left eye, cyan filter on right eye)arccoranaglyph_red_cyan_colorโ anaglyph red/cyan color (red filter on left eye, cyan filter on right eye)arcdoranaglyph_red_cyan_duboisโ anaglyph red/cyan color optimized with the least squares projection of dubois (red filter on left eye, cyan filter on right eye) โจagmgoranaglyph_green_magenta_grayโ anaglyph green/magenta gray (green filter on left eye, magenta filter on right eye)agmhoranaglyph_green_magenta_half_colorโ anaglyph green/magenta half colored (green filter on left eye, magenta filter on right eye)agmcoranaglyph_green_magenta_colorโ anaglyph green/magenta colored (green filter on left eye, magenta filter on right eye)aybgoranaglyph_yellow_blue_grayโ anaglyph yellow/blue gray (yellow filter on left eye, blue filter on right eye)aybhoranaglyph_yellow_blue_half_colorโ anaglyph yellow/blue half colored (yellow filter on left eye, blue filter on right eye)aybcoranaglyph_yellow_blue_colorโ anaglyph yellow/blue colored (yellow filter on left eye, blue filter on right eye)irlorinterleave_rows_left_firstโ Interleaved rows (left eye has top row, right eye starts on next row)irrorinterleave_rows_right_firstโ Interleaved rows (right eye has top row, left eye starts on next row)mlormono_leftโ mono output (left eye only) ๐๏ธmrormono_rightโ mono output (right eye only)
NOTE: bestie, listen โ to use either of the interleaved-rows output formats to display full-screen on a row-interleaved 3D display, you will need to scale the video to the correct height first using the"scale"filter, if it is not already the right height. Typically, that is 1080 rows (so use e.g."-vf scale=1440:1080,stereo3d=sbsl:irl"for a 720p side-by-side encoded movie). Don't skip the scale step, it will look a whole mess ๐ญ
gradfun[=strength[:radius]]
Okay so this one fixes the banding artifacts that are sometimes introduced into nearly flat regions by truncation to 8bit colordepth ๐ It interpolates the gradients that should go where the bands are, and dithers them. Literally smoothing out the ugly stripes. Slay.
This filter is designed for playback only. Do not use it prior to lossy compression, because compression tends to lose the dither and bring back the bands ๐ So like, playback, yes. Pre-encode, absolutely not.
<strength>
Maximum amount by which the filter will change any one pixel. Also the threshold for detecting nearly flat regions (default: 1.2).
<radius>
Neighborhood to fit the gradient to. Larger radius makes for smoother gradients, but also prevents the filter from modifying pixels near detailed regions (default: 16). So it's a vibe tradeoff, iykyk ๐ธ
fixpts[=options]
Fixes the presentation timestamps (PTS) of the frames ๐ By default, the PTS passed to the next filter is dropped, but the following options can change that:
printโ Print the incoming PTS.fps=<fps>โ Specify a frame per second value.start=<pts>โ Specify an initial value for the PTS.autostart=<n>โ Uses the *n*th incoming PTS as the initial PTS. All previous PTS are kept, so setting a huge value or-1keeps the PTS intact. ๐autofps=<n>โ Uses the *n*th incoming PTS after the end ofautostartto determine the framerate.
EXAMPLE:
-vf fixpts=fps=24000/1001,ass,fixpts
Generates a new sequence of PTS, uses it for ASS subtitles, then drops it โจ Generating a new sequence is useful when the timestamps are reset during the program; this is frequent on DVDs. Dropping it may be necessary to avoid confusing encoders.
NOTE: Using this filter together with any sort of seeking (including -ss and EDLs) may make demons fly out of your nose ๐ญ๐ fr fr, they warned us.
๐ GENERAL ENCODING OPTIONS (MENCODER ONLY) ๐
Okay bestie, this whole chunk is MEncoder-only, so if you're just playing stuff, you can vibe past it. But if you're encoding, this is your moment. Slay. โจ
-audio-delay<any floating-point number> โ delays either audio or video by setting a delay field in the header (default:0.0). Ngl this is lowkey sneaky: it does not delay either stream while encoding, but the player will see the delay field and compensate accordingly. Positive values delay the audio, negative values delay the video. And heads up โ this is the exact opposite of the-delayoption. So like, if a video plays correctly with-delay 0.2, you can fix the video with MEncoder by using-audio-delay -0.2. Iconic but confusing, iykyk.
Currently, this option only works with the default muxer (-of avi). If you are using a different muxer, then you must use -delay instead.
-audio-density<1-50> โ number of audio chunks per second (default is 2 for 0.5s long audio chunks).
NOTE: CBR only, VBR ignores this as it puts each packet in a new chunk. ๐
-audio-preload<0.0-2.0> โ sets up the audio buffering time interval (default:0.5s). Cozy little buffer ๐ซถ-fafmttag<format> โ can be used to override the audio format tag of the output file.
EXAMPLE:
-fafmttag 0x55
Will have the output file contain 0x55 (mp3) as audio format tag.
-ffourcc<fourcc> โ can be used to override the video fourcc of the output file.
EXAMPLE:
-ffourcc div3
Will have the output file contain 'div3' as video fourcc.
-force-avi-aspect<0.2-3.0> โ override the aspect stored in the AVI OpenDML vprp header. This can be used to change the aspect ratio with'-ovc copy'. ๐ฆ-frameno-file<filename> (DEPRECATED) โ specify the name of the audio file with framenumber mappings created in the first (audio only) pass of a special three pass encoding mode.
NOTE: Using this mode will most likely give you A-V desync. Do not use it. It is kept for backwards compatibility only and will possibly be removed in a future version. So like... literally do not. ๐
-hr-edl-seekโ use a more precise, but much slower method for skipping areas. Areas marked for skipping are not seeked over, instead all frames are decoded, but only the necessary frames are encoded. This allows starting at non-keyframe boundaries.
NOTE: Not guaranteed to work right with '-ovc copy'.
-info<option1:option2:...> (AVI only) โ specify the info header of the resulting AVI file.
Available options are:
helpโ show this description.name=<value>โ title of the workartist=<value>โ artist or author of the workgenre=<value>โ original work categorysubject=<value>โ contents of the workcopyright=<value>โ copyright informationsrcform=<value>โ original format of the digitized materialcomment=<value>โ general comments about the work
-noautoexpandโ do not automatically insert the expand filter into the MEncoder filter chain. Useful to control at which point of the filter chain subtitles are rendered when hardcoding subtitles onto a movie. ๐-noencodedupsโ do not attempt to encode duplicate frames in duplicate; always output zero-byte frames to indicate duplicates. Zero-byte frames will be written anyway unless a filter or encoder capable of doing duplicate encoding is loaded. Currently the only such filter isharddup.-noodml(-of avionly) โ do not write OpenDML index for AVI files >1GB. Big-file girlies stay mad ๐ญ-noskipโ do not skip frames. Periodt.-o<filename> โ outputs to the given filename. If you want a default output filename, you can put this option in the MEncoder config file. Main character move.-oac<codec name> โ encode with the given audio codec (no default set).
NOTE: Use -oac help to get a list of available audio codecs.
EXAMPLE:
-oac copy
no encoding, just streamcopy
-oac pcm
Encode to uncompressed PCM.
-oac mp3lame
Encode to MP3 (using LAME).
-oac lavc
Encode with a libavcodec codec.
-of<format> (BETA CODE!) โ encode to the specified container format (default: AVI).
NOTE: Use -of help to get a list of available container formats.
EXAMPLE:
-of avi
Encode to AVI.
-of mpeg
Encode to MPEG (also see -mpegopts).
-of lavf
Encode with libavformat muxers (also see -lavfopts).
-of rawvideo
raw video stream (no muxing - one video stream only)
-of rawaudio
raw audio stream (no muxing - one audio stream only)
-ofps<fps> โ specify a frames per second (fps) value for the output file, which can be different from that of the source material. Must be set for variable fps (ASF, some MOV) and progressive (30000/1001 fps telecined MPEG) files. ๐ฅ-ovc<codec name> โ encode with the given video codec (no default set).
NOTE: Use -ovc help to get a list of available video codecs.
EXAMPLE:
-ovc copy
no encoding, just streamcopy
-ovc raw
Encode to an arbitrary uncompressed format (use '-vf format' to select).
-ovc lavc
Encode with a libavcodec codec.
-passlogfile<filename> โ dump first pass information to <filename> instead of the defaultdivx2pass.login two pass encoding mode. ๐-skiplimit<value> โ specify the maximum number of frames that may be skipped after encoding one frame (-noskiplimitfor unlimited).-vobsubout<basename> โ specify the basename for the output.idxand.subfiles. This turns off subtitle rendering in the encoded movie and diverts it to VOBsub subtitle files. ๐-vobsuboutid<langid> โ specify the language two letter code for the subtitles. This overrides what is read from the DVD or the.ifofile.-vobsuboutindex<index> โ specify the index of the subtitles in the output files (default:0).-force-key-frames<time>,<time>,... โ force key frames at the specified timestamps, more precisely at the first frame after each specified time.
This option can be used to ensure that a seek point is present at a chapter mark or any other designated place in the output file.
The timestamps must be specified in ascending order. โญ
Since MEncoder does not send timestamps along the filter chain, you probably need to use the fixpts filter for this option to work.
Not all codecs support forced key frames. Currently, support is only implemented for the following encoders: lavc, x264, xvid.
๐ง CODEC SPECIFIC ENCODING OPTIONS (MENCODER ONLY) ๐ง
You can specify codec specific encoding parameters using the following syntax:
-<codec>opts <option1[=value1]:option2[=value2]:...>
Where <codec> may be: lavc, xvidenc, mp3lame, toolame, twolame, nuv, xvfw, faac, x264enc, mpeg, lavf.
๐ต mp3lame (-lameopts) ๐ต
helpโ get helpvbr=<0-4>โ variable bitrate method0โ cbr1โ mt2โ rh (default)3โ abr4โ mtrh
abrโ average bitratecbrโ constant bitrate. Also forces CBR mode encoding on subsequent ABR presets modes.br=<0-1024>โ bitrate in kbps (CBR and ABR only)q=<0-9>โ quality (0 - highest, 9 - lowest) (VBR only)aq=<0-9>โ algorithmic quality (0 - best/slowest, 9 - worst/fastest)ratio=<1-100>โ compression ratiovol=<0-10>โ audio input gainmode=<0-3>โ (default: auto)0โ stereo1โ joint-stereo2โ dualchannel3โ mono
padding=<0-2>โ0โ none1โ all2โ adjust
fastโ switch on faster encoding on subsequent VBR presets modes. This results in slightly lower quality and higher bitrates. Speed vs. quality, the eternal struggle ๐ญhighpassfreq=<freq>โ set a highpass filtering frequency in Hz. Frequencies below the specified one will be cut off. A value of-1will disable filtering, a value of0will let LAME choose values automatically.lowpassfreq=<freq>โ set a lowpass filtering frequency in Hz. Frequencies above the specified one will be cut off. A value of-1will disable filtering, a value of0will let LAME choose values automatically.preset=<value>โ preset valueshelpโ print additional options and information about presets settings.mediumโ VBR encoding, good quality, 150-180 kbps bitrate rangestandardโ VBR encoding, high quality, 170-210 kbps bitrate rangeextremeโ VBR encoding, very high quality, 200-240 kbps bitrate rangeinsaneโ CBR encoding, highest preset quality, 320 kbps bitrate<8-320>โ ABR encoding at average given kbps bitrate
EXAMPLES:
fast:preset=standard
suitable for most people and most music types and already quite high quality
cbr:preset=192
Encode with ABR presets at a 192 kbps forced constant bitrate.
preset=172
Encode with ABR presets at a 172 kbps average bitrate.
preset=extreme
for people with extremely good hearing and similar equipment ๐
๐ธ toolame and twolame (-toolameopts and -twolameopts respectively) ๐ธ
br=<32-384>โ in CBR mode this parameter indicates the bitrate in kbps, when in VBR mode it is the minimum bitrate allowed per frame. VBR mode will not work with a value below 112. Like, it just won't, bestie ๐vbr=<-50-50>(VBR only) โ variability range; if negative the encoder shifts the average bitrate towards the lower limit, if positive towards the higher. When set to0CBR is used (default). ๐ฆmaxvbr=<32-384>(VBR only) โ the max bitrate each frame is allowed to hit, in kbps ๐mode=<stereo | jstereo | mono | dual>โ the channel mode, bestie (default:monoif the audio's 1-channel,stereoif it's not) โจpsy=<-1-4>โ which psychoacoustic model to use (default:2) ๐errprot=<0 | 1>โ turn on error protection ๐ก๏ธdebug=<0-10>โ how much debug noise you want ๐ฆ
faac (-faacopts) ๐ธ
br=<bitrate>โ average bitrate in kbps, and heads up: this is mutually exclusive withquality๐quality=<1-1000>โ quality mode, higher = better, and yeah it's mutually exclusive withbr๐ซถobject=<1-4>โ the object type complexity, pick your fighter:1โ MAIN (default)2โ LOW3โ SSR4โ LTP (extremely slow, like extremely ๐ญ)
mpeg=<2|4>โ which MPEG version (default:4) ๐tnsโ enables temporal noise shaping โจcutoff=<0-sampling_rate/2>โ the cutoff frequency (default:sampling_rate/2) ๐rawโ stores the bitstream as raw payload with extradata in the container header (default:0, which corresponds to ADTS). Do NOT set this flag unless you explicitly need it, or you will not be able to remux the audio stream later on ๐ญ
fr fr, that's a one-way door โ read it again before you type it ๐
lavc (-lavcopts) ๐ฅ
So many libavcodec (lavc for short) options are documented tersely, like genuinely crammed. If you need the full tea, read the source, bestie ๐
EXAMPLE:
vcodec=msmpeg4:vbitrate=1800:vhq:keyint=250
o=<key>=<value>[,<key>=<value>[,...]]โ passes AVOptions straight through to the libavcodec encoder. Ngl, a patch that makes theo=unneeded and just lets all unknown options flow through the AVOption system would be welcome, so if that's your thingโฆ ๐ The full list of AVOptions lives in the FFmpeg manual. Just know some AVOptions may conflict with MEncoder options, so vibe check them together ๐ฆ
EXAMPLE:
o=bt=100k
acodec=<value>โ the audio codec (default:mp2) ๐ac3โ Dolby Digital (AC-3)adpcm_*โ Adaptive PCM formats โ the HTML documentation has the deetsflacโ Free Lossless Audio Codec (FLAC)g726โ G.726 ADPCMlibfaacโ Advanced Audio Coding (AAC) โ using FAAClibmp3lameโ MPEG-1 audio layer 3 (MP3) โ using LAMEmp2โ MPEG-1 audio layer 2 (MP2)pcm_*โ PCM formats โ the HTML documentation has the deetsroq_dpcmโ Id Software RoQ DPCMsonicโ experimental simple lossy codecsoniclsโ experimental simple lossless codecvorbisโ Vorbiswmav1โ Windows Media Audio v1wmav2โ Windows Media Audio v2
abitrate=<value>โ audio bitrate in kbps (default:224) โจatag=<value>โ use the Windows audio format tag you specify, likeatag=0x55๐bit_exactโ uses only bit exact algorithms (except (I)DCT). On top of that,bit_exactdisables several optimizations, so it should only ever be used for regression tests โ the kind that need binary identical files even if the encoder version changes. It also suppresses theuser_dataheader in MPEG-4 streams.
Do not use this option unless you know exactly what you are doing. Like, exactly exactly ๐ญ
threads=<1-16>โ the max number of threads to use (default:1). Heads up: it may have a slight negative effect on motion estimation ๐vcodec=<value>โ use the codec you specify (default:mpeg4) ๐asv1โ ASUS Video v1asv2โ ASUS Video v2dvvideoโ Sony Digital Videoffv1โ FFmpeg's lossless video codecffvhuffโ nonstandard 20% smaller HuffYUV using YV12flvโ Sorenson H.263 used in Flash Videoh261โ H.261h263โ H.263h263pโ H.263+huffyuvโ HuffYUVlibtheoraโ Theoralibx264โ x264 H.264/AVC MPEG-4 Part 10libxvidโ Xvid MPEG-4 Part 2 (ASP)ljpegโ Lossless JPEGmjpegโ Motion JPEGmpeg1videoโ MPEG-1 videompeg2videoโ MPEG-2 videompeg4โ MPEG-4 (DivX 4/5)msmpeg4โ DivX 3msmpeg4v2โ MS MPEG4v2roqvideoโ ID Software RoQ Videorv10โ an old RealVideo codecsnow(also see:vstrict) โ FFmpeg's experimental wavelet-based codecsvq1โ Apple Sorenson Video 1wmv1โ Windows Media Video, version 1 (AKA WMV7)wmv2โ Windows Media Video, version 2 (AKA WMV8)
vqmin=<1-31>โ the minimum quantizer, and every value has lore:1โ Not recommended (much larger file, little quality difference, and weird side effects:msmpeg4andh263will be very low quality, ratecontrol will be confused resulting in lower quality, and some decoders will not be able to decode it) ๐2โ Recommended for normalmpeg4/mpeg1videoencoding (default) ๐3โ Recommended forh263(p)/msmpeg4. The reason for preferring3over2is that2could lead to overflows. (This will be fixed forh263(p)by changing the quantizer per MB in the future;msmpeg4cannot be fixed as it does not support that.) ๐ซถ
lmin=<0.01-255.0>โ minimum frame-level Lagrange multiplier for ratecontrol (default:2.0). Lavc will rarely use quantizers below the value oflmin. Loweringlminmakes lavc more likely to choose lower quantizers for some frames โ but never lower thanvqmin. Likewise, raisinglminmakes lavc less likely to pick low quantizers, even ifvqminwould've allowed them. You probably wantlminroughly equal tovqmin. When adaptive quantization is in use, changinglmin/lmaxmay have less of an effect; seemblmin/mblmax๐ธlmax=<0.01-255.0>โ maximum Lagrange multiplier for ratecontrol (default:31.0) โจmblmin=<0.01-255.0>โ minimum macroblock-level Lagrange multiplier for ratecontrol (default:2.0). This parameter affects adaptive quantization options likeqprd,lumi_mask, etc. ๐ฆmblmax=<0.01-255.0>โ maximum macroblock-level Lagrange multiplier for ratecontrol (default:31.0) ๐vqscale=<0-31>โ constant quantizer / constant quality encoding (this selects fixed quantizer mode). Lower value = better quality but bigger files (default:-1). With thesnowcodec, value0means lossless encoding. Since the other codecs don't support that,vqscale=0will have an undefined effect. And1is not recommended (seevqminfor the deets) โ ๏ธvqmax=<1-31>โ the maximum quantizer;10-31should be a sane range (default:31) ๐vqdiff=<1-31>โ maximum quantizer difference between consecutive I- or P-frames (default:3) ๐vmax_b_frames=<0-4>โ maximum number of B-frames between non-B-frames:0โ no B-frames (default)0-2โ sane range for MPEG-4
vme=<0-5>โ the motion estimation method. The available methods are:0โ none (very low quality)1โ full (slow, currently unmaintained and disabled)2โ log (low quality, currently unmaintained and disabled)3โ phods (low quality, currently unmaintained and disabled)4โ EPZS: size=1 diamond, size can be adjusted with the*diaoptions (default)5โ X1 (experimental, currently aliased to EPZS)8โ iter (iterative overlapped block, only used insnow)
NOTE: 0-3 currently ignores the amount of bits spent, so quality may be low ๐ฌ
me_range=<0-9999>โ motion estimation search range (default:0(unlimited)) ๐ฅmbd=<0-2>(also see*cmp,qpel) โ the macroblock decision algorithm (high quality mode): it encodes each macro block in all modes and picks the best. This is slow but gives better quality and file size. Whenmbdis set to1or2, the value ofmbcmpis ignored when comparing macroblocks (thembcmpvalue is still used elsewhere though, in particular the motion search algorithms). If any comparison setting (precmp,subcmp,cmp, ormbcmp) is nonzero, however, a slower but better half-pel motion search gets used, regardless of whatmbdis set to. And ifqpelis set, quarter-pel motion search will be used regardless ๐0โ Use comparison function given bymbcmp(default).1โ Select the MB mode which needs the fewest bits (=vhq).2โ Select the MB mode which has the best rate distortion.
vhqโ same asmbd=1, kept around for compatibility reasons ๐ซถv4mvโ allows 4 motion vectors per macroblock (slightly better quality). Works better if used withmbd>0โจobmcโ overlapped block motion compensation (H.263+) ๐loopโ loop filter (H.263+) โ note, this is broken ๐keyint=<0-300>โ the maximum interval between keyframes, in frames (default:250, or one keyframe every ten seconds in a 25fps movie โ this is the recommended default for MPEG-4). Most codecs require regular keyframes to limit the accumulation of mismatch error. Keyframes are also needed for seeking, since you can only seek to a keyframe โ but keyframes take more space than other frames, so bigger numbers here mean slightly smaller files but less precise seeking.0is equivalent to1, which makes every frame a keyframe. Values >300are not recommended because the quality might be bad depending upon decoder, encoder and luck ๐ It's common for MPEG-1/2 to use values <=30๐ธsc_threshold=<-1000000000-1000000000>โ this is the scene-change detection sensitivity dial ๐. A keyframe gets inserted by libavcodec whenever it sniffs out a scene change, and this option tells it how dramatic the sniffing should be.-1000000000= "there's a scene change on literally every frame",1000000000= "no scene changes ever, nothing to see here" (default:0).sc_factor=<any positive integer>โ makes frames with higher quantizers more likely to trip the scene-change detector and convince libavcodec to drop an I-frame (default:1) โจ.1-16is the sane zone. Values between2and6may give you bumping PSNR (up to like0.04dB) plus way better I-frame placement in high-motion scenes. Go higher than6and you get very slightly better PSNR (about0.01dB more thansc_factor=6) but the visual quality gets noticeably worse, bestie, so don't be greedy ๐.vb_strategy=<0-2>(pass one only) โ the strategy for picking between I/P/B-frames:0โ always use the maximum number of B-frames (default).1โ dodge B-frames in high-motion scenes. Peep theb_sensitivityoption to tune this strategy.2โ places B-frames more or less optimally so you get maximum quality (but slower ๐ญ). Tuningbrd_scaleis your move if you wanna soften the speed hit.
b_sensitivity=<any integer greater than 0>โ adjusts how sensitivelyvb_strategy=1detects motion and side-steps B-frames (default:40). Lower sensitivity = more B-frames. More B-frames usually means better PSNR, but too many can hurt quality in high-motion scenes. Unless there's an absolutely unhinged amount of motion, you can safely dropb_sensitivitybelow the default;10is a reasonable value in most cases ๐ .brd_scale=<0-10>โ downscales frames for dynamic B-frame decision (default:0). Every time you bumpbrd_scaleby one, the frame dimensions get divided by two, which speeds things up by a factor of four ๐ฅ. Both dimensions of the fully downscaled frame have to be even numbers, sobrd_scale=1requires the original dimensions to be multiples of four,brd_scale=2requires multiples of eight, etc. In other words: the dimensions of the original frame must both be divisible by2^(brd_scale+1)with no remainder, periodt.bidir_refine=<0-4>โ refines the two motion vectors used in bidirectional macroblocks instead of re-using vectors from the forward and backward searches. No B-frames means this option does nothing at all, bestie:0โ disabled (default).1-4โ use a wider search (bigger values are slower).
vpass=<1-3>โ flips on internal two (or more) pass mode. Only specify this if you actually wanna do two (or more) pass encoding ๐:1โ first pass (also peepturbo).2โ second pass.3โ Nth pass (second and subsequent passes of N-pass encoding).
Here's how it works and how to use it, so listen up: The first pass (vpass=1) writes the statistics file. You might wanna deactivate some CPU-hungry options, exactly like "turbo" mode does. In two pass mode, the second pass (vpass=2) reads the statistics file and bases ratecontrol decisions on it. In N-pass mode, the second pass (vpass=3, and no that's not a typo) does both: it first reads the statistics, then overwrites them. You might wanna back up divx2pass.log before doing this if there's any possibility you'll have to cancel MEncoder. You can use all encoding options, except very CPU-hungry ones like "qns". You can run this same pass over and over to refine the encode. Each subsequent pass uses the statistics from the previous pass to improve. The final pass can include any CPU-hungry encoding options. Want a 2 pass encode? Use vpass=1 first, then vpass=2. Want a 3 or more pass encode? Use vpass=1 for the first pass, then vpass=3, and then vpass=3 again and again until you're satisfied with the encode ๐ฆ.
huffyuv:
- pass 1 โ saves statistics.
- pass 2 โ encodes with an optimal Huffman table based upon statistics from the first pass.
turbo(two pass only) โ dramatically speeds up pass one using faster algorithms and disabling CPU-intensive options ๐. This will probably reduce global PSNR a little bit (around0.01dB) and change individual frame type and PSNR a little bit more (up to0.03dB).aspect=<x/y>โ stores movie aspect internally, just like with MPEG files. So much nicer than rescaling because quality is not decreased, no cap. Only MPlayer will play these files correctly; other players will display them with the wrong aspect ๐ฌ. The aspect parameter can be given as a ratio or a floating point number.
EXAMPLE:
aspect=16/9 or aspect=1.78
autoaspectโ same as theaspectoption, but it automatically computes aspect, taking into account all the adjustments (crop/expand/scale/etc.) made in the filter chain ๐ธ. Does not incur a performance penalty, so you can safely leave it always on.vbitrate=<value>โ specify bitrate (default:800).
WARNING: 1kbit = 1000 bits โ ๏ธ
4-16000โ (in kbit)16001-24000000โ (in bit)
vratetol=<value>โ approximated file size tolerance in kbit.1000-100000is a sane range (warning:1kbit = 1000 bits) (default:8000).
NOTE:vratetolshould not be too large during the second pass or there might be problems ifvrc_(min|max)rateis used.
vrc_maxrate=<value>โ maximum bitrate in kbit/sec (default:0, unlimited).vrc_minrate=<value>โ minimum bitrate in kbit/sec (default:0, unlimited).vrc_buf_size=<value>โ buffer size in kbit. For MPEG-1/2 this also sets the vbv buffer size, so use327for VCD,917for SVCD and1835for DVD ๐.vrc_buf_aggressivityโ currently useless ๐.vrc_strategyโ ratecontrol method. Heads up: some of the ratecontrol-affecting options will have no effect ifvrc_strategyis not set to0.0โ use internal lavc ratecontrol (default).1โ use Xvid ratecontrol (experimental; requires MEncoder to be compiled with support for Xvid 1.1 or higher).
vb_qfactor=<-31.0-31.0>โ quantizer factor between B- and non-B-frames (default:1.25).vi_qfactor=<-31.0-31.0>โ quantizer factor between I- and non-I-frames (default:0.8).vb_qoffset=<-31.0-31.0>โ quantizer offset between B- and non-B-frames (default:1.25).vi_qoffset=<-31.0-31.0>โ (default:0.0)
if v{b|i}_qfactor > 0
I/B-frame quantizer = P-frame quantizer * v{b|i}_qfactor + v{b|i}_qoffset
else
do normal ratecontrol (do not lock to next P-frame quantizer) and
set q= -q * v{b|i}_qfactor + v{b|i}_qoffset
HINT: To do constant quantizer encoding with different quantizers for I/P- and B-frames you can use: lmin= <ip_quant>:lmax= <ip_quant>:vb_qfactor= <b_quant/ip_quant>.
vqblur=<0.0-1.0>(pass one) โ quantizer blur (default:0.5), larger values will average the quantizer more over time (slower change).0.0โ quantizer blur disabled.1.0โ average the quantizer over all previous frames.
vqblur=<0.0-99.0>(pass two) โ quantizer gaussian blur (default:0.5), larger values will average the quantizer more over time (slower change).vqcomp=<0.0-1.0>โ quantizer compression,vrc_eqdepends upon this (default:0.5).
NOTE: Perceptual quality will be optimal somewhere in between the range's extremes.
vrc_eq=<equation>โ main ratecontrol equation ๐งฎ1+(tex/avgTex-1)*qCompโ approximately the equation of the old ratecontrol code.tex^qCompโ with qcomp0.5or something like that (default).
infix operators:
+,-,*,/,^
variables:
texโ texture complexityiTex,pTexโ intra, non-intra texture complexityavgTexโ average texture complexityavgIITexโ average intra texture complexity in I-framesavgPITexโ average intra texture complexity in P-framesavgPPTexโ average non-intra texture complexity in P-framesavgBPTexโ average non-intra texture complexity in B-framesmvโ bits used for motion vectorsfCodeโ maximum length of motion vector in log2 scaleiCountโ number of intra macroblocks / number of macroblocksvarโ spatial complexitymcVarโ temporal complexityqCompโ qcomp from the command lineisI, isP, isBโ Is 1 if picture type is I/P/B else 0.Pi,Eโ See your favorite math book.
functions:
max(a,b),min(a,b)โ maximum / minimumgt(a,b)โ is 1 if a>b, 0 otherwiselt(a,b)โ is 1 if a<b, 0 otherwiseeq(a,b)โ is 1 if a==b, 0 otherwisesin, cos, tan, sinh, cosh, tanh, exp, log, abs
vrc_override=<options>โ user specified quality for specific parts (ending, credits, ...) ๐ฌ. The options are<start-frame>, <end-frame>, <quality>[/<start-frame>, <end-frame>, <quality>[/...]]:- quality (
2-31) โ quantizer - quality (
-500-0) โ quality correction in %
- quality (
vrc_init_cplx=<0-1000>โ initial complexity (pass 1).vrc_init_occupancy=<0.0-1.0>โ initial buffer occupancy, as a fraction ofvrc_buf_size(default:0.9).vqsquish=<0|1>โ specify how to keep the quantizer betweenqminandqmax:0โ use clipping.1โ use a nice differentiable function (default) โจ.
vlelim=<-1000-1000>โ sets the single coefficient elimination threshold for luminance โจ like, which coefficients are too small to even bother with. Negative values will also consider the DC coefficient (and it should be at least-4or lower for encoding atquant=1):0โ disabled (default)-4โ JVT recommendation
vcelim=<-1000-1000>โ same energy but for chrominance ๐ single coefficient elimination threshold, chroma edition. Negative values will also consider the DC coefficient (again, should be at least-4or lower for encoding atquant=1):0โ disabled (default)7โ JVT recommendation
vstrict=<-2|-1|0|1>โ strict standard compliance, aka how much of a rule-follower your encoder is being ๐0โ disabled1โ only recommended if you want to feed the output into the MPEG-4 reference decoder-1โ allow libavcodec specific extensions (default)-2โ enables experimental codecs and features which may not be playable with future MPlayer versions (snow)
vdpartโ data partitioning ๐ฆ adds 2 Bytes per video packet and improves error-resistance when you're transferring over unreliable channels (e.g. streaming over the internet). Each video packet will be encoded in 3 separate partitions:- MVs โ movement
- DC coefficients โ low res picture
- AC coefficients โ details
MV & DC are the most important ones, and losing them looks far worse than losing the AC and the 1. & 2. partition ๐ญ the thing is, (MV & DC) are far smaller than the 3. partition (AC), meaning that errors will hit the AC partition much more often than the MV & DC partitions. So the picture will look better with partitioning than without โ because without partitioning, an error will trash AC/DC/MV equally. rude.
vpsize=<0-10000>(also seevdpart) โ video packet size, improves error-resistance ๐0โ disabled (default)100-1000โ good choice
ssโ slice structured mode for H.263+ ๐ธgrayโ grayscale only encoding (faster) ๐ฉถ ngl it's giving efficiencyvfdct=<0-10>โ the DCT algorithm, pick your fighter ๐ฅ0โ automatically select a good one (default)1โ fast integer2โ accurate integer3โ MMX4โ mlib5โ AltiVec6โ floating point AAN
idct=<0-99>โ the IDCT algorithm, the whole friend group ๐
NOTE: to the best of our knowledge all these IDCTs do pass the IEEE1180 tests. bestie said certified.
0โ automatically select a good one (default)1โ JPEG reference integer2โ simple3โ simplemmx4โ libmpeg2mmx (inaccurate, do not use for encoding withkeyint>100) โ ๏ธ5โ ps26โ mlib7โ arm8โ AltiVec9โ sh410โ simplearm11โ H.26412โ VP313โ IPP14โ xvidmmx15โ CAVS16โ simplearmv5te17โ simplearmv6
lumi_mask=<0.0-1.0>โ luminance masking is a 'psychosensory' setting ๐ and it's supposed to make use of the fact that the human eye tends to notice fewer details in very bright parts of the picture. Luminance masking compresses bright areas stronger than medium ones, so it will save bits that can be spent again on other frames, raising overall subjective quality, while possibly reducing PSNR. it's giving "trust the vibes, not the numbers" ๐ซ
WARNING: be careful, overly large values can cause disastrous things ๐ WARNING: large values might look good on some monitors but may look horrible on other monitors ๐
0.0โ disabled (default)0.0-0.3โ sane range
dark_mask=<0.0-1.0>โ darkness masking, same psychosensory situation but for the shadows ๐ the human eye tends to notice fewer details in very dark parts of the picture, and darkness masking compresses dark areas stronger than medium ones, so it saves bits that can be spent again on other frames, raising overall subjective quality, while possibly reducing PSNR.
WARNING: be careful, overly large values can cause disastrous things ๐ WARNING: large values might look good on some monitors but may look horrible on other monitors / TV / TFT ๐ซฃ
0.0โ disabled (default)0.0-0.3โ sane range
tcplx_mask=<0.0-1.0>โ temporal complexity masking (default:0.0(disabled)) โฑ๏ธ picture it: a scene with a bird flying across the whole scene.tcplx_maskwill raise the quantizers of the bird's macroblocks (thus decreasing their quality), because the human eye usually doesn't have time to see all the bird's details. but be warned: if the masked object stops (e.g. the bird lands) it is likely to look horrible for a short period of time, until the encoder figures out that the object is not moving and needs refined blocks ๐ญ the saved bits get spent on other parts of the video, which may increase subjective quality โ provided thattcplx_maskis carefully chosen. no pressure.scplx_mask=<0.0-1.0>โ spatial complexity masking ๐ก larger values help against blockiness, if no deblocking filter is used for decoding, which is maybe not a good idea. imagine a scene with grass (which usually has great spatial complexity), a blue sky and a house;scplx_maskwill raise the quantizers of the grass' macroblocks, thus decreasing its quality, in order to spend more bits on the sky and the house. the grass ate and lost fr.
HINT: crop any black borders completely as they will reduce the quality of the macroblocks (also applies without scplx_mask) โ๏ธ
0.0โ disabled (default)0.0-0.5โ sane range
NOTE: this setting does not have the same effect as using a custom matrix that would compress high frequencies harder, asscplx_maskwill reduce the quality of P blocks even if only DC is changing. The result ofscplx_maskwill probably not look as good ๐
p_mask=<0.0-1.0>(also seevi_qfactor) โ reduces the quality of inter blocks โจ this is equivalent to increasing the quality of intra blocks, because the same average bitrate will be distributed by the rate controller to the whole video sequence (default:0.0(disabled)).p_mask=1.0doubles the bits allocated to each intra block. math ate.border_mask=<0.0-1.0>โ border-processing for MPEG-style encoders ๐ผ๏ธ border processing increases the quantizer for macroblocks which are less than 1/5th of the frame width/height away from the frame border, since they are often visually less important. edges stay losing.naqโ normalize adaptive quantization (experimental) ๐งช when using adaptive quantization (*_mask), the average per-MB quantizer may no longer match the requested frame-level quantizer. Naq will attempt to adjust the per-MB quantizers to maintain the proper average. it's trying its best okay ๐คildctโ use interlaced DCT ๐ilmeโ use interlaced motion estimation (mutually exclusive withqpel) โ๏ธ pick one, bestiealtโ use alternative scantable ๐top=<-1-1>โ which field is first, the eternal question ๐-1โ automatic0โ bottom field first1โ top field first
format=<value>โ the pixel format menu ๐YV12โ default444Pโ forffv1422Pโ for HuffYUV, lossless JPEG, dv andffv1411Pโ for lossless JPEG, dv andffv1YVU9โ for lossless JPEG,ffv1andsvq1BGR32โ for lossless JPEG andffv1
predโ (for HuffYUV) ๐ฎ prediction mode, choose your divination method0โ left prediction1โ plane/gradient prediction2โ median prediction
predโ (for lossless JPEG) ๐ฏ same option name, different little menu entirely0โ left prediction1โ top prediction2โ topleft prediction3โ plane/gradient prediction6โ mean prediction
coderโ (forffv1) ๐ง which coding style are we doing today0โ vlc coding (Golomb-Rice)1โ arithmetic coding (CABAC)
contextโ context model time ๐ธ- (for
ffv1)0โ small context model1โ large context model
- (for
ffvhuff)0โ predetermined Huffman tables (builtin or two pass)1โ adaptive Huffman tables
- (for
qpelโ use quarter pel motion compensation (mutually exclusive withilme) ๐ฏ
HINT: this seems only useful for high bitrate encodings ๐ธ
mbcmp=<0-2000>โ sets the comparison function for the macroblock decision, and it only has an effect ifmbd=0๐ this is also used for some motion search functions, in which case it has an effect regardless ofmbdsetting. icon behaviour honestly.0(SAD) โ sum of absolute differences, fast (default)1(SSE) โ sum of squared errors2(SATD) โ sum of absolute Hadamard transformed differences3(DCT) โ sum of absolute DCT transformed differences4(PSNR) โ sum of squared quantization errors (avoid, low quality) ๐5(BIT) โ number of bits needed for the block6(RD) โ rate distortion optimal, slow ๐7(ZERO) โ08(VSAD) โ sum of absolute vertical differences9(VSSE) โ sum of squared vertical differences10(NSSE) โ noise preserving sum of squared differences11(W53) โ 5/3 wavelet, only used insnow12(W97) โ 9/7 wavelet, only used insnow+256โ also use chroma, currently does not work (correctly) with B-frames ๐
ildctcmp=<0-2000>โ sets the comparison function for interlaced DCT decision (seembcmpfor available comparison functions) โจprecmp=<0-2000>โ sets the comparison function for motion estimation pre pass (seembcmpfor available comparison functions) (default:0) ๐cmp=<0-2000>โ sets the comparison function for full pel motion estimation (seembcmpfor available comparison functions) (default:0) ๐ฆsubcmp=<0-2000>โ picks the comparison function for sub pel motion estimation (peepmbcmpfor the menu of comparison functions) (default:0).skipcmp=<0-2000>โ ok so the manpage literally just says "FIXME: Document this." ๐ bestie I cannot make it up, that's all we got. It exists, it takes0-2000, and nobody wrote the docs. iconically unbothered of them.nssew=<0-1000000>โ this one controls the NSSE weight, and bigger weights = more noise, no cap.0NSSE is literally identical to SSE. Lowkey useful if you want to keep a lil noise in your encoded video instead of filtering it all away pre-encode (default:8). ๐predia=<-99-6>โ diamond type and size for the motion estimation pre-pass.dia=<-99-6>โ Diamond type & size for motion estimation. So here's the tea: motion search is an iterative process, and using a small diamond does not limit the search to only finding small motion vectors. It's just somewhat more likely to stop before it finds the very best motion vector, especially when noise is in the mix. Bigger diamonds let it search wider for the best motion vector, so they're slower but give better quality. โจ
Big normal diamonds > shape-adaptive diamonds in quality. Shape-adaptive diamonds are the good tradeoff between speed and quality.
NOTE: the sizes of the normal diamonds and the shape adaptive ones do not mean the same thing. ๐
-3 shape adaptive (fast) diamond with size 3
-2 shape adaptive (fast) diamond with size 2
-1 uneven multi-hexagon search (slow)
1 normal size=1 diamond (default) =EPZS type diamond
0
000
0
2 normal size=2 diamond
0
000
00000
000
0
trellโ Trellis searched quantization ๐ it finds the optimal encoding for each 8x8 block. Trellis searched quantization is, quite simply, an optimal quantization in the PSNR versus bitrate sense (assuming no rounding errors get introduced by the IDCT, which is obviously not the case, bestie). It just finds a block for the minimum oferrorandlambda*bits.lambdaโ quantization parameter (QP) dependent constantbitsโ amount of bits needed to encode the blockerrorโ sum of squared errors of the quantization
cbpโ Rate distorted optimal coded block pattern. It'll select the coded block pattern that minimizesdistortion + lambda*rate. Heads up: this can only be used together with trellis quantization. ๐ฅmv0โ tries to encode each MB withMV=<0,0>and picks whichever one is better. No effect ifmbd=0.mv0_threshold=<any non-negative integer>โ when the surrounding motion vectors are<0,0>and the motion estimation score of the current block is less thanmv0_threshold,<0,0>gets used for the motion vector and further motion estimation is skipped (default:256). Loweringmv0_thresholdto0can give a slight (0.01dB) PSNR increase and possibly make the encoded video look slightly better; raisingmv0_thresholdpast320results in diminished PSNR and visual quality. Higher values speed up encoding very slightly (usually less than 1%, depending on the other options used).
NOTE: this option does not require mv0 to be enabled. ๐ซถ
qprd(mbd=2 only) โ rate distorted optimal quantization parameter (QP) for the given lambda of each macroblock.last_pred=<0-99>โ amount of motion predictors from the previous frame.0โ (default)aโ will use2a+1x2a+1macroblock square of motion vector predictors from the previous frame.
preme=<0-2>โ motion estimation pre-pass.0โ disabled1โ only after I-frames (default)2โ always
subq=<1-8>โ subpel refinement quality (for qpel) (default:8(high quality)).
NOTE: this has a significant effect on speed. ๐ญ
refs=<1-8>โ number of reference frames to consider for motion compensation (Snow only) (default:1).psnrโ prints the PSNR (peak signal to noise ratio) for the whole video after encoding, and stores the per frame PSNR in a file named something like'psnr_hhmmss.log'. Returned values are in dB (decibel) โ the higher the better. โญmpeg_quantโ use MPEG quantizers instead of H.263.aicโ enable AC prediction for MPEG-4 or advanced intra prediction for H.263+. This improves quality very slightly (around 0.02 dB PSNR) and slows down encoding very slightly (about 1%).
NOTE:vqminshould be8or larger for H.263+ AIC.
aivโ alternative inter vlc for H.263+.umvโ unlimited MVs (H.263+ only). Allows encoding of arbitrarily long MVs. ๐ฆibias=<-256-256>โ intra quantizer bias (256equals1.0, MPEG style quantizer default:96, H.263 style quantizer default:0).
NOTE: the H.263 MMX quantizer cannot handle positive biases (setvfdct=1or2), and the MPEG MMX quantizer cannot handle negative biases (setvfdct=1or2). ๐
pbias=<-256-256>โ inter quantizer bias (256equals1.0, MPEG style quantizer default:0, H.263 style quantizer default:-64).
NOTE: the H.263 MMX quantizer cannot handle positive biases (setvfdct=1or2), and the MPEG MMX quantizer cannot handle negative biases (setvfdct=1or2).
HINT: a more positive bias (-32โ-16instead of-64) seems to improve the PSNR. ๐
nr=<0-100000>โ noise reduction,0means disabled.0โ600is a useful range for typical content, but you might wanna turn it up a bit more for very noisy content (default:0). Given its small impact on speed, you might prefer this over filtering noise away with video filters likedenoise3dorhqdn3d. ๐ธqns=<0-3>โ Quantizer noise shaping. Instead of picking quantization that most closely matches the source video in the PSNR sense, it picks quantization such that noise (usually ringing) gets masked by similar-frequency content in the image. Larger values are slower but may not result in better quality. This can and should be used together with trellis quantization โ in which case the trellis quantization (optimal for constant weight) is used as the startpoint for the iterative search. ๐0โ disabled (default)1โ only lower the absolute value of coefficients.2โ only change coefficients before the last non-zero coefficient + 1.3โ try all.
inter_matrix=<comma separated matrix>โ use a custom inter matrix. It needs a comma separated string of64integers.intra_matrix=<comma separated matrix>โ use a custom intra matrix. It needs a comma separated string of64integers.vqmod_ampโ experimental quantizer modulation. (science is happening, we don't fully know ๐ง)vqmod_freqโ experimental quantizer modulation. (yes, again, it's the other half โจ)dcโ intra DC precision in bits (default:8). If you specifyvcodec=mpeg2videothis value can be8,9,10or11.cgop(also seesc_threshold) โ close all GOPs. Currently it only works if scene change detection is disabled (sc_threshold=1000000000). ๐ฅgmcโ enable Global Motion Compensation.(no)lowdelayโ sets the low delay flag for MPEG-1/2 (disables B-frames).vglobal=<0-3>โ controls writing global video headers. ๐0โ codec decides where to write global headers (default).1โ write global headers only in extradata (needed for.mp4/MOV/NUT).2โ write global headers only in front of keyframes.3โ combine1and2.
aglobal=<0-3>โ same asvglobalbut for audio headers. ๐level=<value>โ setCodecContextLevel. Use31or41to play video on a Playstation 3. yes, for real, the PS3, iconic.skip_exp=<0-1000000>โ "FIXME: Document this." ๐ญ that's the whole thing. It takes0-1000000. That's the lore.skip_factor=<0-1000000>โ also "FIXME: Document this." ๐ trio of mystery.skip_threshold=<0-1000000>โ and the third one, "FIXME: Document this." ๐
๐ nuv (-nuvopts)
Nuppel video is based on RTJPEG and LZO, bestie. By default frames get encoded with RTJPEG first and then compressed with LZO, but you can disable either or both of the two passes. So as a result you can actually output raw i420, LZO compressed i420, RTJPEG, or the default LZO compressed RTJPEG. ๐
NOTE: the nuvrec documentation has some advice and examples about the settings to use for the most common TV encodings. ๐ซถ
c=<0-20>โ chrominance threshold (default:1).l=<0-20>โ luminance threshold (default:1).lzoโ enable LZO compression (default). โจnolzoโ disable LZO compression.q=<3-255>โ quality level (default:255).rawโ disable RTJPEG encoding.rtjpegโ enable RTJPEG encoding (default).
๐ xvidenc (-xvidencopts)
There are three modes available: constant bitrate (CBR), fixed quantizer and two pass. pick your fighter ๐
pass=<1|2>โ specify the pass in two pass mode.turbo(two pass only) โ dramatically speeds up pass one using faster algorithms and disabling CPU-intensive options. This will probably reduce global PSNR a little bit and change individual frame type and PSNR a little bit more. ๐ฅbitrate=<value>(CBR or two pass mode) โ sets the bitrate to be used in kbits/second if<16000or in bits/second if>16000. If<value>is negative, Xvid will use its absolute value as the target size (in kBytes) of the video and compute the associated bitrate automagically (default:687kbits/s). โญfixed_quant=<1-31>โ switch to fixed quantizer mode and specify the quantizer to be used.zones=<zone0>[/<zone1>[/...]](CBR or two pass mode) โ user specified quality for specific parts (ending, credits, ...). Each zone is<start-frame>,<mode>,<value>where<mode>may be:qโ Constant quantizer override, wherevalue=<2.0-31.0>represents the quantizer value.wโ Ratecontrol weight override, wherevalue=<0.01-2.00>represents the quality correction in %.
EXAMPLE:
zones=90000,q,20
Encodes all frames starting with frame 90000 at constant quantizer 20.
zones=0,w,0.1/10001,w,1.0/90000,q,20
Encode frames 0-10000 at 10% bitrate, encode frames 90000
up to the end at constant quantizer 20. Note that the
second zone is needed to delimit the first zone, as withโ
out it everything up until frame 89999 would be encoded
at 10% bitrate.
No cap, that second one is the whole plot twist โ the second zone is needed to delimit the first zone, otherwise literally everything up until frame 89999 gets stuck at 10% bitrate ๐
me_quality=<0-6>โ this is the motion estimation dial, and it's giving main character energy for your bitrate โจ the higher the value, the more precise the estimation should be (default:6). More precision = more bits saved ๐ but you're paying for it in CPU time, so if you need realtime encoding, turn this down, bestie.(no)qpelโ so MPEG-4 uses half pixel precision for its motion search by default, and the standard also proposes a mode where encoders are allowed to use quarter pixel precision. This option usually gets you a sharper image ๐ but unfortunately it has a great impact on bitrate, and sometimes that higher bitrate use will legit prevent it from giving better image quality at a fixed bitrate. Test with and without and see if it's actually worth activating, iykyk.(no)gmcโ enables Global Motion Compensation, which makes Xvid generate special frames (GMC-frames) that are chef's kiss for Pan/Zoom/Rotating images ๐ธ whether it saves bits or not is highly dependent on the source material, so vibe check your own footage.(no)trellisโ Trellis Quantization is a kind of adaptive quantization method that saves bits by modifying quantized coefficients so the entropy encoder finds them more compressible. The impact on quality is good ๐ and if VHQ is eating too much CPU for you, this is a great alternative to save a few bits (and gain quality at fixed bitrate) at a lesser cost than VHQ (default:on).(no)cartoonโ activate this if your encoded sequence is an anime/cartoon ๐ it modifies some Xvid internal thresholds so Xvid makes better decisions on frame types and motion vectors for those flat-looking cartoons.(no)chroma_meโ the usual motion estimation algorithm uses only the luminance information to find the best motion vector, but for some video material, using the chroma planes can help find better vectors. This toggles the use of chroma planes for motion estimation (default:on).(no)chroma_optโ enables a chroma optimizer prefilter ๐ it does some extra magic on color information to minimize that stepped-stairs effect on edges. Quality goes up, encoding speed goes down. It reduces PSNR by nature (because the mathematical deviation to the original picture gets bigger), but the subjective image quality raises. Since it works with color information, you might want to turn it off when encoding in grayscale ๐(no)hq_acโ activates high-quality prediction of AC coefficients for intra frames from neighbor blocks (default:on).vhq=<0-4>โ okay so the motion search algorithm is based on a search in the usual color domain and tries to find a motion vector that minimizes the difference between the reference frame and the encoded frame. With this setting activated, Xvid will also use the frequency domain (DCT) to search for a motion vector that minimizes not only the spatial difference but also the encoding length of the block. Fastest to slowest:
0 off
1 mode decision (inter/intra MB) (default)
2 limited search
3 medium search
4 wide search
(no)lumi_maskโ adaptive quantization allows the macroblock quantizers to vary inside each frame, and this is a 'psychosensory' setting that's supposed to make use of the fact that the human eye tends to notice fewer details in very bright and very dark parts of the picture ๐ it compresses those areas more strongly than medium ones, which saves bits you can spend again on other frames โ raising overall subjective quality and possibly reducing PSNR.(no)grayscaleโ makes Xvid discard chroma planes so the encoded video is grayscale only. Note that this does not speed up encoding, it just prevents chroma data from being written in the last stage of encoding.(no)interlacingโ encodes the fields of interlaced video material. Turn this on for interlaced content.
NOTE: should you rescale the video, you'd need an interlace-aware resizer, which you can activate with -vf scale=<width>:<height>:1.
min_iquant=<0-31>โ minimum I-frame quantizer (default:2)max_iquant=<0-31>โ maximum I-frame quantizer (default:31)min_pquant=<0-31>โ minimum P-frame quantizer (default:2)max_pquant=<0-31>โ maximum P-frame quantizer (default:31)min_bquant=<0-31>โ minimum B-frame quantizer (default:2)max_bquant=<0-31>โ maximum B-frame quantizer (default:31)min_key_interval=<value>(two pass only) โ minimum interval between keyframes (default:0)max_key_interval=<value>โ maximum interval between keyframes (default:10*fps)quant_type=<h263|mpeg>โ sets the type of quantizer to use โจ for high bitrates, you'll find that MPEG quantization preserves more detail; for low bitrates, the smoothing of H.263 gives you less block noise. When using custom matrices, MPEG quantization must be used.quant_intra_matrix=<filename>โ load a custom intra matrix file. You can build such a file withxvid4conf's matrix editor ๐quant_inter_matrix=<filename>โ load a custom inter matrix file. You can build such a file withxvid4conf's matrix editor ๐keyframe_boost=<0-1000>(two pass mode only) โ shifts some bits from the pool for other frame types to intra frames, thus improving keyframe quality. This amount is an extra percentage, so a value of10gives your keyframes 10% more bits than normal (default:0).kfthreshold=<value>(two pass mode only) โ works together withkfreduction. Determines the minimum distance below which you consider that two frames are considered consecutive and treated differently according tokfreduction(default:10).kfreduction=<0-100>(two pass mode only) โ the above two settings adjust the size of keyframes you consider too close to the first (in a row).kfthresholdsets the range in which keyframes are reduced, andkfreductiondetermines the bitrate reduction they get. The last I-frame gets treated normally (default:30).max_bframes=<0-4>โ maximum number of B-frames to put between I/P-frames (default:2).bquant_ratio=<0-1000>โ quantizer ratio between B- and non-B-frames,150=1.50(default:150)bquant_offset=<-1000-1000>โ quantizer offset between B- and non-B-frames,100=1.00(default:100)bf_threshold=<-255-255>โ this setting lets you specify what priority to place on the use of B-frames. The higher the value, the higher the probability of B-frames being used (default:0). Do not forget that B-frames usually have a higher quantizer, so aggressive production of B-frames may cause worse visual quality ๐ญ(no)closed_gopโ tells Xvid to close every GOP (Group Of Pictures bounded by two I-frames), which makes GOPs independent from each other. This just implies that the last frame of the GOP is either a P-frame or a N-frame but not a B-frame. Usually a good idea to turn this on (default:on).(no)packedโ this option is meant to solve frame-order issues when encoding to container formats like AVI that cannot cope with out-of-order frames. In practice, most decoders (both software and hardware) are able to deal with frame-order themselves, and may get confused when this option is turned on, so you can safely leave it off, unless you really know what you're doing.
WARNING: this will generate an illegal bitstream, and will not be decodable by ISO-MPEG-4 decoders except DivX/libavcodec/Xvid. WARNING: this will also store a fake DivX version in the file so the bug autodetection of some decoders might be confused.
frame_drop_ratio=<0-100>(max_bframes=0 only) โ this setting allows the creation of variable framerate video streams โญ the value specifies a threshold under which, if the difference of the following frame to the previous frame is below or equal to this threshold, a frame gets not coded (a so called n-vop is placed in the stream). On playback, when reaching an n-vop the previous frame will be displayed.
WARNING: playing with this setting may result in a jerky video, so use it at your own risks!
rc_reaction_delay_factor=<value>โ this parameter controls the number of frames the CBR rate controller will wait before reacting to bitrate changes and compensating for them, to obtain a constant bitrate over an averaging range of frames.rc_averaging_period=<value>โ real CBR is hard to achieve ๐ฎโ๐จ depending on the video material, bitrate can be variable and hard to predict, so Xvid uses an averaging period for which it guarantees a given amount of bits (minus a small variation). This setting expresses the "number of frames" for which Xvid averages bitrate and tries to achieve CBR.rc_buffer=<value>โ size of the rate control buffercurve_compression_high=<0-100>โ lets Xvid take a certain percentage of bits away from high bitrate scenes and give them back to the bit reservoir โจ you could also use this if you have a clip with so many bits allocated to high-bitrate scenes that the low(er)-bitrate scenes start to look bad (default:0).curve_compression_low=<0-100>โ this lets Xvid hand a certain percentage of extra bits to your low-bitrate scenes, and it takes those bits from the whole clip overall ๐ธ. Super handy when you've got a few low-bitrate scenes that are still straight-up blocky (default:0).overflow_control_strength=<0-100>โ okay so during pass one of two pass encoding, a scaled bitrate curve gets computed ๐. The difference between that expected curve and whatever actually came out during encoding is called overflow. And yeah, the two pass rate controller tries to compensate for that overflow, spreading it out over the next frames. This setting controls how much of the overflow gets distributed every time there's a new frame. Low values = lazy overflow control, big rate bursts get compensated more slowly (which could lead to a lack of precision for small clips). Higher values make changes in bit redistribution more abrupt โ possibly too abrupt if you crank it, which creates artifacts (default:5).
NOTE: This setting impacts quality a lot, play with it carefully! ๐ซฃ
max_overflow_improvement=<0-100>โ during frame bit allocation, overflow control is allowed to increase the frame size. This parameter sets the maximum percentage by which overflow control may increase the frame size compared to the ideal curve allocation (default:5).max_overflow_degradation=<0-100>โ same vibe but the other direction: during frame bit allocation, overflow control may decrease the frame size, and this sets the max percentage it's allowed to decrease it compared to the ideal curve allocation (default:5).container_frame_overhead=<0...>โ specifies a frame average overhead per frame, in bytes. Bestie, most of the time people state their target bitrate for video without taking the video container overhead into account ๐. This small but (mostly) constant overhead can cause your target file size to be exceeded. Xvid lets you set the amount of overhead per frame the container generates (give only an average per frame).0has a special meaning โ it lets Xvid use its own default values (default:24- AVI average overhead).profile=<profile_name>โ restricts options and VBV (peak bitrate over a short period) according to the Simple, Advanced Simple and DivX profiles โจ. The resulting videos should be playable on standalone players adhering to these profile specifications. The lineup:unrestrictedโ no restrictions (default)sp0โ simple profile at level 0sp1โ simple profile at level 1sp2โ simple profile at level 2sp3โ simple profile at level 3sp4aโ simple profile at level 4asp5โ simple profile at level 5sp6โ simple profile at level 6asp0โ advanced simple profile at level 0asp1โ advanced simple profile at level 1asp2โ advanced simple profile at level 2asp3โ advanced simple profile at level 3asp4โ advanced simple profile at level 4asp5โ advanced simple profile at level 5dxnhandheldโ DXN handheld profiledxnportntscโ DXN portable NTSC profiledxnportpalโ DXN portable PAL profiledxnhtntscโ DXN home theater NTSC profiledxnhtpalโ DXN home theater PAL profiledxnhdtvโ DXN HDTV profile
NOTE: use these profiles together with an appropriate-ffourcc. GenerallyDX50is applicable, since some players don't recognize Xvid but most recognize DivX ๐
par=<mode>โ specifies the Pixel Aspect Ratio mode (not to be confused with DAR, the Display Aspect Ratio, bestie, they are NOT the same thing ๐ ). PAR is the ratio of the width and height of a single pixel. So the two are related like this:DAR = PAR * (width/height). MPEG-4 defines 5 pixel aspect ratios and one extended one, giving you the chance to specify a specific pixel aspect ratio. 5 standard modes can be specified:vga11โ it's the usual PAR for PC content. Pixels are a square unit.pal43โ PAL standard 4:3 PAR. Pixels are rectangles.pal169โ same as aboventsc43โ same as aboventsc169โ same as above (do not forget to give the exact ratio.)extโ lets you specify your own pixel aspect ratio withpar_widthandpar_height.
NOTE: In general, settingaspectandautoaspectoptions is enough ๐ธ
par_width=<1-255>(par=ext only) โ specifies the width of the custom pixel aspect ratio.par_height=<1-255>(par=ext only) โ specifies the height of the custom pixel aspect ratio.aspect=<x/y | f (float value)>โ stores the movie aspect internally, just like MPEG files do. Way nicer solution than rescaling, because quality is not decreased ๐. MPlayer and a few other players will play these files correctly, but others will show them with the wrong aspect. The aspect parameter can be given as a ratio or a floating point number.(no)autoaspectโ same as theaspectoption, except it automatically computes the aspect, taking into account all the adjustments (crop/expand/scale/etc.) made in the filter chain ๐งpsnrโ prints the PSNR (peak signal to noise ratio) for the whole video after encoding, and stores the per-frame PSNR in a file with a name like'psnr_hhmmss.log'in the current directory ๐. Returned values are in dB (decibel), and higher is better.debugโ saves per-frame statistics in./xvid.dbg. (Just so we're clear, this is not the two pass control file ๐)
The following options are only available in Xvid 1.1.x and later.
bvhq=<0|1>โ lets vector candidates for B-frames be used for the encoding chosen using a rate distortion optimized operator, which is what thevhqoption does for P-frames โจ. This produces nicer-looking B-frames while incurring almost no performance penalty (default:1).vbv_bufsize=<0...>(two pass mode only) โ specifies the video buffering verifier (VBV) buffer size in bits (default:0- VBV check disabled). VBV lets you restrict the peak bitrate so the video plays properly on hardware players ๐บ. For example, the Home profile usesvbv_bufsize=3145728. If you setvbv_bufsizeyou should also setvbv_maxrate. Note that there is novbv_peakratebecause Xvid doesn't actually use it for bitrate controlling โ the other VBV options are enough to restrict the peak bitrate, iykyk.vbv_initial=<0...vbv_bufsize>(two pass mode only) โ specifies the initial fill of the VBV buffer in bits (default: 75% ofvbv_bufsize). The default is probably what you want ๐ซถvbv_maxrate=<0...>(two pass mode only) โ specifies the maximum processing rate in bits/s (default:0). For example, the Home profile usesvbv_maxrate=4854000.
The following option is only available in Xvid 1.2.x and later.
threads=<0-n>โ createsnthreads to run the motion estimation (default:0). The max number of threads you can use is the picture height divided by16๐งต
๐ฌ x264enc (-x264encopts) ๐ฌ
bitrate=<value>โ sets the average bitrate to be used, in kbits/second (default: off). Since the local bitrate may vary, this average can be inaccurate for very short videos (seeratetol). Constant bitrate can be achieved by combining this withvbv_maxrate, at a significant reduction in quality ๐ญqp=<0-51>โ selects the quantizer to use for P-frames. I- and B-frames are offset from this value byip_factorandpb_factor, respectively.20-40is a useful range. Lower values = better fidelity but higher bitrates.0is lossless โจ. Not me having to explain this: quantization in H.264 works differently from MPEG-1/2/4 โ H.264's quantization parameter (QP) is on a logarithmic scale. The mapping is approximatelyH264QP = 12 + 6*log2(MPEGQP). For example, MPEG atQP=2is equivalent to H.264 atQP=18. Generally you should avoid this option and usecrfinstead, becausecrfyields better visual results for the same size ๐crf=<1.0-50.0>โ enables constant quality mode and selects the quality. The scale is similar to QP. Like the bitrate-based modes, this lets each frame use a different QP based on that frame's complexity ๐. Generally, use this instead ofqp.crf_max=<float>โ with CRF and VBV, limitRFto this value (may cause VBV underflows!) โ ๏ธpass=<1-3>โ turns on 2-pass or 3-pass mode โจ bestie, the recommendation is literally always encode in 2 or 3-pass mode, because it leads to a better bit distribution and improves overall quality. no cap.1โ first pass2โ second pass (of two pass encoding)3โ Nth pass (second and third passes of three pass encoding)
okay so here's how it actually works, and how to use it ๐
The first pass (pass=1) collects statistics on the video and writes them to a file. You might want to deactivate some CPU-hungry options, apart from the ones that are on by default.
In two pass mode, the second pass (pass=2) reads the statistics file and bases ratecontrol decisions on it.
In three pass mode, the second pass (pass=3, that is not a typo ๐ญ) does both: it first reads the statistics, then overwrites them. You can use all encoding options, except very CPU-hungry options.
The third pass (pass=3) is the same as the second pass, except that it has the second pass' statistics to work from. You can use all encoding options, including CPU-hungry ones.
The first pass may use either average bitrate or constant quantizer. ABR is recommended, since it does not require guessing a quantizer. Subsequent passes are ABR, and must specify bitrate. ๐
profile=<name>โ constrains your options to be compatible with an H.264 profile ๐baselineโno8x8dct bframes=0 nocabac cqm=flat weightp=0 nointerlaced qp>0mainโno8x8dct cqm=flat qp>0highโqp>0(default)
preset=<name>โ use a preset to pick your encoding settings in one go ๐ultrafastโno8x8dct aq_mode=0 b_adapt=0 bframes=0 nodeblock nombtree me=dia nomixed_refs partitions=none ref=1 scenecut=0 subq=0 trellis=0 noweight_b weightp=0superfastโnombtree me=dia nomixed_refs partitions=i8x8,i4x4 ref=1 subq=1 trellis=0 weightp=0veryfastโnombtree nomixed_refs ref=1 subq=2 trellis=0 weightp=0fasterโnomixed_refs rc_lookahead=20 ref=5 subq=4 weightp=1fastโrc_lookahead=30 ref=2 subq=6mediumโ Default settings apply.slowโb_adapt=2 direct=auto me=umh rc_lookahead=50 ref=5 subq=8slowerโb_adapt=2 direct=auto me=umh partitions=all rc_lookahead=60 ref=8 subq=9 trellis=2veryslowโb_adapt=2 b_frames=8 direct=auto me=umh me_range=24 partitions=all ref=16 subq=10 trellis=2 rc_lookahead=60placeboโbframes=16 b_adapt=2 direct=auto nofast_pskip me=tesa me_range=24 partitions=all rc_lookahead=60 ref=16 subq=10 trellis=2
tune=<name,[name,...]>โ tune the settings for a particular type of source or situation ๐ธ every single tuned setting gets overridden by explicit user-settings, so like, your own flags always win. Multiple tunings are separated by commas, but only one psy tuning can be used at a time, okay?film(psy tuning) โdeblock=-1,-1 psy-rd=<unset>,0.15animation(psy tuning) โb_frames={+2} deblock=1,1 psy-rd=0.4:<unset> aq_strength=0.6 ref={double if >1 else 1}grain(psy tuning) โaq_strength=0.5 nodct_decimate deadzone_inter=6 deadzone_intra=6 deblock=-2,-2 ipratio=1.1 pbratio=1.1 psy-rd=<unset>,0.25 qcomp=0.8stillimage(psy tuning) โaq_strength=1.2 deblock=-3,-3 psy-rd=2.0,0.7psnr(psy tuning) โaq_mode=0 nopsyssim(psy tuning) โaq_mode=2 nopsyfastdecodeโnocabac nodeblock noweight_b weightp=0zerolatencyโbframes=0 force_cfr rc_lookahead=0 sync_lookahead=0 sliced_threads
slow_firstpassโ disables the following faster options withpass=1:no_8x8dctme=diapartitions=noneref=1subq={2 if >2 else unchanged}trellis=0fast_pskip. ๐ฆ These settings significantly improve encoding speed while having little or no impact on the quality of the final pass. This option is implied withpreset=placebo.keyint=<value>โ sets the maximum interval between IDR-frames (default:250). Larger values save bits, thus improve quality, at the cost of seeking precision. Unlike MPEG-1/2/4, H.264 does not suffer from DCT drift with large values of keyint ๐ฅkeyint_min=<1-keyint/2>โ sets the minimum interval between IDR-frames (default: auto). If scenecuts appear within this interval, they are still encoded as I-frames, but do not start a new GOP. In H.264, I-frames do not necessarily bound a closed GOP because it is allowable for a P-frame to be predicted from more frames than just the one frame before it (also seeframeref). Therefore, I-frames are not necessarily seekable. IDR-frames restrict subsequent P-frames from referring to any frame prior to the IDR-frame ๐scenecut=<-1-100>โ controls how aggressively to insert extra I-frames (default:40). With small values of scenecut, the codec often has to force an I-frame when it would exceed keyint. Good values of scenecut may find a better location for the I-frame. Large values use more I-frames than necessary, thus wasting bits.-1disables scene-cut detection, so I-frames are inserted only once every other keyint frames, even if a scene-cut occurs earlier.
Not recommended, bestie ๐ญ this wastes bitrate, since scenecuts encoded as P-frames are just as big as I-frames, but do not reset the "keyint counter".
(no)intra_refreshโ periodic intra block refresh instead of keyframes (default: disabled). This option disables IDR-frames, and, instead, uses a moving vertical bar of intra-coded blocks. This reduces compression efficiency but benefits low-latency streaming and resilience to packet loss โจframeref=<1-16>โ number of previous frames used as predictors in B- and P-frames (default:3). This is effective in anime, but in live-action material the improvements usually drop off very rapidly above 6 or so reference frames. This has no effect on decoding speed, but does increase the memory needed for decoding. Some decoders can only handle a maximum of15reference frames ๐bframes=<0-16>โ maximum number of consecutive B-frames between I- and P-frames (default:3)(no)b_adaptโ automatically decides when to use B-frames and how many, up to the maximum specified above (default: on). If this option is disabled, then the maximum number of B-frames is used ๐b_bias=<-100-100>โ controls the decision performed byb_adapt. A higher b_bias produces more B-frames (default:0).b_pyramid=<normal|strict|none>โ allows B-frames to be used as references for predicting other frames ๐ For example, consider 3 consecutive B-frames:I0 B1 B2 B3 P4. Without this option, B-frames follow the same pattern as MPEG-[124]. So they are coded in the orderI0 P4 B1 B2 B3, and all the B-frames are predicted fromI0andP4. With this option, they are coded asI0 P4 B2 B1 B3.B2is the same as above, butB1is predicted fromI0andB2, andB3is predicted fromB2andP4. This usually results in slightly improved compression, at almost no speed cost.
Heads up though: this is an experimental option โ it is not fully tuned and may not always help. Requires bframes >= 2. Disadvantage: increases decoding delay to 2 frames. ๐
normalโ Allow B-frames as references as described above (not Blu-ray compatible).strictโ Disallow P-frames referencing B-frames. Gives worse compression, but is required for Blu-ray compatibility.noneโ Disable using B-frames as references.
(no)open_gopโ use recovery points to close GOPs; only available with bframes.(no)bluray_compatโ enable compatibility hacks for Blu-Ray support.(no)fake_interlacedโ flag stream as interlaced but encode progressive. Makes it possible to encode 25p and 30p Blu-Ray streams. Ignored in interlaced mode ๐frame_packing=<0-5>โ define frame arrangement for stereoscopic videos ๐0โ Checkerboard - pixels are alternately from L and R.1โ Column alternation - L and R are interlaced by column.2โ Row alternation - L and R are interlaced by row.3โ Side by side - L is on the left, R is on the right.4โ Top-bottom - L is on top, R is on the bottom.5โ Frame alternation - one view per frame.
(no)deblockโ use deblocking filter (default: on). As it takes very little time compared to its quality gain, it is not recommended to disable it ๐ฅdeblock=<-6-6>,<-6-6>โ the first parameter is AlphaC0 (default:0). This adjusts thresholds for the H.264 in-loop deblocking filter. First, this parameter adjusts the maximum amount of change that the filter is allowed to cause on any one pixel. Secondly, this parameter affects the threshold for difference across the edge being filtered. A positive value reduces blocking artifacts more, but will also smear details. The second parameter is Beta (default:0). This affects the detail threshold. Very detailed blocks are not filtered, since the smoothing caused by the filter would be more noticeable than the original blocking. The default behavior of the filter almost always achieves optimal quality, so it is best to either leave it alone, or make only small adjustments. However, if your source material already has some blocking or noise which you would like to remove, it may be a good idea to turn it up a little bit ๐(no)cabacโ use CABAC (Context-Adaptive Binary Arithmetic Coding) (default: on). Slightly slows down encoding and decoding, but should save10-15%bitrate. Unless you are looking for decoding speed, you should not disable it โจqp_min=<1-51>(ABR or two pass) โ the smallest quantizer you'll allow. Like, the floor.10-30is apparently the sweet spot range (default:10).qp_max=<1-51>(ABR or two pass) โ the biggest quantizer allowed, the ceiling (default:51).qp_step=<1-50>(ABR or two pass) โ how far the quantizer is allowed to bop up or down between frames, max (default:4).(no)mbtreeโ turns macroblock tree ratecontrol on/off (default: enabled โจ). The whole vibe here is using a big lookahead to track how data propagates over time and weighting quality accordingly. In multi-pass mode this writes to its own separate stats file named<passlogfile>.mbtreeโ yep, its own lil file, icon behavior.rc_lookahead=<0-250>โ adjusts the mbtree lookahead distance (default:40). Bigger values are slower and make x264 eat more memory ๐ฝ๏ธ but can give you higher quality. Trade-offs, bestie.ratetol=<0.1-100.0>(ABR or two pass) โ how much the average bitrate is allowed to vary, no particular units attached, it's vibes-based like that (default:1.0).vbv_maxrate=<value>(ABR or two pass) โ maximum local bitrate, in kbits/second (default: disabled).vbv_bufsize=<value>(ABR or two pass) โ the averaging period forvbv_maxrate, in kbits (default: none โ and heads up, you must specify this ifvbv_maxrateis enabled ๐ฅ).vbv_init=<0.0-1.0>(ABR or two pass) โ initial buffer occupancy, expressed as a fraction ofvbv_bufsize(default:0.9).ip_factor=<value>โ quantizer factor between I- and P-frames (default:1.4).pb_factor=<value>โ quantizer factor between P- and B-frames (default:1.3).qcomp=<0-1>(ABR or two pass) โ quantizer compression (default:0.6). Lower value = bitrate stays more constant; higher value = the quantization parameter stays more constant. Pick your fighter ๐cplx_blur=<0-999>(two pass only) โ temporal blur of the estimated frame complexity, applied before curve compression (default:20). Lower values let the quantizer jump around more, higher values force it to vary more smoothly.cplx_blurmakes sure every I-frame has quality comparable to the P-frames that follow it, and makes sure alternating high/low complexity frames (think low fps animation ๐จ) don't waste bits on a fluctuating quantizer.qblur=<0-99>(two pass only) โ temporal blur of the quantization parameter, applied after curve compression (default:0.5). Same deal: lower = quantizer jumps around more, higher = smoother variation.zones=<zone0>[/<zone1>[/...]]โ your own user-specified quality for specific parts of the video (endings, credits, whatever ๐ฌ). Every zone is<start-frame>,<end-frame>,<option>, and the option can be:q=<0-51>โ quantizerb=<0.01-100.0>โ bitrate multiplier
NOTE: the quantizer option is not strictly enforced, okay? It only affects the planning stage of ratecontrol, and it's still subject to overflow compensation andqp_min/qp_max. Don't come for it.
direct_pred=<name>โ decides what type of motion prediction gets used for direct macroblocks in B-frames. Options:noneโ direct macroblocks simply aren't used.spatialโ motion vectors are extrapolated from neighboring blocks. (default โญ)temporalโ motion vectors are extrapolated from the following P-frame.autoโ the codec picks between spatial and temporal for each individual frame.
Spatial and temporal are roughly the same speed and PSNR, so which one you want depends on the actual video content. auto is slightly better but slower, and it's most effective when combined with multipass. Also direct_pred=none is both slower and lower quality, so likeโฆ why ๐ญ
weightpโ weighted P-frame prediction mode (default:2).0โ disabled (fastest)1โ weighted refs (better quality)2โ weighted refs + duplicates (best) ๐
(no)weight_bโ use weighted prediction in B-frames. Without it, bidirectionally predicted macroblocks give equal weight to each reference frame. With it, the weights are determined by the temporal position of the B-frame relative to the references. Requiresbframes > 1.partitions=<list>โ enable some optional macroblock types (default:p8x8,b8x8,i8x8,i4x4).p8x8โ enable typesp16x8,p8x16,p8x8.p4x4โ enable typesp8x4,p4x8,p4x4.p4x4is only recommended withsubq >= 5, and only at low resolutions.b8x8โ enable typesb16x8,b8x16,b8x8.i8x8โ enable typei8x8. This one has no effect unless8x8dctis enabled.i4x4โ enable typei4x4.allโ enable every type above.noneโ disable every type above.
Regardless of this option, the macroblock types p16x16, b16x16, and i16x16 are always enabled, no take-backs. The whole idea is to find the type and size that best describes a given area of the picture โ for example a global pan is better represented by 16x16 blocks, while small moving objects are better represented by smaller blocks. It's giving "right tool for the job" ๐งฐ
(no)8x8dctโ adaptive spatial transform size: lets macroblocks choose between 4x4 and 8x8 DCT, and also unlocks thei8x8macroblock type. Without this option, only 4x4 DCT is used.me=<name>โ select the fullpixel motion estimation algorithm:diaโ diamond search, radius 1 (fast)hexโ hexagon search, radius 2 (default)umhโ uneven multi-hexagon search (slow)esaโ exhaustive search (very slow, and honestly no better thanumh๐)
me_range=<4-64>โ the radius of the exhaustive or multi-hexagon motion search (default:16).subq=<0-11>โ adjust subpel refinement quality. This parameter controls the quality-versus-speed tradeoffs in the motion estimation decision process. Lowkey wild fact:subq=5can compress up to 10% better thansubq=1. Here's the whole ladder:0โ runs fullpixel precision motion estimation on all candidate macroblock types, then selects the best type using the SAD metric (faster thansubq=1, but not recommended unless you're chasing ultra-fast encoding).1โ does the same as0, then refines the motion of that type to fast quarterpixel precision (fast).2โ runs halfpixel precision motion estimation on all candidate macroblock types, then selects the best type using the SATD metric, then refines the motion of that type to fast quarterpixel precision.3โ same as2, but uses a slower quarterpixel refinement.4โ runs fast quarterpixel precision motion estimation on all candidate macroblock types, then selects the best type using the SATD metric, then finishes the quarterpixel refinement for that type.5โ runs best quality quarterpixel precision motion estimation on all candidate macroblock types before selecting the best type. Also refines the two motion vectors used in bidirectional macroblocks with the SATD metric instead of reusing vectors from the forward and backward searches.6โ enables rate-distortion optimization of macroblock types in I- and P-frames.7โ enables rate-distortion optimization of macroblock types in all frames (default โญ).8โ enables rate-distortion optimization of motion vectors and intra prediction modes in I- and P-frames.9โ enables rate-distortion optimization of motion vectors and intra prediction modes in all frames.10โ QP-RD; requirestrellis=2andaq_mode=1or higher (best ๐).11โ full RD; disables all early terminations.
And before you @ me: in all of the above, "all candidates" does not literally mean all enabled types โ 4x4, 4x8, 8x4 only get tried if 8x8 turns out better than 16x16. iykyk.
(no)chroma_meโ takes chroma information into account during subpixel motion search (default: enabled). Requiressubq>=5.(no)mixed_refsโ lets each 8x8 or 16x8 motion partition independently pick a reference frame. Without this option, a whole macroblock has to use the same reference. Requiresframeref>1.trellis=<0-2>(cabac only) โ rate-distortion optimal quantization:0โ disabled1โ enabled only for the final encode (default)2โ enabled during all mode decisions (slow, requiressubq>=6)
psy-rd=rd[,trell]โ sets the strength of the psychovisual optimization.rd=<0.0-10.0>โ psy optimization strength (requiressubq>=6) (default:1.0)trell=<0.0-10.0>โ trellis (requirestrellis, experimental) (default:0.0)
(no)psyโ enables psychovisual optimizations that genuinely hurt PSNR and SSIM but ought to look better to your eyeballs (default: enabled). Trust the process โจdeadzone_inter=<0-32>โ sets the size of the inter luma quantization deadzone for non-trellis quantization (default:21). Lower values help preserve fine details and film grain (typically useful for high bitrate/quality encodes), while higher values help filter those details out to save bits that can then be spent again on other macroblocks and frames (typically useful for bitrate-starved encodes). Pro tip: start by tweakingdeadzone_intrabefore you touch this parameter ๐deadzone_intra=<0-32>โ sets the size of the intra luma quantization deadzone for non-trellis quantization (default:11). Same effect asdeadzone_inter, except it affects intra frames. And yep, same advice: tweak this one first before you go changingdeadzone_inter.(no)fast_pskipโ performs early skip detection in P-frames (default: enabled). Usually this improves speed at zero cost, but sometimes it can produce artifacts in areas with no details โ like sky โ๏ธ๐ญ(no)dct_decimateโ kills off dct blocks in P-frames that only carry one lil' coefficient (default: enabled). Lowkey it drops some detail, but that's the whole point โ those bits get freed up to spend on other frames, and hopefully the overall vibe (subjective quality, bestie) goes up ๐ธ. If you're compressing non-anime stuff at a high target bitrate, maybe disable it so you keep every last crumb of detail.nr=<0-100000>โ noise reduction, and0means it's off.100-1000is the sweet spot for typical content, but for super noisy stuff you might wanna crank it higher (default:0). It barely dents your speed, so honestly? Prefer this over filtering noise out with video filters likedenoise3dorhqdn3d๐ .chroma_qp_offset=<-12-12>โ lets you use a different quantizer for chroma vs luma. The actually-useful values live in<-2-2>(default:0).aq_mode=<0-2>โ decides how adaptive quantization (AQ) hands out bits:0โ disabled1โ avoid moving bits between frames.2โ move bits between frames (this is the default).
aq_strength=<positive float value>โ how hard AQ goes at reducing blocking and blurring in flat + textured areas (default:1.0). A0.5gives you weak AQ and less detail, a1.5gives you strong AQ and more detail โจ.cqm=<flat|jvt|<filename>>โ either uses a predefined custom quantization matrix or loads a JM format matrix file.flatโ use the predefined flat 16 matrix (default).jvtโ use the predefined JVT matrix.<filename>โ use the JM format matrix file you provide.
NOTE: Windows CMD.EXE besties may hit problems parsing the command line if they try to use all the CQM lists โ that's a command line length limitation thing. In that case, put the lists into a JM format CQM file and load it like described above ๐ซถ.
cqm4iy=<list>(also seecqm) โ custom 4x4 intra luminance matrix, given as a list of 16 comma separated values in the1-255range.cqm4ic=<list>(also seecqm) โ custom 4x4 intra chrominance matrix, given as a list of 16 comma separated values in the1-255range.cqm4py=<list>(also seecqm) โ custom 4x4 inter luminance matrix, given as a list of 16 comma separated values in the1-255range.cqm4pc=<list>(also seecqm) โ custom 4x4 inter chrominance matrix, given as a list of 16 comma separated values in the1-255range.cqm8iy=<list>(also seecqm) โ custom 8x8 intra luminance matrix, given as a list of 64 comma separated values in the1-255range.cqm8py=<list>(also seecqm) โ custom 8x8 inter luminance matrix, given as a list of 64 comma separated values in the1-255range.level_idc=<10-51>โ sets the bitstream's level as defined by annex A of the H.264 standard (default:51โ that's level 5.1). It's how you tell the decoder what capabilities it needs to support. Only touch this if you actually know what it means and you genuinely need to set it ๐.(no)cpu_independentโ guarantees exact reproducibility across different CPUs instead of picking different algorithms when they're available/better (default: enabled).threads=<0-16>โ spawns threads to encode in parallel across multiple CPUs (default:0). It costs you a tiny bit of compression quality.0or'auto'tells x264 to detect how many CPUs you've got and pick an appropriate thread count ๐ง.(no)sliced_threadsโ uses slice-based threading (default: disabled). Unlike normal threading, this adds no encoding latency, but it's slightly slower and less effective at compression.slice_max_size=<0 or positive integer>โ maximum slice size in bytes (default:0). Zero disables the maximum.slice_max_mbs=<0 or positive integer>โ maximum slice size in number of macroblocks (default:0). Zero disables the maximum.slices=<0 or positive integer>โ maximum number of slices per frame (default:0). Zero disables the maximum.sync_lookahead=<0-250>โ adjusts the size of the threaded lookahead buffer (default:0).0or'auto'tells x264 to figure out the buffer size automatically.(no)deterministicโ use only deterministic optimizations with multithreaded encoding (default: enabled).(no)global_headerโ makes SPS and PPS appear only once, right at the beginning of the bitstream (default: disabled). Some players, like the Sony PSP, literally require this option. The default behaviour repeats SPS and PPS before each IDR frame.(no)tffโ enable interlaced mode, top field first (default: disabled).(no)bffโ enable interlaced mode, bottom field first (default: disabled).nal_hrd=<none|vbr|cbr>โ signal HRD information (this one requiresvbv_bufsize) (default:none).(no)pic_structโ forcepic_structin Picture Timing SEI (default: disabled).(no)constrained_intraโ enable constrained intra prediction (default: disabled). Ngl this significantly reduces compression, but it's required for the base layer of SVC encodes ๐.output_csp=<i420|i422|i444|rgb>โ specify output colorspace (default:i420).(no)audโ write access unit delimeters to the stream (default: disabled). Only enable this if your target container format actually requires access unit delimiters.overscan=<undef|show|crop>โ include VUI overscan information in the stream (default: disabled). Seedoc/vui.txtin the x264 source code for more info ๐.videoformat=<component|pal|ntsc|secam|mac|undef>โ include VUI video format information in the stream (default: disabled). This is a purely informative setting for describing the original source. Seedoc/vui.txtin the x264 source code for more info.(no)fullrangeโ include VUI full range information in the stream (default: disabled). Use this if your source video isn't range limited. Seedoc/vui.txtin the x264 source code for more info.colorprim=<bt709|bt470m|bt470bg|smpte170m|smpte240m|film|undef>โ include color primaries information (default: disabled). This one can be used for color correction. Seedoc/vui.txtin the x264 source code for more info ๐.transfer=<bt709|bt470m|bt470bg|linear|log100|log316|smpte170m|smpte240m>โ include VUI transfer characteristics information in the stream (default: disabled). Color correction vibes. Seedoc/vui.txtin the x264 source code for more info.colormatrix=<bt709|fcc|bt470bg|smpte170m|smpte240m|GBR|YCgCo>โ include VUI matrix coefficients in the stream (default: disabled). Also for color correction. Seedoc/vui.txtin the x264 source code for more info.chromaloc=<0-5>โ include VUI chroma sample location information in the stream (default: disabled). Use this to make sure the chroma and luma planes stay aligned after color space conversions. Seedoc/vui.txtin the x264 source code for more info โจ.log=<-1-3>โ turns the amount of logging info printed to the screen up or down:-1โ none0โ print errors only.1โ warnings2โ PSNR and other analysis statistics when the encode finishes (default)3โ PSNR, QP, frametype, size, and other statistics for every frame
(no)psnrโ print signal-to-noise ratio statistics.
NOTE: the'Y','U','V', and'Avg'PSNR fields in the summary are not mathematically sound (they're literally just the average of per-frame PSNRs). They're kept only so you can compare against the JM reference codec. For literally anything else, please use either the'Global'PSNR or the per-frame PSNRs printed bylog=3๐ญ.
(no)ssimโ print the Structural Similarity Metric results. It's an alternative to PSNR, and it may be better correlated with the perceived quality of the compressed video ๐.(no)visualizeโ enable x264 visualizations during encoding. If the x264 on your system supports it, a new window pops open during the encoding process where x264 attempts to present an overview of how each frame gets encoded. Each block type on the visualized movie gets colored like this:dump_yuv=<file name>โ dump YUV frames to the file you specify. For debugging use ๐.red/pinkโ intra blockblueโ inter blockgreenโ skip blockyellowโ B-block
This feature can be considered experimental and subject to change. In particular, it depends on x264 being compiled with visualizations enabled. Note that as of writing this, x264 pauses after encoding and visualizing each frame, waiting for the user to press a key โ and then the next frame gets encoded ๐.
๐ง xvfw (-xvfwopts)
Encoding with Video for Windows codecs is mostly obsolete, unless you're out here wishing to encode to some obscure fringe codec. Like, niche niche.
codec=<name>โ the name of the binary codec file you want to encode with.compdata=<file>โ the name of the codec settings file (likefirstpass.mcf) created byvfw2menc.
๐ฌ MPEG muxer (-mpegopts)
The MPEG muxer can generate 5 types of streams, each with reasonable default parameters that you're free to override. Generally, when you're generating MPEG files, it's advisable to disable MEncoder's frame-skip code (peep -noskip, -mc, plus the harddup and softskip video filters) ๐ซถ.
EXAMPLE:
format=mpeg2:tsaf:vbitrate=8000
format=<mpeg1 | mpeg2 | xvcd | xsvcd | dvd | pes1 | pes2>โ stream format (default:mpeg2). Heads up:pes1andpes2are very broken formats (no pack header and no padding), but VDR uses them โ so do not choose them unless you know exactly what you're doing ๐ .size=<up to 65535>โ the pack size in bytes, default2048. Do not touch this unless you literally, genuinely know exactly what you're doing โ like, no cap, leave it alone bestie.muxrate=<int>โ the nominal muxrate in kbit/s that goes in the pack headers (default:1800kb/s). It'll get updated as needed if you're doingformat=mpeg1ormpeg2, so it's giving self-adjusting queen energy.tsafโ slaps timestamps on all the frames, if possible. Recommended whenformat=dvdโ and ifdvdauthorstarts whining at you with something like "..audio sector out of range...", that's your sign you probs didn't enable this one. ๐interleaving2โ uses a better algorithm to interleave the audio and video packets, based on the principle that the muxer will always try to fill the stream with the largest percentage of free space. Lowkey elegant tbh โจvdelay=<1-32760>โ initial video delay time, in milliseconds (default:0). Use it if you wanna delay the video relative to the audio. Heads up: it does NOT work with:drop๐adelay=<1-32760>โ initial audio delay time, in milliseconds (default:0). Use it if you wanna delay the audio relative to the video. ๐dropโ when you use it withvdelay, the muxer drops the part of the audio that was anticipated. yeet, basically ๐ซถvwidth,vheight=<1-4095>โ sets the video width and height when the video is MPEG-1/2.vpswidth,vpsheight=<1-4095>โ sets the pan and scan video width and height when the video is MPEG-2.vaspect=<1 | 4/3 | 16/9 | 221/100>โ sets the display aspect ratio for MPEG-2 video. Do NOT use it on MPEG-1, because the resulting aspect ratio will be completely wrong โ like, catastrophically wrong, not cute at all ๐ญvbitrate=<int>โ sets the video bitrate in kbit/s for MPEG-1/2 video. ๐vframerate=<24000/1001 | 24 | 25 | 30000/1001 | 30 | 50 | 60000/1001 | 60 >โ sets the framerate for MPEG-1/2 video. This option gets ignored if you use it with thetelecineoption, fyi.telecineโ enables 3:2 pulldown soft telecine mode, aka the muxer will make the video stream look like it was encoded at30000/1001fps. It only works with MPEG-2 video when the output framerate is24000/1001fps โ convert it with-ofpsif you gotta. Any other framerate is incompatible with this option, periodt.film2palโ enables FILM to PAL and NTSC to PAL soft telecine mode: the muxer makes the video stream look like it was encoded at25fps. Same deal โ only works with MPEG-2 video when the output framerate is24000/1001fps, convert it with-ofpsif necessary. Any other framerate is incompatible with this option. ๐ฆtele_srcandtele_destโ enables arbitrary telecining using Donand Graft's DGPulldown code. You gotta specify the original and the desired framerate; the muxer will make the video stream look like it was encoded at the desired framerate. It only works with MPEG-2 video when the input framerate is smaller than the output framerate and the framerate increase is<= 1.5. ikyk ikyk, rules are rules.
EXAMPLE:
tele_src=25,tele_dest=30000/1001
PAL to NTSC telecining
vbuf_size=<40-1194>โ sets the size of the video decoder's buffer, expressed in kilobytes. Only specify it if the bitrate of the video stream is too high for the chosen format AND you know perfectly well what you're doing. A too high value may lead to an unplayable movie, depending on the player's capabilities โ like, imagine the flop ๐ญ When muxing HDTV video a value of400should suffice. ๐abuf_size=<4-64>โ sets the size of the audio decoder's buffer, expressed in kilobytes. Same principle asvbuf_sizeapplies, bestie. ๐
FFmpeg libavformat demuxers (-lavfdopts)
analyzeduration=<value>โ maximum length in seconds to analyze the stream properties. vibe check, but timed โฑ๏ธformat=<value>โ force a specific libavformat demuxer. no autodetection, we're choosing ๐o=<key>=<value>[,<key>=<value>[,...]]โ pass AVOptions to the libavformat demuxer. Note: a patch to make theo=unneeded and pass all unknown options through the AVOption system is welcome ๐ซถ A full list of AVOptions can be found in the FFmpeg manual. Also note that some options may conflict with MPlayer/MEncoder options โ awkward, I know.
EXAMPLE:
o=ignidx
probesize=<value>โ maximum amount of data to probe during the detection phase. In the case of MPEG-TS this value identifies the maximum number of TS packets to scan. ๐cryptokey=<hexstring>โ the encryption key the demuxer should use. This is the raw binary data of the key converted to a hexadecimal string. so mysterious, so iconic ๐ง
FFmpeg libavformat muxers (-lavfopts) (also see -of lavf)
delay=<value>โ currently only meaningful for MPEG[12]: the maximum allowed distance, in seconds, between the reference timer of the output stream (SCR) and the decoding timestamp (DTS) for any stream present (demux to decode delay). Default is0.7(as mandated by the standards defined by MPEG). Higher values require larger buffers and must not be used โ like, don't, fr fr.format=<container_format>โ override which container format to mux into (default: autodetect from output file extension). The lineup:mpgโ MPEG-1 systems and MPEG-2 PSasfโ Advanced Streaming Formataviโ Audio Video Interleave filewavโ Waveform Audioswfโ Macromedia Flashflvโ Macromedia Flash video filesrmโ RealAudio and RealVideoauโ SUN AU formatnutโ NUT open container format (experimental)movโ QuickTimemp4โ MPEG-4 formatipodโ MPEG-4 format with extra header flags required by Apple iPod firmwaredvโ Sony Digital Video containermatroskaโ Matroska
muxrate=<rate>โ nominal bitrate of the multiplex, in bits per second; currently it's only meaningful for MPEG[12]. Sometimes raising it is necessary in order to avoid "buffer underflows" โ the classic struggle ๐ฎโ๐จo=<key>=<value>[,<key>=<value>[,...]]โ pass AVOptions to the libavformat muxer. Note: a patch to make theo=unneeded and pass all unknown options through the AVOption system is welcome ๐ธ A full list of AVOptions can be found in the FFmpeg manual. Note that some options may conflict with MEncoder options โ messy, but we move.
EXAMPLE:
o=packetsize=100
packetsize=<size>โ size, expressed in bytes, of the unitary packet for the chosen format. When muxing to MPEG[12] implementations the default values are:2324for [S]VCD,2048for all others formats. ๐preload=<distance>โ currently only meaningful for MPEG[12]: the initial distance, in seconds, between the reference timer of the output stream (SCR) and the decoding timestamp (DTS) for any stream present (demux to decode delay). โญ
๐ธ ENVIRONMENT VARIABLES ๐ธ
okay so there are a bunch of environment variables that control how MPlayer and MEncoder behave, and you literally can't skip any of them ๐
MPLAYER_CHARSET(also see-msgcharset) โ converts console messages to the charset you pick (default: autodetect). the value"noconv"means no conversion at all, like, none, zero, zip โจMPLAYER_HOMEโ the directory where MPlayer goes looking for your user settings ๐MPLAYER_VERBOSE(also see-vand-msglevel) โ sets the initial verbosity level across all message modules (default:0). the resulting verbosity corresponds to that of-msglevel 5plus the value ofMPLAYER_VERBOSE. so like, math but for how chatty it is ๐ฃ๏ธ
๐ libaf: ๐
LADSPA_PATHโ ifLADSPA_PATHis set, it searches for the specified file. if it's not set, you must supply a fully specified pathname. FIXME: this is also mentioned in the ladspa section ๐
๐ฆ libdvdcss: ๐ฆ
DVDCSS_CACHEโ specify a directory to store title key values in. this speeds up descrambling of DVDs that are in the cache, iconic behavior honestly. theDVDCSS_CACHEdirectory is created if it doesn't exist, and a subdirectory is created named after the DVD's title or manufacturing date. ifDVDCSS_CACHEis not set or is empty, libdvdcss will use the default value, which is"${HOME}/.dvdcss/"under Unix and"C:\Documents and Settings\$USER\Application Data\dvdcss\"under Win32. the special value"off"disables caching, periodt ๐ซDVDCSS_METHODโ sets the authentication and decryption method that libdvdcss will use to read scrambled discs. can be one oftitle,keyordisc. let's break it down:keyโ is the default method. libdvdcss will use a set of calculated player keys to try and get the disc key. this can fail if the drive does not recognize any of the player keys ๐ญdiscโ is a fallback method whenkeyhas failed. instead of using player keys, libdvdcss will crack the disc key using a brute force algorithm. this process is CPU intensive and requires 64 MB of memory to store temporary data. she's working hard ok ๐ฅtitleโ is the fallback when all other methods have failed. it does not rely on a key exchange with the DVD drive, but rather uses a crypto attack to guess the title key. on rare cases this may fail because there is not enough encrypted data on the disc to perform a statistical attack, but on the other hand it is the only way to decrypt a DVD stored on a hard disc, or a DVD with the wrong region on an RPC2 drive. main character energy fr fr ๐
DVDCSS_RAW_DEVICEโ specify the raw device to use. exact usage will depend on your operating system; the Linux utility to set up raw devices israw(8)for instance. please note that on most operating systems, using a raw device requires highly aligned buffers: Linux requires a 2048 bytes alignment (which is the size of a DVD sector) โ ๏ธDVDCSS_VERBOSEโ sets the libdvdcss verbosity level:0โ outputs no messages at all. silent treatment ๐1โ outputs error messages to stderr.2โ outputs error messages and debug messages to stderr.
DVDREAD_NOKEYSโ skip retrieving all keys on startup. currently disabled ๐งHOMEโ FIXME: document this.
๐ libao2: ๐
AO_SUN_DISABLE_SAMPLE_TIMINGโ FIXME: document this.AUDIODEVโ FIXME: document this.AUDIOSERVERโ specifies the Network Audio System server to which thenasaudio output driver should connect, and the transport that should be used. if unset,DISPLAYis used instead. the transport can be one oftcpandunix. syntax istcp/<somehost>:<someport>,<somehost>:<instancenumber>or[unix]:<instancenumber>. the NAS base port is 8000 and<instancenumber>is added to that ๐ง
EXAMPLES:
AUDIOSERVER=somehost:0โ connect to NAS server on somehost using default port and transport.AUDIOSERVER=tcp/somehost:8000โ connect to NAS server on somehost listening on TCP port 8000.AUDIOSERVER=(unix)?:0โ connect to NAS server instance 0 on localhost using unix domain sockets.
DISPLAYโ FIXME: document this.
๐ง vidix: ๐ง
VIDIX_CRTโ FIXME: document this.VIDIXIVTVALPHAโ set this to'disable'in order to stop the VIDIX driver from controlling alphablending settings. you can then manipulate it yourself with'ivtvfbctl'โจ
๐ osdep: ๐
TERMโ FIXME: document this.
๐ libvo: ๐
DISPLAYโ FIXME: document this.FRAMEBUFFERโ FIXME: document this.HOMEโ FIXME: document this.
โญ libmpdemux: โญ
HOMEโ FIXME: document this.HOMEPATHโ FIXME: document this.http_proxyโ FIXME: document this.LOGNAMEโ FIXME: document this.USERPROFILEโ FIXME: document this.
๐ GUI: ๐
DISPLAYโ the name of the display to which the GUI should connect.HOMEโ the home directory of the current user.
๐ซถ libavformat: ๐ซถ
AUDIO_FLIP_LEFTโ FIXME: document this.BKTR_DEVโ FIXME: document this.BKTR_FORMATโ FIXME: document this.BKTR_FREQUENCYโ FIXME: document this.http_proxyโ FIXME: document this.no_proxyโ FIXME: document this.
๐ FILES ๐
/usr/local/etc/mplayer/mplayer.confโ MPlayer system-wide settings/usr/local/etc/mplayer/mencoder.confโ MEncoder system-wide settings~/.mplayer/configโ MPlayer user settings~/.mplayer/mencoder.confโ MEncoder user settings~/.mplayer/input.confโ input bindings (see'-input keylist'for the full list)~/.mplayer/gui.confโ GUI configuration file~/.mplayer/gui.gainโ for audio files not containing ReplayGain data, add a line with replay gain and filename separated by a space character, e.g.
+1.50 /home/me/music/Song.mp3
~/.mplayer/gui.historyโ GUI directory history~/.mplayer/gui.plโ GUI playlist~/.mplayer/gui.urlโ GUI URL list~/.mplayer/font/โ font directory (there must be afont.descfile and files with.RAWextension.)~/.mplayer/DVDkeys/โ cached CSS keys ๐
๐ฅ EXAMPLES OF MPLAYER USAGE ๐ฅ
quickstart Blu-ray playing, bestie:
mplayer br:////path/to/disc
mplayer br:// -bluray-device /path/to/disc
quickstart DVD playing:
mplayer dvd://1
play in Japanese with English subtitles:
mplayer dvd://1 -alang ja -slang en
play only chapters 5, 6, 7:
mplayer dvd://1 -chapter 5-7
play only titles 5, 6, 7:
mplayer dvd://5-7
play a multiangle DVD:
mplayer dvd://1 -dvdangle 2
play from a different DVD device:
mplayer dvd://1 -dvd-device /dev/dvd2
play DVD video from a directory with VOB files:
mplayer dvd://1 -dvd-device /path/to/directory/
copy a DVD title to hard disk, saving to file title1.vob:
mplayer dvd://1 -dumpstream -dumpfile title1.vob
play a DVD with dvdnav from path /dev/sr1:
mplayer dvdnav:////dev/sr1
stream from HTTP:
mplayer http://mplayer.hq/example.avi
stream using RTSP:
mplayer rtsp://server.example.com/streamName
convert subtitles to MPsub format:
mplayer dummy.avi -sub source.sub -dumpmpsub
convert subtitles to MPsub format without watching the movie (obsessed with this one ngl):
mplayer /dev/zero -rawvideo pal:fps=xx -demuxer rawvideo -vc null -vo null -noframedrop -benchmark -sub source.sub -dumpmpsub
input from standard V4L:
mplayer tv:// -tv driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv
playback on Zoran cards (old style, deprecated โ ๏ธ):
mplayer -vo zr -vf scale=352:288 file.avi
playback on Zoran cards (new style):
mplayer -vo zr2 -vf scale=352:288,zrmjpeg file.avi
play DTS-CD with passthrough:
mplayer -ac hwdts -rawaudio format=0x2001 -cdrom-device /dev/cdrom cdda://
you can also use -afm hwac3 instead of -ac hwdts. adjust '/dev/cdrom' to match the CD-ROM device on your system. if your external receiver supports decoding raw DTS streams, you can directly play it via cdda:// without setting format, hwac3 or hwdts ๐ฟ
play a 6-channel AAC file with only two speakers:
mplayer -rawaudio format=0xff -demuxer rawaudio -af pan=2:.32:.32:.39:.06:.06:.39:.17:-.17:-.17:.17:.33:.33 adts_he-aac160_51.aac
you might want to play a bit with the pan values (e.g. multiply with a value) to increase volume or avoid clipping ๐๏ธ
checkerboard invert with geq filter:
mplayer -vf geq='128+(p(X\,Y)-128)*(0.5-gt(mod(X/SW\,128)\,64))*(0.5-gt(mod(Y/SH\,128)\,64))*4'
๐ EXAMPLES OF MENCODER USAGE ๐
encode DVD title #2, only selected chapters:
mencoder dvd://2 -chapter 10-15 -o title2.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4
encode DVD title #2, resizing to 640x480:
mencoder dvd://2 -vf scale=640:480 -o title2.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4
encode DVD title #2, resizing to 512xHHH (keep aspect ratio):
mencoder dvd://2 -vf scale -zoom -xy 512 -o title2.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4
the same, but with bitrate set to 1800kbit and optimized macroblocks:
mencoder dvd://2 -o title2.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=1:vbitrate=1800
the same, but with MJPEG compression:
mencoder dvd://2 -o title2.avi -oac copy -ovc lavc -lavcopts vcodec=mjpeg:mbd=1:vbitrate=1800
encode all *.jpg files in the current directory:
mencoder "mf://*.jpg" -mf fps=25 -o output.avi -ovc lavc -lavcopts vcodec=mpeg4
encode from a tuner (specify a format with -vf format):
mencoder -tv driver=v4l:width=640:height=480 tv:// -o tv.avi -ovc raw
encode from a pipe:
rar p test-SVCD.rar | mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=800 -ofps 24 -
๐ BUGS ๐
do not panic. if you find one, report it to us, but please make sure you have read all of the documentation first. also look out for smileys. :) ๐ญ
many bugs are the result of incorrect setup or parameter usage. the bug reporting section of the documentation (http://www.mplayerhq.hu/DOCS/HTML/en/bugreports.html) explains how to create useful bug reports โ like, actually useful ones, not just "it's broken" ๐ซถ
๐ AUTHORS ๐
okay so storytime bestie, because the origin lore is actually iconic ๐
- MPlayer was initially written by Arpad Gereoffy โ like, the founding mother of this whole situation, we literally stan ๐ธ
- want the full guest list? peep the
AUTHORSfile, it's got a list of some of the many other contributors who showed up and made this happen ๐ซถ
Copyright moment, don't skip it:
MPlayer is (C) 2000-2024 The MPlayer Team
no cap, that's the whole squad right there ๐
The man page credits (aka who actually wrote the thing you're reading):
- this man page was written mainly by Gabucino, Jonas Jermann and Diego Biurrun โจ
- it's maintained by Diego Biurrun โ main character energy fr fr ๐
- got opinions? please send mails about it to the MPlayer-DOCS mailing list ๐ง
- and if your mail is translation-specific? that one goes to the MPlayer-translations mailing list instead, iykyk ๐
lowkey important: those two mailing lists are different, bestie. wrong list = your very valid feedback gets a vibe check it didn't ask for ๐ญ
The little footer we all know and love:
source is The MPlayer Project, version line is dated 2024-05-12, and the page itself goes by MPlayer(1) ๐
and that's a wrap on the whole man page, bestie!! ๐ฆ go forth, watch your videos, encode your things, and remember: with great flag count comes great responsibility ๐โจ
โโโ ๐ fin ๐ โโโ
๐ฆ where this page comes from
- arch rolling: mplayer 38542-11 ยท GPL-2.0-or-later
- nixos 26.05: mplayer 1.5-unstable-2024-12-21
- nixpkgs unstable: mplayer 1.5-unstable-2024-12-21
- (C) 2000-2024 MPlayer Team
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms