faac(FDK-AAC)対応のHandBrakeをビルドする方法
ここではDVD/Blu-rayディスクをiPod/iPad/iPhone用ビデオに変換できるフリーソフト「HandBrake」に対して 高音質のAACオーディオエンコーダーを組み込むことを目的に、 Windows10にインストールしたVirtualBox、Ubuntu上で、HandBrakeをビルドする方法をご紹介します。なお、VirtualBox、Ubuntuの使い方含めた、HandBrakeを作る方法の全般については、 faac(FDK-AAC)対応のHandBrakeを作るのページで解説していますので併せてご参照下さい。
もくじ
ビルド手順について
HandBrakeのビルド手順については、オフィシャルサイトで解説されています。 最新安定版の手順 と、 最新テスト版(Nightly build)の手順 の2つがあります。 本ページでは、最新安定版の手順に従って、64bit版Windows向けHandBrakeのビルドを行います。 Windows向け最新安定版のビルド手順(HandBrake) Windows向け最新テスト版のビルド手順(HandBrake)ビルドに必要なソフトをダウンロード
Ubuntuにログインし、コンソールから
sudo apt-get update
と入力します。
するとパスワードを聞かれるので、Ubuntuをインストールするときに設定したパスワードを入力します。
通常、数秒~数十秒で処理は完了します。
コンソールから
sudo apt-get install automake autoconf build-essential cmake curl gcc git intltool libtool libtool-bin m4 make patch pkg-config python tar yasm zlib1g-dev
と入力します。
するとまたパスワードを聞かれるので、Ubuntuをインストールするときに設定したパスワードを入力します。
こちらも数十秒で処理は完了します。
NASMを入手する
x86アセンブラ:NASMを入手します。Ubuntu 18.04を使用している場合は、NASMをダウンロードします。 コンソールから
sudo apt-get install nasm
と入力します。
Ubuntu 16.04 LTSを使用している場合は、NASMが古いので、再ビルドを行います。 コンソールから次のコマンドを順に入力します。
curl -O https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.bz2
tar -xf nasm-2.13.03.tar.bz2
cd nasm-2.13.03
./configure --prefix=/usr/local --enable-sections --enable-lto
make -j$(nproc)
sudo make install
source ~/.bashrc
cd ..
いずれも数秒~数十秒で処理は完了します。
なお、NASMのバージョンが上がったり、取得先URLが変わっている場合があります。 curlコマンドのあとのtarコマンドでエラーが出たときは、正しくダウンロードできていません。 NASMのオフィシャルサイトでバージョンや取得先URLを確認し、 curlコマンドに与えるURLとtarコマンドに与えるファイル名を見直してください。 NASMオフィシャルサイト
MinGW-w64に必要なツールをダウンロードする
Windows用のgccコンパイラ:MinGW-w64のビルドに必要な関連ツールをダウンロードします。 コンソールから次のコマンドを入力します。sudo apt-get install bison bzip2 flex g++ gzip pax
するとパスワードを聞かれるので、Ubuntuをインストールするときに設定したパスワードを入力します。
つづいて
この操作後に追加で 2,862 kB のディスク容量が消費されます。
続行しますか? [Y/n]
といったメッセージが表示されるので"y"を入力します。
数秒~数十秒で処理は完了します。
MinGW-w64オフィシャルサイト
HandBrakeのソースコードをダウンロードする
コンソールから次のコマンドを入力します。git clone https://github.com/HandBrake/HandBrake.git && cd HandBrake
するとHandBrakeのソースコード(リポジトリ)全体のダウンロードが始まります。
ダウンロードサイズは約75MBです。
環境にもよりますが、数分~十数分で処理は完了します。
新バージョンで再ビルドする場合
もし過去にHandBrakeのソースコードをダウンロード済みの場合は、HandBrake ディレクトリに cd したうえで、
git pull
コマンドで最新にアップデートします。
詳しくはHandBrakeを再ビルドするにはをご参照ください。
ビルドするHandBrakeのバージョンを指定する
HandBrake
ディレクトリに移動していることを確認の上、コンソールから次のコマンドを入力します。
git tag --list
すると、ダウンロードしたソースコード(リポジトリ)に含まれるバージョン(タグ)の一覧が確認できます。
さらに例えばバージョン1.2.*シリーズの一覧のみを見る場合は、
git tag --list | grep ^1\.2\.
と入力します。つづいて
git checkout refs/tags/$(git tag -l | grep -E '^1\.2\.[0-9]+$' | tail -n 1)
と入力すると、最新安定版のビルドが指定(チェックアウト)されます。
(ここの例ではHandBrake Ver 1.2.*シリーズを選択しています。Ver 1.1.*シリーズを見たい場合は
^1\.2\.
を^1\.1\.
に置換します。)
MinGW-w64 toolchainをビルドする
HandBrakeのソースコード(リポジトリ)で提供されるスクリプトを使って、 HandBrakeのビルドに必要なWindows用gccコンパイラ:MinGW-w64とその関連ツール群をダウンロードし、ビルドを実施します。事前準備
使用するMinGW-w64と関連ツール群のバージョンは、ビルドしたいHandBrakeのバージョンに依存します。 必ず事前に、上の
git checkout
コマンドを実行して、HandBrakeのバージョンを指定しておいてください。
新バージョンで再ビルドする場合
もし過去にMinGW-w64 toolchainをビルド済みの場合は、
scripts/mingw-w64-build x86_64.distclean /home/[ユーザー名]/toolchains/
コマンドなどを使用して、事前に過去の環境を削除しておきます。
詳しくはMinGW-w64 toolchainを再ビルドするにはをご参照ください。
ダウンロードとビルド
HandBrake
ディレクトリに移動していることを確認の上、コンソールから次のコマンドを入力します。
scripts/mingw-w64-build x86_64 /home/[ユーザー名]/toolchains/
[ユーザー名]の部分には、Ubuntuのインストール時に設定した、あなたのユーザー名を入れてください。
するとビルドしようとするHandBrakeのバージョンに適合した、関連ファイルのダウンロードとビルドが始まります。
これには非常に時間がかかります。
環境にもよりますが、約40分~2時間半程度かかる場合もあります。
bin: /home/apollomaniacs/toolchains//mingw-w64-x86_64/bin
run the following command and add it to your shell startup script
(e.g., .bashrc or .bash_profile) to make persistent across sessions:
export PATH="/home/apollomaniacs/toolchains//mingw-w64-x86_64/bin:${PATH}"
complete.
といったメッセージが表示されれば終了です。
これ以外のメッセージが出ている場合は失敗しています。
MinGW-w64 toolchainを再ビルドするには
の説明に従ってファイルを削除した後、再度スクリプトを動かします。
注意:
HandBrakeのリリースから時間がたつと、ビルドに必要な各種ツールの取得先が変わってしまって、
scripts/mingw-w64-build
で"unable dowload ..."といったエラーが表示され、必要なツールのダウンロードに失敗することがあります。
この場合は、最新のURLからダウンロードするよう
scripts/mingw-w64-build
を編集する必要があります。
参考:
Ubuntu仮想マシンに割り当てた仮想ハードディスクの容量が少ないとエラー終了します。 仮想ハードディスクは少なくとも15GB以上を割り当ててください。 VirtualBoxにLinux(Ubuntu)用の仮想マシンを作る方法
PATHの設定
ビルドした toolchains/mingw-w64-x86_64/bin にパスを通しておきます。 .bashrc(または.bash_profile / .profile)の最終行に
export PATH="/home/[ユーザー名]/toolchains/mingw-w64-x86_64/bin:${PATH}"
を追加します。
ユーザーのホームディレクトリに移動し、 ("cd .."でHandBrakeフォルダから戻るか、別のコンソールを起動する) 次のコマンドを順に入力します。
-
vi .bashrc
(viエディタで".bashrc"の編集を開始) -
G
(カーソルを文末に移動) -
o
(編集モードへ切り替え:現在カーソルがある行の下に1行挿入) -
export PATH="/home/[ユーザー名]/toolchains/mingw-w64-x86_64/bin:${PATH}"
を入力。[ユーザー名]の部分には、Ubuntuのインストール時に設定した、あなたのユーザー名を入れてください。 - [ESC]キー押下(編集モード終了)
-
:wq
(保存してviエディタを終了)
cat .bashrc
で内容を表示させて、正しく編集されているか確認しておきましょう。
HandBrakeをビルドする
ようやくHandBrakeのビルドです。 faac(FDK-AAC)対応のHandBrakeをビルドするには、コマンドラインに"--enable-fdk-aac"を付けることを忘れないでください。./configure --cross=x86_64-w64-mingw32 --enable-fdk-aac --enable-qsv --launch-jobs=$(nproc) --launch
新バージョンで再ビルドする場合
もし過去にHandBrakeをビルド済みの場合は、HandBrakeフォルダで
rm -rf build
コマンドを実行して
事前に過去の環境を削除しておきます。
詳しくはHandBrakeを再ビルドするにはをご参照ください。
HandBrakeのビルドには非常に時間がかかります。 環境にもよりますが、約30分~50分程度かかる場合もあります。
-------------------------------------------------------------------------------
time end: Tue Apr 17 18:08:41 2018
duration: 27 minutes, 42 seconds (1662.66s)
result: SUCCESS
-------------------------------------------------------------------------------
Build is finished!
You may now cd into ./build and examine the output.
といったメッセージが表示されたらビルド完了です。



