HandBrakeCLI 解説

HandBrakeCLI は HandBrake のコマンドラインアプリケーション。
オプション等をある程度覚える必要があるが、処理の自動化・バッチエンコード (連続処理) などが容易にできる。

HandBrakeCLIの使い方

構文
HandbrakeCLI [options] -i <device> -o <file>
HandbrakeCLI [options] --input <device> --output <file>
オプションの書式: --option value, --option=value, --option "value", --option="value"

General HandBrake Options

-h, --help ヘルプを表示する。
-u, --update 更新を確認して終了する。
-v, --verbose <#> エンコード時に出力されるメッセージ・ログの詳細さをコントロールする。
デフォルトは 1 に設定されている。2 はメモリ関連のログを追加し、3 はデバッグのための詳細な情報を追加する。
"-v2", "--verbose=2" のように記述する。
-Z, --preset <string> プリセットを指定する。プリセット名にスペースが含まれる場合はダブルクォーテーションで囲む必要がある。
-z, --preset-list プリセットを表示する。
--no-dvdnav libdvdnav を無効にして、libdvdread を利用する。

Source Options

-i, --input <string> 変換元のファイルパス・デバイスを指定する。
-t, --title <number> エンコードするタイトルを選択する。デフォルトは 1 が選択されている。
0 を指定した場合はすべてのタイトルをスキャンして終了する。
--min-duration <sec> すべてのタイトルをスキャンする際、指定された時間より短いタイトルをスキップする。デフォルトは 10 秒。
--scan 選択したタイトルをスキャンして終了する。
--main-feature メインタイトルを検出し、選択する。
-c, --chapters <string> 変換するチャプターを指定する。デフォルトではすべてのチャプターが選択されている。
範囲を指定する場合はハイフンを使う。(例: 1-3)
--angle <number> エンコードするアングルを指定する。(DVD, BD only)
--previews <#:B> 動画を解析し静止画プレビューを生成する。Windows では利用できない。
--start-at-preview <#> 上記 "--previews" で解析した位置からエンコードを開始する。
--start-at <unit:#> 指定したポイントからエンコードを開始する。
フレーム (frame)、時間 (duration(sec))、PTS (90kHz clock)で指定できる。(例: --start-at duration:30)
--stop-at <unit:#> 指定したポイントでエンコードを終了する。
フレーム (frame)、時間 (duration(sec))、PTS (90kHz clock)で指定できる。(例: --stop-at frame:300)

Destination Options

-o, --output <string> 出力ファイルパスとファイル名を指定する。
拡張子を .mp4, .mkv にした場合は、指定したファイルフォーマットが自動的に選択される。
-f, --format <string> 出力ファイルフォーマットを指定する。"MP4", "MKV" が指定できる。
これが省略された場合はファイル名の拡張子からファイルフォーマットが自動的に選択される。
-m, --markers 出力ファイルにチャプター情報を付加する。
出力ファイルフォーマットが MP4 の場合 Apple 形式 (Apple Text, QuickTime 形式) で記録される。
csv ファイルからチャプター名をインポートする場合は --markers="Full\Path\to\Chapter_names.csv" とする。
-4, --large-file 64bit-MP4 ファイルフォーマットを出力する。
これを有効にした場合、ファイルサイズが 4GB を超える MP4 ファイルが出力できるようになる。
ただし、いくつかのデバイスでは互換性で問題が生じる。
-O, --optimize MP4ファイルをストリーミング向けに最適化する。
-I, --ipod-atom 古いiPod(5/5.5G)で再生する場合に必要。

Video Options

