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のビルドを行います。 ビルドには、Ubuntu 20.04 LTS 以降の使用が勧められています。
Windows向け最新安定版のビルド手順 for V.1.5.x(HandBrake)
Windows向け最新安定版のビルド手順 for V.1.4.x(HandBrake)
Windows向け最新テスト版(Nightly build)のビルド手順(HandBrake)
ビルドに必要なソフトをダウンロード
Ubuntuにログインし、コンソールから
sudo apt-get update
と入力します。
するとパスワードを聞かれるので、Ubuntuをインストールするときに設定したパスワードを入力します。
通常、数秒~数十秒で処理は完了します。
コンソールから
sudo apt-get install automake autoconf autopoint build-essential cmake gcc git intltool libtool libtool-bin m4 make meson nasm ninja-build patch pkg-config python tar zlib1g-dev
と入力します。
すると
After this operation, 242 MB of additional disk space will be used.
Do you want to continue? [Y/n]
と聞かれるので、“Y”を入力します。
数十秒で処理は完了します。
なお、時間がかかった場合は、画面の実行ログを確認してください。「E:」や「Err:」で始まるエラーメッセージが表示されていたら失敗しています。 ダウンロード先の「http://jp.archive.ubuntu.com/」へのアクセスでエラーが出る場合は、しばらく時間をおいて再度実行してみてください。
MinGW-w64に必要なツールをダウンロードする
Windows用のgccコンパイラ:MinGW-w64のビルドに必要な関連ツールをダウンロードします。 コンソールから次のコマンドを入力します。sudo apt-get install bison bzip2 curl flex g++ gzip pax
すると
After this operation, 3,738 kB of additional disk space will be used.
Do you want to continue? [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.5.*シリーズの一覧のみを見る場合は、
git tag --list | grep ^1\.5\.
と入力します。つづいて
git checkout refs/tags/$(git tag -l | grep -E '^1\.5\.[0-9]+$' | tail -n 1)
と入力すると、最新安定版のビルドが指定(チェックアウト)されます。
Note: switching to 'refs/tags/1.5.1'.
...
のように、設定されたバージョンが画面に表示されます。
(ここの例ではHandBrake Ver 1.5.*シリーズを選択しています。Ver 1.4.*シリーズを見たい場合は
^1\.5\.
を^1\.4\.
に置換します。)
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時間半程度かかる場合もあります。
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を再ビルドするには
の説明に従ってファイルを削除した後、再度スクリプトを動かします。
エラー発生時のチェックポイント:
gitなど、ビルドに必要な各種ツールの取得先サーバーが、たまたまビルド実行時にダウンしていることがあります。 または、HandBrakeのリリースから時間がたつと、ビルドに必要な各種ツールの取得先URLが変わってしまうことがあります。 このような場合には、
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 /home/[ユーザー名]
(ユーザーのホームディレクトリに移動) -
vi .bashrc
(viエディタで".bashrc"の編集を開始) -
G
(カーソルを文末に移動) -
o
(編集モードへ切り替え:現在カーソルがある行の下に1行挿入) -
export PATH="/home/[ユーザー名]/toolchains/mingw-w64-x86_64/bin:${PATH}"
を入力。[ユーザー名]の部分には、Ubuntuのインストール時に設定した、あなたのユーザー名を入れてください。 - [ESC]キー押下(編集モード終了)
-
:wq
(保存してviエディタを終了)
cat .bashrc
で内容を表示させて、正しく編集されているか確認しておきましょう。
また、コンソールを再起動し、
echo $PATH
で、正しくPATHが付加されているか確認しましょう。
思い通りの文字が入力できない!?
陥りがちな問題が、日本語JISキーボードが接続されているパソコンで、Ubuntuを英語のままでインストールした場合の、キーアサインの違いです。 今後もUbuntuを使い続けるなら、Ubuntuを日本語化してキーボードの設定も変更するのが良いですが、 HandBrakeのビルドのためだけに使うのであれば、キー入力時にちょっと注意すれば済みます。 上記のパス入力を行うのに必要な、キーアサインが違っているキーの一覧を下記に示します。
Ubuntuに入力したい文字 | 実際に日本語JISキーボードから入力するキーストローク |
---|---|
= | ^ (アクサンシルコンフレックス) |
_ (アンダーバー) | = ([SHIFT]+[-]) |
{ | ` ([SHIFT]+[@]) |
} | { ([SHIFT]+[[]) |
" | * ([SHIFT]+[:]) |
: | + ([SHIFT]+[;]) |
HandBrakeをビルドする
ようやくHandBrakeのビルドです。 パスを通したら、それを有効にするためコンソールを再起動(いったん閉じて再度開く)しましょう。 そしてcd HandBrake
で、HandBrakeフォルダに移動します。
下記のコマンドを入力するとHandBrakeのビルドが始まります。 faac(FDK-AAC)対応のHandBrakeをビルドするには、コマンドラインに"--enable-fdk-aac"を付けることを忘れないでください。
./configure --cross=x86_64-w64-mingw32 --enable-fdk-aac --launch-jobs=$(nproc) --launch
HandBrakeのビルドには非常に時間がかかります。 環境にもよりますが、約30分~90分程度かかる場合もあります。
-------------------------------------------------------------------------------
time end: Sat Mar 12 18:14:04 2022
duration: 1 hour, 17 minute, 20 seconds (4640.06s)
result: SUCCESS
-------------------------------------------------------------------------------
Build is finished!
You may now cd into ./build and examine the output.
といったメッセージが表示されたらビルド完了です。
もし「result:」が「SUCCESS」でないときはエラーが発生しています。その上の方に
collect2: fatal error: ld terminated with signal 9 [Killed]
というメッセージがある場合はメモリ不足です。一旦Ubuntuを終了して、VirtualBox マネージャーの (設定)メニューから [システム]-[マザーボード]画面を開き、[メインメモリー]欄のスライドバーを右に動かして、メモリー容量を増やしてみてください。 このほかエラーメッセージから原因が読み取れないようなエラーが発生したときは、エラーメッセージそのものをググると、ヒントが得られることがあります。
ビルド結果は、"Desktop/HandBrake/build/HandBrakeCLI.exe"と"Desktop/HandBrake/build/libhb/hb.dll"に格納されています。 Ubuntuデスクトップ左のアイコンから (ファイル) を開いてこれらを選択し、右クリックメニューで「コピー」したうえで共有フォルダに貼り付けます。
新バージョンで再ビルドする場合
もし過去にHandBrakeをビルド済みの場合は、HandBrakeフォルダで
rm -rf build
コマンドを実行して
事前に過去の環境を削除しておきます。
詳しくはHandBrakeを再ビルドするにはをご参照ください。
つづいてWindowsのエクスプローラーから、Ubuntuの共有フォルダを開くと、これらのファイルが見えています。 このうち"hb.dll"のみを、最新安定版HandBrakeのインストールフォルダ
「C:\Program Files\HandBrake」
に上書きすればOKです。 上書きには管理者権限が必要です。 また、ネットワークドライブからのコピーではエラーになることがあります。 そんな時は、一度ローカルのフォルダにコピーした後で、上記フォルダにコピーします。
このように、HandBrakeのオーディオエンコーダーに"AAC(FDK)"が選べるようになります。
注意: ライセンスの関係上、ビルドした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 --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/