「C:\Program Files\HandBrake」
に上書きすればOKです。上書きには管理者権限が必要です。

注意: ライセンスの関係上、ビルドしたFDK-AAC対応のHandBrakeバイナリファイルを他人に提供したり公開してはいけません。 あくまでもビルドした本人の個人利用のみとしてください。
HandBrakeでエラーが出たら・・・



この例の「"hb.dll"の"hb_opencl_set_enable"というエントリポイントが見つかりません」エラーの原因は、 git checkout でHandBrakeのバージョンを指定する前に MinGW-w64 toolchain をビルドしてしまったことによるバージョン不整合でした。
HandBrakeを再ビルドするには
HandBrakeだけを再ビルドするには、"HandBrake/build"フォルダを、フォルダごと消去します。cd HandBrake
rm -rf build
つづいて再度HandBrakeのビルドを流します。
./configure --cross=x86_64-w64-mingw32 --enable-fdk-aac --enable-x265 --enable-qsv --launch-jobs=$(nproc) --launch
また、HandBrakeのソースコード(リポリトジ)のダウンロードからやり直す場合は、 ホームフォルダに戻って、"HandBrake"フォルダごと消去します。
cd ..
rm -rf HandBrake
なお、ダウンロード済みのHandBrakeのソースコード(リポリトジ)を最新に更新するには、次のコマンドを入力します。
cd HandBrake
git pull
MinGW-w64 toolchainを再ビルドするには
MinGW-w64 toolchainのビルドに失敗したときは、まず、以下3種の中の、いずれかのスクリプトを使って関連ファイルを削除します。(1) ビルドからやり直す場合
ダウンロード済かつ展開済みのパッケージの、ビルドのみをやり直す場合は、次のように入力します。
scripts/mingw-w64-build x86_64.distclean /home/[ユーザー名]/toolchains/
"toolchains/mingw-w64-x86_64"を削除します。
(2) パッケージの展開からやり直す場合
ダウンロード済みのパッケージの、展開からやり直す場合は、次のように入力します。
scripts/mingw-w64-build x86_64.clean /home/[ユーザー名]/toolchains/
"toolchains/source"と"toolchains/build-mingw-w64-x86_64"を削除します。
(3) パッケージのダウンロードからやり直す場合
パッケージをすべて消去して、新たなバージョンのダウンロードからやり直す場合は、次のように入力します。
scripts/mingw-w64-build pkgclean /home/[ユーザー名]/toolchains/
"toolchains/pkg"(ダウンロードしたパッケージ)を削除します。
MinGW-w64の再ビルド
ファイル、フォルダを削除したら、つづいて再度ビルドスクリプトを実行します。 なお、ビルド前にHandBrakeのバージョン指定:"git checkout"を終えてください。
scripts/mingw-w64-build x86_64 /home/[ユーザー名]/toolchains/