-e, --encoder <string> 映像エンコーダーを指定する。"x264", "ffmpeg4", "ffmpeg2", "theora" から選択できる。
デフォルトは "ffmpeg4" (MPEG4-ASP)
--x264-preset <string> x264のエンコードプリセットを指定する。利用可能な値は以下。
"ultrafast", "superfast", "veryfast", "faster", "fast", "medium", "slow", "slower", "veryslow", "placebo"
デフォルトは "medium" になっている。
--x264-tune <string> x264のエンコード設定を調整するオプションを指定する。利用可能な値は以下。
"film", "animation", "grain", "stillimage", "psnr", "ssim", "fastdecode", "zerolatency"
デフォルトは "none" (指定なし) になっている。
-x, --encopts <string> "x264", "ffmpeg2", "ffmpeg4" のための追加オプションを入力できる。書式は以下。
-x option1=value1:option2=value2
--encopts="option1=value1:option2=value2"
--h264-profile <string> h264のプロファイルを指定する。"auto", "high", "main", "baseline" から選択できる。
デフォルトの "auto" は各オプションで指定されたエンコード設定から適切なプロファイルを自動的に選択する。
--h264-level <string> h264のレベルを指定する。利用可能な値は以下。
"auto", "1.0", "1b", "1.1", "1.2", "1.3", "2.0", "2.1", "2.2", "3.0", "3.1", "3.2", "4.0", "4.1", "4.2", "5.0", "5.1", "5.2"
デフォルトの "auto" は各オプションで指定されたエンコード設定から適切なレベルを自動的に選択する。
-q, --quality <number> 映像の品質をコントロールする。"Constant Quality" (品質ベース) モード
-b, --vb <kb/s> 映像のビットレートを指定する。"Avg Bitrate" (平均ビットレート指定) モード
-2, --two-pass 2-Pass エンコードを行う。平均ビットレートを指定した際に有用。
-T, --turbo 2-Pass エンコード時の最初のパスを高速化する。
-r, --rate 映像のフレームレートを指定する。利用可能な値は以下。
"5", "10", "12", "15", "23.976", "24", "25", "29.97", "30", "50", "59.94", "60"
指定しない場合は入力元のフレームレートが参照される。
--vfr, --cfr, --pfr フレームレートモードの指定。
可変フレームレート (VFR, Variable Framerate)、固定フレームレート (CFR, Constant Framerate)、ピークフレームレート (PFR, Peak Framerate) が指定できる。
VFR は入力元のタイムスタンプを維持する。
CFR は "-r" オプションで指定されたレートで出力する。"-r" オプションを指定していない場合は入力元のフレームレートで出力する。
PFR は入力元のタイムスタンプを維持するが "-r" オプションで指定されたレートを超えないように制限される。"-r" オプションを指定していない場合は入力元のフレームレートが基準になる。

Audio Options

-a, --audio <string> エンコードする音声トラックを選択する。最初のトラックは "1" 2番目のトラックは "2" というようにナンバリングされる。
複数選択する場合はコンマ (,) で区切って入力する。
例: --audio 1,2 (1 番目と 2 番目のトラックを選択)
例: --audio 1,1,2 (同じトラックを複数回選択することもできる)
例: --audio none (音声なし)
-E, --aencoder <string> 音声エンコーダーを指定する。利用可能なオプションは以下。
"faac", "ffaac", "ffac3", "lame", "vorbis", "ffflac", "ffflac24", "copy:aac", "copy:ac3", "copy:dts", "copy:dtshd", "copy:mp3", "copy"
デフォルトの設定は出力ファイルフォーマットが "MP4" の場合は "faac (AAC)"、"MKV" の場合は "lame (MP3)" となっている。
"copy:***" は指定したコーデックと入力元のコーデックが一致した場合にコピー (パススルー) を行う。一致しなかった場合は指定したコーデックでエンコードを行う。
(ただし copy:dts/dtshd は除く。これらを指定してコピー出来なかった場合は代替エンコードが行われず音声トラックが破棄される)
"copy" はコピー (パススルー) 可能な任意のコーデックの音声トラックをコピーする。
コピーできなかった場合は "--audio-fallback" で指定されたコーデックでエンコードが行われる。
複数のトラックに対して任意のエンコーダーを指定する場合はコンマ (,) で区切って入力する。
--audio-copy-mask <string> 音声エンコーダーで "copy" を選択した場合にコピー (パススルー) を許可するコーデックを設定する。
指定できるコーデックは "aac", "ac3", "dts", "dtshd", "mp3" デフォルトは可能なものすべて。"none" を指定することですべて無効にすることができる。
複数指定する場合はコンマ (,) で区切って入力する。
--audio-fallback <string> 音声エンコーダーで "copy" を選択した場合にコピー (パススルー) が可能でないときに使用される代替エンコーダーを指定する。
すべての非パススルーコーデックが指定できる。("faac", "ffaac", "ffac3", "lame", "vorbis", "ffflac", "ffflac24") デフォルトは指定なし。
有効な代替エンコーダーが指定されておらず、パススルーが不可能だった場合はその音声トラックは破棄される。
-B, --ab <kb/s> 平均音声ビットレートを指定する。デフォルトは選択したコーデック、サンプルレート等に依存する。
複数のトラックに対して指定する場合はコンマ (,) で区切って入力する。
-Q, --aq <quality> 音声エンコード時の品質指定。"lame", "vorbis" を選択した場合に有効になる。
スケールは各エンコーダーによって変化する。(lame: 10 to 0, vorbis: -2 to 10)
-C, --ac <compression> 音声コーデックの圧縮レベルを指定する。音声エンコーダーに "ffflac", "lame" を選択した場合に有効になる。
--compression_level (ffflac), -q (lame) に相当する。
-6, --mixdown <string> 音声トラックのダウンミックスの設定。利用可能なオプションは以下。
"mono", "left_only", "right_only", "stereo", "dpl1", "dpl2", "5point1", "6point1", "7point1", "5_2_lfe"
複数のトラックに対して指定する場合はコンマ (,) で区切って入力する。
--normalize-mix <string> クリッピングを防止するためにオーディオミックスレベルをノーマライズする。
0 = ノーマライズ無効 (デフォルト)
1 = ノーマライズを有効にする
-R, --arate 音声トラックのサンプルレートを指定する。"8", "11.025", "12", "16", "22.05", "24", "32", "44.1", "48" から選択できる。
複数のトラックに対して指定する場合はコンマ (,) で区切って入力する。
-D, --drc <float> ダイナミックレンジコンプレッションを適用する。範囲は 1.0 から 4.0 デフォルトは 0.0 (DRC無効) 1.5 から 2.5 程度が適当。
複数のトラックに対して指定する場合はコンマ (,) で区切って入力する。
--gain <float> 音量の増減をコントロールする。正の値で増幅し、負の値で減衰させる。(単位:dB)
複数のトラックに対して指定する場合はコンマ (,) で区切って入力する。
--adither <string> ディザリングを適用する。ffflac で利用可能。指定できる値は以下。
"auto", "none", "rectangular", "triangular", "triangular_hp", "triangular_ns"
複数のトラックに対して指定する場合はコンマ (,) で区切って入力する。デフォルトは "auto"
-A, --aname <string> 音声トラックに名前を設定する。MP4フォーマットでのみ利用可能。

