HANDBRAKECLI:(1)

✨ NAME ✨

Okay bestie, this is the HANDBRAKECLI(1) manual page from the User Commands section πŸŽ€ It's all about HandBrakeCLI, a versatile DVD ripper and video transcoder that lives in the command line πŸ’…


πŸ“– DESCRIPTION πŸ“–

The basic vibe is:

HandBrakeCLI [options] -i <device> -o <file>

So you pass in your options, a -i input device, and a -o output file πŸ¦‹

πŸ’– General Handbrake Options πŸ’–

  • -h, --help β€” Need a hand? This prints the help text πŸ†˜
  • -u, --update β€” Checks for updates and then exits 🌸
  • -v, --verbose <#> β€” Makes HandBrake extra chatty. The optional argument sets the logging level πŸ“’
  • -Z. --preset <string> β€” Uses a built-in preset. Capitalization matters, so be careful 🧐 If the preset name has spaces, wrap it in double quotation marks πŸŽ€
  • -z, --preset-list β€” Shows you a list of all the built-in presets πŸ“‹
  • --no-dvdnav β€” Tells HandBrake not to use dvdnav for reading DVDs. This one is experimental, and dvdnav is enabled by default for testing ⚠️

🎬 Source Options 🎬

  • -i, --input <string> β€” Sets the input device πŸ“€
  • -t, --title <number> β€” Picks which title to encode. Use 0 to scan all titles only. The default is 1 ✨
  • --min-duration β€” Sets the minimum title duration in seconds. Anything shorter won't get scanned. The default is 10 ⏱️
  • --scan β€” Scans the selected title only πŸ”
  • --main-feature β€” Detects and selects the main feature title πŸ‘‘
  • -c, --chapters <string> β€” Picks chapters. Use something like "1-3" for chapters 1 to 3, or "3" for just chapter 3. The default is all chapters πŸ“–
  • --angle <number> β€” Selects the DVD angle πŸŽ₯
  • --previews <#:B> β€” Decides how many preview images get generated (max 30) and whether they're stored to disk. The 0 or 1 at the end is the on/off switch for storing them. The default is 10:0 πŸ–ΌοΈ
  • --start-at-preview <#> β€” Starts encoding at a given preview πŸš€
  • --start-at <unit:#> β€” Starts encoding at a given frame, duration (in seconds), or pts (on a 90kHz clock) ⏯️
  • --stop-at <unit:#> β€” Stops encoding at a given frame, duration (in seconds), or pts (on a 90kHz clock) πŸ›‘

πŸ“¦ Destination Options πŸ“¦

  • -o, --output <string> β€” Sets the output file name πŸ’Ύ
  • -f, --format <string> β€” Sets the output format, either mp4 or mkv. By default it's autodetected from the file name 🎞️
  • -m, --markers β€” Adds chapter markers. This only works for mp4 and mkv output formats πŸ”–
  • -4, --large-file β€” Uses 64-bit mp4 files that can hold more than 4 GB πŸ’ͺ
Heads up bestie: this one breaks iPod and PS3 compatibility 😭
  • -O, --optimize β€” Optimizes mp4 files for HTTP streaming 🌐
  • -I, --ipod-atom β€” Marks mp4 files so 5.5G iPods will accept them 🎧

πŸŽ₯ Video Options πŸŽ₯

  • -e, --encoder <string> β€” Sets the video library encoder. Your options are x264 / ffmpeg4 / ffmpeg2 / theora, and the default is ffmpeg4 🎨
  • --x264-preset <string> β€” When you're using x264, this picks the x264 preset. Your choices are ultrafast / superfast / veryfast / faster / fast / medium / slow / slower / veryslow / placebo 🌈
  • --x264-tune <string> β€” When you're using x264, this picks the x264 tuning. Your choices are film / animation / grain / stillimage / psnr / ssim / fastdecode / zerolatency 🧁
  • -x, --encopts <string> β€” Lets you specify advanced encoder options in the same style as mencoder. This is for x264 and ffmpeg only, and it looks like option1=value1:option2=value2 🧠
  • --x264-profile <string> β€” When you're using x264, this makes sure the output follows the h.264 profile you pick. Your choices are baseline / main / high / high10 / high422 / high444 πŸ’Ž
  • -q, --quality <number> β€” Sets the video quality ✨
  • -b, --vb <kb/s> β€” Sets the video bitrate. The default is 1000 πŸ“Ά
  • -2, --two-pass β€” Uses two-pass mode πŸ‘―
  • -T, --turbo β€” When you're using 2-pass, this uses the turbo options on the first pass to speed things up. It only works with x264, it affects PSNR by about 0.05dB, and it makes the first pass two to four times faster 🏎️
  • -r, --rate β€” Sets the video framerate. Your choices are 5 / 10 / 12 / 15 / 23.976 / 24 / 25 / 29.97 / 30 / 50 / 59.94 / 60 🎞️
Watch out: if you don't specify a framerate, HandBrake keeps the source's time stamps, which can end up making variable framerate video πŸ‘€
  • --vfr, --cfr, --pfr β€” These pick your frame rate control style. Pick one:
    • --vfr is variable frame rate and it preserves the source timing 🌊
    • --cfr is constant frame rate. The output sticks to the rate you give with -r, or the source's average rate if you don't use -r πŸ“
    • --pfr is peak-limited frame rate. It won't let the rate go over the rate you set with -r, but it won't change the source timing if the source is already below that rate πŸ”οΈ

