HandBrakeで自動でエンコードしてmkvをmp4にする方法

スクリーンショット_011715_044050_AMWindowsでHandBrakeのCLI版を使って、自動でmkvをmp4に変換する方法を紹介します。手動でいちいち設定をしてエンコードをするということはとても大変なので、この方法を使えばかなり楽になります。
応用すればどの形式にも変更することができるので、使用用途に合わせて導入してください。
読めばだれでもできる、ということを目標に書いていきます。

HandBrakeCLIのインストール

まず公式サイトからコマンドライン版のHandBrakeをダウンロードします
ダウンロードリンク
普通はWindows 64bitのものを選べばいいかと思います。

普通のexeファイルのようなインストールは必要ありません。解凍するだけで使用できるので、Cドライブの中などに「System32」などと適当にファイルを作ります。後々入力がめんどうになるので、日本語のフィルダ名だけはやめておいたほうがいいです。

スクリーンショット 011715 030236 AM

簡単な動作確認

動作の仕方をイメージしやすくするためにも、簡単なエンコードをやってみたいと思います。
以下のものはmkvをmp4に変換する最も簡単な記述方法です。ここに自分の好みの設定を書き足していくことで、変更することができます。

実際にエンコードを試すため、短めのmkvファイルを用意しておいてください。

コマンドプロンプトを開く

解凍したHandBrakeのexeファイルをクリックしても、すぐに画面が消えてしまうと思います。これはコマンドプロンプトで実行しないといけないためです。

なのでコマンドプロンプトを開きます。
スタートボタンから「コマンドプロンプト」と入力するか、Windowsボタン+Rを押した後「cmd」で出てきます。
黒い画面が出てくればOKです。
無題クリップ_011715_042749_AM

解凍した場所に移動する

HandBrakeCLIを実行するため、解凍したファイルの場所に移動します。
今回はCドライブ -> System32 -> HandBrake_CLI -> HandBrakeCLI.exe のある場所としてやっていきます。

cd ..
と入力していき、C:¥>となるまで移動します。

スクリーンショット 011715 032454 AM

そして、目的の場所に
cd [移動するフォルダ名]
と打ち込み、移動します。

スクリーンショット 011715 032952 AM

※input.mkvはHandBrakeCLI.exeがある場所においておきます。またファイル名は自分が用意したものに書き換えても大丈夫です。

スクリーンショット 011715 033349 AM

そして以下のコマンドを打ち込んで実行します。

HandBrakeCLI -i input.mkv -o output.mp4

いろいろ出てきた後、また入力が可能になっていれば完了したことです。input.mkvが置かれた場所にoutput.mp4が出来上がっています。
また現時点では画質の設定などはしていないので、画質が悪いなどの問題は気にしないでください。

バッチファイルによる処理

いよいよ自動化させます。
以下のサイトを参考にしております。

Handbrake で TS ファイルの温存用適当エンコメモ | ぶっちろぐHandbrake で TS ファイルの温存用適当エンコメモ | ぶっちろぐ

バッチファイルの作成

TeraPadというフリーソフトを使用して作成していきます。
メモ帳は使用しないでください。

まず右クリックをして「新規作成」から「テキスト ドキュメント」をクリックします。

無題クリップ 011715 034242 AM

名前を拡張子batに変更します。今回は名前を「MkvToMp4.bat」にしてあります。

無題クリップ 011715 034609 AM

なお、画像のように拡張子表示がされていない人は設定で変更しておいてください。
わからない人向け:ファイルの拡張子を表示する方法

TeraPadをあらかじめ開いておき、先ほど作成したものをドラッグ&ドロップします。

処理法の記述

以下には私が作ったものを載せておきます。
・ps3で再生するためレベルは4.1。
・x264で処理速度は遅め。
・映像はConstant Qualityモードで14に設定した。これは元の映像とほとんど容量が変わらないくらいの数値。かなり容量が大きいため、容量を小さくしたいなら数値を大きくする(22くらい)
・音質は320kbps, Stereo, 48kHz。