複数の音声トラックを選択した場合の設定例

HandBrakeCLI で複数の音声トラックを選択し、それぞれに対して異なるエンコード設定を適用する場合は以下の例のようにコンマで区切って記述する。
-a 1,1,2 -A "Audio 01","Audio 02","Audio 03" -E copy:ac3,faac,ffaac -B auto,160,128 -R auto,auto,44.1 -6 auto,dpl2,stereo
順番に説明すると、
まず -a 1,1,2 のオプションで処理する音声トラックを選択している。
これにより出力ファイルは 3 つの音声トラックを持つファイルになる。(最初のトラック、最初のトラックのコピー、2 番目のトラック)
次に -A "Audio 01","Audio 02","Audio 03" でそれぞれの音声トラックに名前を設定している。
最初のトラック = "Audio 01"、最初のトラックのコピー = "Audio 02"、2 番目のトラック = "Audio 03"
次に -E copy:ac3,faac,ffaac -B auto,160,128 -R auto,auto,44.1 -6 auto,dpl2,stereo でエンコーダー、ビットレート、サンプルレート、ダウンミックスをそれぞれ指定している。特別な値 "auto" を指定すると自動的に適切な値またはデフォルトの値が設定される。
これにより、"Audio 01" はパススルーされた AC3、"Audio 02" は faac でエンコードされた AAC-LC(Dolby Pro Logic II), 160kbps 、"Audio 03" は ffaac でエンコードされた AAC-LC(stereo), 128kbps, 44.1khz となる。

Picture Settings

-w, --width <number> 動画の横幅を指定する。指定しない場合は -l の値、変換元のアスペクト比から自動で計算される。
-l, --height <number> 動画の高さを指定する。指定しない場合は -w の値、変換元のアスペクト比から自動で計算される。
--crop <T:B:L:R> 上下左右の切り取る量を指定する。指定しない場合は自動判定になる。
--loose-crop <#> "--crop" で切り取る量を指定した際、出力される動画の幅・高さが "--modulus" で指定した値の倍数になるよう余分に切り取って調整するオプション。
余分に切り取る量の最大値を指定する。(デフォルトは 15)
例えば、720x480 の動画を "--crop 2:2:2:2" で切り取る場合、"--modulus 16", "--loose-crop" を指定すると "--crop 8:8:8:8" に調整される。
これにより出力される動画の画面サイズは 704x464 となり、幅・高さどちらも 16 の倍数になる。
-Y, --maxHeight <#> 高さの上限を設定する。入力元動画の高さがこの値を超える場合は縮小される。アスペクト比は保持される。
-X, --maxWidth <#> 幅の上限を設定する。入力元動画の幅がこの値を超える場合は縮小される。アスペクト比は保持される。
--strict-anamorphic Anamophic を有効にする。入力元の画面サイズを再現する。リサイズ不可。
--loose-anamorphic Anamophic を有効にする。必要に応じてリサイズも可能。
--custom-anamorphic Anamophic を有効にする。手動で設定を行う。
--display-width <number> "custom-anamorphic" モードの設定。出力動画の表示幅を設定する。
動画は再生時にこの値にスケーリングされる。
--keep-display-aspect "custom-anamorphic" モードの設定。入力元の表示アスペクト比を保持する。
--pixel-aspect <PARX:PARY> "custom-anamorphic" モードの設定。任意のピクセルアスペクト比を指定する。
--itu-par ITU ピクセルアスペクト比を使用する。(40:33, 10:11等)
--modulus <number> 画面サイズはこの値の倍数になる。
-M, --color-matrix カラーマトリクスを指定する。"709", "pal", "ntsc", "601" が指定できる。
デフォルトは入力元から自動検出。

