HEVCで動画をエンコードする

Handbrake

コマンドを叩くだけでありとあらゆる動画変換ができるスグレモノです。

今回はコマンドを使って一括エンコードをしたいのでコマンドラインバージョンをダウンロードします。

今回は以下のような動画ファイルを作成したいケースを考えました。

  • 複数言語の音声がある
  • 字幕もある
  • 動画のコーデックはHEVC(H265)がよい
  • ハードウェアエンコードではなくソフトウェアエンコードがよい(その方が圧倒的に画質が良いため)
  • 拡張子はMKVがよい(MP4よりも利便性が高い)
  • オーディオは5.1chであればそのままキープしたい(2chにダウンミックスしたくない)

今まではこれらのファイルを作成するのに、動画変換・音声変換・コンテナ化のような三つの手順を踏んでいました。

正直、これはとても時間がかかるのですがHandbrakeを使えばこれらがコマンド一発で終わってしまいます。

使い方

映像

昔は2passとかが流行っていた時期もあったのだけれど、最近は固定量子値というものを使うことで2pass以上に高画質に映像を高速に変換できるようになりました。

それを使用するためのオプションが-qとなります。

値が小さいほど画質は良くなりますが、ビットレートが高くなってファイルサイズが大きくなります。

個人的には23くらいを指定しておけば元ソースと殆ど変わらない映像が得られるのですが、ぼくは念には念を入れて21を指定しています。

21を指定すると映像の内容にもよりますが、アニメを変換すると大体200MB~300MBくらいの間でファイルサイズが収まります。

元データが4.5GBを超えるので、1/10くらいになっているわけです。

音声

まず、エンコードしたい音声が入っているオーディオトラックを選択します。

「最初の一つ」や、「全て」といった指定もできます。

詳しくはバッチファイルの項で説明しています。

フィルタ

nlmeansと呼ばれる強力なノイズ除去フィルターが使用できます。

nlmeansとはNon Local Means(非局所平均)の略で、画像がボケやすい欠点はありますが、ノイズ除去力は段違いです。

どちらかといえば実写ではなく、アニメ映像に使うとより効果が出ます。

その代わり、ものすごく重くなるので注意してください。

バッチファイル

これだけだとファイル一つに対して毎回コマンドを叩かなければいけないので非常にめんどくさいです。

そこで、全てのファイルに対して同じコマンドを叩けるバッチファイルを作成します。

引数意味
-fav_mkvmkv
av_mp4mp4
-ex264ソフトウェアエンコード
x265ソフトウェアエンコード
qsv_h264ハードウェアエンコード
-q21.0固定量子幅(21 – 23が無難)
–audio1,3–first-audio
–all-audio
を代用してもよい
-Eav_aacAAC
copy:aacエンコードしない
-mチャプターがつきます
-Oストリーミング用に最適化
–all-subtitles
–nlmeans–nlmeans-tune animation
@echo off
for %%f in (%*) do (
%~d0%~p0HandBrakeCLI.exe -i %%f -f av_mkv -m -e x265 -q 21.0 --all-audio -E av_aac -o %~d0%~p0%%~nf.mkv
)
pause >nul

上記のコードをコピペしてバッチファイルとして保存してください。

バッチファイル

あとはこのバッチファイルに向かって動画ファイルをドラッグアンドドロップすれば全て指定したオプションでエンコードしてくれます。

シェアする