@echo off
:: プログラムパスとオプションの定義
set HB="C:\System32\HandBrake_CLI\HandBrakeCLI"
set OPT=-f mp4 -e "x264" --x264-preset "slow" -q "14" --h264-level "4.1" --vfr -B "320" -6 "stereo" -E "fdk_aac" -R "48" -w 1920 -l 1080

:: 出力パス
set TSTMP="C:\output_video"

if /i not "%~x1"==".mkv" goto error

%HB% %OPT% -i %1 -o "%TSTMP%\%~n1.mp4"

goto end

:error
echo "Input file error %1"

:end

変更するべき場所

まず3行目にプログラムパスを書きます。これはHandBrakeCLI.exeがおいてある場所を指定してあげます。
その際、サンプルにあるとおりの書き方で書いてください。
よくわからないひとは「windows 絶対パス 書き方」とかでググってください。

4行目にはエンコードの仕方を書いています。それぞれ好みのものに変更してみてください。

7行目にはエンコードしたファイルを出力するフォルダをしてしています。

9行目にはmkvファイルならエンコードを実行する、という内容が書いてあります。別の拡張子で行う場合、ここの変更が必要です。

11行目には出力時のファイル名について書いてあります。ここも別の拡張子で行う場合、変更が必要です。

実行方法

batファイルにエンコードしたいファイルを重ねてください。
batファイル、エンコードしたいファイルはそれぞれどこのフォルダにあっても動きます。

無題クリップ 011715 040859 AM

より詳しい記述方法

もし自分は別の設定をしたい!!をいうひとがいれば以下を見てほしい。

HandBrake 解説 @Wiki - HandBrakeCLI 解説HandBrake 解説 @Wiki – HandBrakeCLI 解説

ここの内容は最新版だと動かないものがあったので、より正確な情報がほしいならこっちも見てください。

       CLIGuide – HandBrake
CLIGuide – HandBrake

トラブルシューティング

動かしたら、すぐ画面が消えた

おそらくbatファイルの記述がどこか間違っています。
プログラムのファイルの場所、エンコードの設定の記述を確認してみてください。

場所やコマンドは全部あっているのに動かない。すぐ画面が消える

コマンドプロンプトでbatファイルが置いてある場所にいき、手動で実行してみてください。
その際、読めない意味不明な文字列が出てきたら文字化けしているということです。

その場合文字コード・改行コードを変更してみてください。
Windowsの場合、文字コードは「SHIFT-JIS」改行コードは「CR+LF」でいいと思います。
これらはTeraPadのファイルの「文字/改行コード指定保存」から設定できます。

Pocket

関連記事

コメント

  • トラックバックは利用できません。

  • コメント (6)

    • kae
    • 2015年 1月 18日

    こんにちは
    記事通りにbatを作成し、変換することはできたのですが、
    これは多重ドロップによる連続変換、またはそれに代わる機能を付随することは可能でしょうか?

      • 管理人
      • 2015年 1月 18日

      参考にしたページに、メモ帳にファイル名を載せることで複数エンコードできるbatが載っていますので参考にされてはどうでしょうか。
      記事中にのせてあります。

      • All of these articles have saved me a lot of heaeachds.

    • ycrack
    • 2015年 5月 30日

    こんにちは
    このサイトでのコマンドは、オーディオコーデックにfdk_aacを指定していますが、私の環境では認識されずに強制的にlibavcodecのAACに切り替わってしまいます。ビットレートも無視されて160kbps固定です。
    HandbrakeCLIにどうやってfdk_aacを認識させているのでしょう?また、NeroAACencを認識させることは可能なのでしょうか…?

      • 管理人
      • 2015年 5月 30日

      当環境では正常に動作しておりますので、記入ミスが原因と思います。
      fdk_aacは標準で導入されているもので、追加のエンコーダの導入法はこちらではわかりません。

        • ycrack
        • 2015年 5月 31日

        見直してみたところ、–decombのパラメータ指定のを間違って付いてしまっているとlibavcodecになることが確認できました。そこを修正しただけであっさりlibfdk_aacになりました。お騒がせして申し訳ありません。