Filters

-d, --deinterlace
<fast/slow/slower/bob> or <YM:FD:MM:QP>
"Deinterlace" フィルタ。デインターレース処理を行う。
値を指定しない場合はデフォルト設定が適用される。(0:-1:-1:1)
-5, --decomb <fast/bob>
or <MO:ME:MT:ST:FM:BT:BX:BY:MG:VA:LA:DI:ER:NO:MD:PP:FD>
"Decomb" フィルタ。フレームごとにコーミングノイズの有無を判断し、選択的なデインターレース処理を行う。
値を指定しない場合はデフォルト設定が適用される。
(391:2:3:3:2:40:16:16:10:20:20:4:2:50:24:1:-1)
-9, --detelecine <L:R:T:B:SB:MP:FD> "Detelecine" フィルタ。逆テレシネ処理を行う。
CFR出力で任意のフレームレートを指定しない限り、逆テレシネ処理により生じた複製フレームは自動的に削除されフレームレートの調整が行われる。
値を指定しない場合はデフォルト設定が適用される。(1:1:4:4:-1:0:-1)
-8, --denoise <weak/medium/strong> or <SL:SC:TL:TC> "Denoise" フィルタ。ノイズ除去を行う。(hqdn3d filter)
空間軸輝度、空間軸彩度、時間軸輝度、時間軸彩度のフィルタ強度をそれぞれ指定することができる。
"weak" (2:1:2:3), "medium" (3:2:2:3) "strong" (7:7:5:5) のショートネームでの指定も可能。
値を指定しない場合はデフォルト設定が適用される。(4:3:6:4.5)
-7, --deblock <QP:M> "Deblock" フィルタ。ブロックノイズを低減する。有効にする場合はデフォルトの値が最適とされる。
"QP" は 1 から 10 までの値が指定でき、大きい値ほど画像がぼやける。
デフォルト設定は "5:2"
--rotate <M> 映像を回転・反転させるフィルタ。
1 は上下反転、2 は左右反転、3 は上下左右反転、4 は時計回りに90度回転させる。
-g, --grayscale グレイスケール出力。モノクロ(白黒)素材に有用。

Subtitle Options

-s, --subtitle <string> 字幕トラックを選択する。最初のトラックは "1" 2番目のトラックは "2" というようにナンバリングされる。
複数選択する場合はコンマ (,) で区切って入力する。
特別な値 "scan" を指定することで音声トラックの言語・優先言語設定に対応する強制字幕・吹き替え用字幕の有無をスキャンし、選択することができる。(可能ならば)
-F, --subtitle-forced <string> 強制フラグのある字幕のみを表示させる。複数選択する場合はコンマ (,) で区切って入力する。
--subtitle-burned <number> 選択した 1 つの字幕トラックを焼き付ける。
--subtitle-default <number> 選択した 1 つの字幕トラックにデフォルトフラグを設定する。
-N, --native-language <string> 優先言語を指定する。
選択した音声トラック、またはデフォルトの音声トラックが指定した言語と異なる場合、指定した言語の字幕トラックが選択される。
ISO639-2 言語コードで指定する。
--native-dub "--native-language" と組み合わせて使用することで選択した言語と一致する音声トラックが選択される。
一致しない場合、選択した言語と一致する字幕トラックが選択される。
--srt-file <string> SRT (SubRip Text) ファイルのパスを指定する。複数指定する場合はコンマ (,) で区切って入力する。
--srt-codeset <string> SRT ファイルの文字コードを指定する。複数のファイルに対して指定する場合はコンマ (,) で区切って入力する。
--srt-offset <string> SRT ファイルに対してオフセットを指定する。(単位:ms)
--srt-lang <string> SRT ファイルの言語を設定する。(ISO639-2 言語コード)
--srt-default <number> 選択したSRT ファイルに対してデフォルトフラグを指定する。

その他

終了コード:
0 = 正常終了(Ctrl-Cで中断した場合もこれが返される)
1 = クラッシュした場合

ログについて:
HandBrakeCLIはログデータは標準エラー出力、エンコードの進捗情報は標準出力でそれぞれ出力する。
最終更新:2013年09月13日 02:11