If you don't give any of these flags, the default is --cfr when you use -r, and --vfr otherwise πŸ’…

πŸ”Š Audio Options πŸ”Š

  • -a, --audio <string> β€” Picks your audio track(s), separated by commas. Use "none" for no audio, or "1,2,3" for multiple tracks. The default is the first one. You can make multiple output tracks from one input 🎢
  • -E, --aencoder <string> β€” Sets your audio encoder(s). Your options are:
    • faac
    • ffaac
    • copy:aac
    • ffac3
    • copy:ac3
    • copy:dts
    • copy:dtshd
    • lame
    • copy:mp3
    • vorbis
    • ffflac
    • copy

copy:* passes the matching audio through unmodified to the muxer, as long as it's a supported passthrough audio type. Separate with commas if you have more than one audio track. The default is faac for mp4 and lame for mkv 🎀

  • --audio-copy-mask <string> β€” Sets which audio codecs are allowed when you use the copy audio encoder option. Choose from aac/ac3/dts/dtshd/mp3, and the default is all of them. Separate with commas for multiple allowed options πŸ›‘οΈ
  • --audio-fallback <string> β€” Sets the audio codec to use when it's not possible to copy an audio track without re-encoding πŸ”
  • -B, --ab <kb/s> β€” Sets audio bitrate(s). The default depends on the selected codec, mixdown, and samplerate. Separate with commas for more than one audio track πŸ“»
  • -Q, --aq <quality> β€” Sets the audio quality metric. The default depends on the selected codec. Separate with commas for more than one audio track 🎚️
  • -C, --ac <compression> β€” Sets the audio compression metric. The default depends on the selected codec. Separate with commas for more than one audio track πŸ—œοΈ
  • -6, --mixdown <string> β€” Picks the format(s) for surround sound downmixing. Separate with commas for more than one audio track. Your choices are mono/stereo/dpl1/dpl2/6ch. The default is up to 6ch for ac3, and up to dpl2 for other encoders πŸ”ˆ
  • -R, --arate β€” Sets audio samplerate(s), choosing from 22.05/24/32/44.1/48 kHz. Separate with commas for more than one audio track 🎼
  • -D, --drc <float> β€” Adds extra dynamic range compression to the audio, which makes soft sounds louder πŸ”Š The range is 1.0 to 4.0, but 4.0 is too loud. The useful range is 1.5 - 2.5. Separate with commas for more than one audio track πŸŒ™
  • --gain <float> β€” Amplifies or attenuates the audio before encoding. Values are in dB. Negative values attenuate and positive values amplify. A 1 dB difference is barely audible πŸ‘‚
Important: this does NOT work with audio passthru (copy) πŸ™…β€β™€οΈ
  • -A, --aname <string> β€” Names your audio track(s). Separate with commas for more than one audio track 🏷️
  • --subtitle-burned <number> β€” okay so this one burns the picked subtitle straight into the video track πŸ”₯ Skip number and the first track gets burned. And number is just an index into the list you gave with --subtitle 🧚
  • --subtitle-default <number> β€” flags the chosen subtitle as the default one that pops up when the video plays πŸ’– No default set means no subtitle shows up automatically. Skip number and the first track becomes the default. number is an index into the --subtitle list too ✨
  • -N, --native-language <string> β€” your language preference, bestie 🌸 If the first audio track isn't in your native language, it grabs the first subtitle that is. Pair it with --native-dub and the audio track wins over subtitles πŸŽ€ Pass an iso639-2 code like fre, eng, spa, dut, et cetera 🫢
  • --native-dub β€” goes with --native-language and it's giving main character energy πŸ’… If no audio tracks are selected, the default audio track becomes the first one that matches your --native-language. No matching audio tracks? Then the first matching subtitle track steps in instead πŸ¦‹
  • --srt-file <string> β€” SubRip SRT filename(s), separated by commas πŸ“
  • --srt-codeset <string> β€” the character codeset(s) your SRT files are encoded in, separated by commas 🌈 Run iconv -l for a list of valid codesets. If you don't specify one, latin1 is assumed πŸ’œ
  • --srt-offset <string> β€” an offset in milli-seconds to apply to the SRT files, separated by commas ⏱️ Not specified? Zero is assumed. Offsets may be negative, so don't panic if you see a minus sign πŸ™ˆ
  • --srt-lang <string> β€” the language for the SRT files, as an iso639-2 code (fra, eng, spa, et cetera), separated by commas πŸ‡«πŸ‡· Not specified? Then und gets used 🀷
  • --srt-default <number> β€” flags the selected SRT as the default subtitle that shows on playback πŸ‘‘ No default means no subtitle gets displayed automatically. If number is omitted, the first SRT is the default. number is a 1 based index into the --srt-file list 🎯

Okay that's the whole page, bestie! πŸŽ€ Thanks for sticking with me through all the subtitle drama 😭 This one's from HandBrakeCLI 0.9.8, dated October 2012, so it's a whole vintage queen πŸ‘‘ slay forever πŸ¦‹πŸ’–