Handbrake の CLI 版をビルドしてみたり

スポンサーリンク

 Handbrake を適当な温存エンコ用に使用してきたが、音声部分を FDK_AAC で処理してきた。しかし、2/11 の Commit でライセンスの問題からデフォルトで FDK_AAC が有効にならなくなった。よって Nightly Build で配布されているバイナリでは “-E fdk_aac“ が使えなくなった。
 別に “-E copy” として音声はソースの物をそのまま使う事で対処可能だけど、FDK_AAC で再エンコすると若干サイズが縮む。再エンコだから当然、若干の劣化はするのだが劣化具合は実感出来ないレベルだからこの際は気にしない。

ビルド環境を整える

 ビルド方法は Handbrake オフィシャルに書かれているので、そのまま手順を踏んでいくだけ。
https://trac.handbrake.fr/wiki/CompileOnWindows

Ubuntu 15.10 on VMware Player

 環境は普段使っている Windows を汚したくないので、VMware 上に仮想マシンを仕立てて Ubuntu 15.10 をインストールする。VMware Tools もインストールしなければ H/W 関連のビルドが行えないので要注意。Kernel が更新される度に VMware Tools をインストールして initrd を更新させよう。

 作成した仮想マシン上にダウンロードした Ubuntu 15.10 の ISO をマウントしてブートすればインストーラーが起動する。指示通りポチポチしていればインストール可能。困ったらググる。
https://www.ubuntulinux.jp/

必要パッケージのインストール

 オフィシャルに記載されている物に mingw-w64 を追加する形で次の様にパッケージをインストールする。

$ sudo apt-get install git yasm libtool intltool cmake mingw-w64

ソースの取得とビルド

 端末から git コマンドを用いて Handbrake のリポジトリからソースを clone する。
 ビルドオプションは “./configure –help” で見られる。今回、デフォルトで有効になっていない “–enable-fdk-aac“ を記述している。このオプションがあればまた FDK_AAC が使えるようになる。尚、ビルドしたバイナリは FDK_AAC のライセンス上、配布するのは止めた方が良いだろう。

$ git clone https://github.com/HandBrake/HandBrake.git
$ cd HandBrake
$ ./configure --cross=x86_64-w64-mingw32 --enable-fdk-aac --enable-qsv --enable-hwd --enable-x265 --enable-libav-aac --disable-gtk --launch-jobs=0 --launch

 このビルド作業はかなり時間がかかった。FX-8350 のコア 6 つを割り当てた状態で仮想マシンを動かしていたが、30 分以上はかかったと思う。
 もし、ビルドでエラーを吐いたりしたら一旦 Ubuntu を再起動させたあと、HandBrake 以下の build ってディレクトリを削除してから、もう一度 configure からやり直してみるのも良いかも。この記事に書いたやり方でこれと言った問題は起こらずにビルドは出来たが。

完成

 ビルドが正常におわれば HandBrake 以下にあるディレクトリ build へ HandBrakeCLI.exe が存在するので、これを Windows 上に持っていって使用すれば良い。
 今回ビルドしたバージョンは次の様に表示された。

HandBrakeCLI.exe --version
[02:08:01] hb_init: starting libhb thread
[02:08:01] thread 45535e0 started ("libhb")
HandBrake 20160212152711-b7cb7d6-master

 ”HandBrakeCLI.exe –help” として音声コーデック部分を念のため確認する。

HandBrake.exe --help
(略
   -E, --aencoder <string> Audio encoder(s):
                               fdk_aac
                               fdk_haac
                               av_aac
                               copy:aac
                               ac3
                               copy:ac3
                               eac3
                               copy:eac3
                               copy:truehd
                               copy:dts
                               copy:dtshd
                               mp3
                               copy:mp3
                               vorbis
                               flac16
                               flac24
                               copy:flac
                               copy
(略

おわりに

 環境作りが面倒であるし、ビルドに時間がかかるから結構怠い物があった。しかし、一度ビルドしてしまえば後は更新される度に git pull してまたビルドするだけなので今後も FDK_AAC を用いる事が出来る。メリットを感じる人は頑張ってビルドしてしまえばいいし、音声部分は “-E copy“ でいいやって人はわざわざこんな事をする必要も無い。
 Ubuntu というか X-Window な環境で作業とか滅多にしないので、今回は Ubuntu の使いやすさに驚いた。デスクトップ用途としてシェアがあるのも頷けた。

記事修正

2016/02/18

 外部から MinGW の Toolchains を拾って来て /usr に直接展開するなて言う愚かなことをしていたのが原因でちょいちょい問題が出ていたから、手動で削除した後に apt-get install mingw-w64 としてパッケージでインストールすると何事も無くビルド出来るようになった。
 よって Toolchains のダウンロードと導入部分を記事から削除。必要パッケージインストールの項に mingw-w64 を追記した。

2016/03/15

 VMware 上の Ubuntu でビルドを行う場合、初回インストール時も含め Ubuntu の Kernel である linux-image-4.x.y-zz-generic が更新される度に VMware Tools をインストールしてカーネルにドライバを組み込まなければならない。
 Ubuntu のパッケージなどの更新は GUI で通知が出てポチポチクリックで簡単に行えるけど、慣れないうちだったので Kernel が知らぬ間に更新されたりしていたから必要なドライバが組み込まれず、HandbrakeCLI.exe のビルドで H/W アクセラレーションに関する部分が全てエラーを吐くようになっていた。具体的には QSV や H/W デコード部分がビルド出来なくなっていた。

2016/04/23

 configure の引数にある –launch-jobs=1 を –launch-jobs=0 に変更した。並列コンパイルをしても問題無くビルドできるしコンパイル速度もあがる為。

スポンサーリンク