C93 で CD を色々買ってきたので PC に取り込もうとしたんだけど、新しい PC に qaac の実行環境を作ってなかったので Docker で作れるようにしてみました。
qaac って何?
(ざっくり言うと)iTunes なしでコマンドラインから Apple の AAC/ALAC エンコーダーを使えるようにするもの。
Docker コンテナイメージを作成する
Docker コンテナを作る前に qaac のセットアップが必要です。(コンテナ内で qaac のセットアップをしようと思ったのですが、セットアップ用のパッケージを入れるとイメージサイズが大きくなるのでホスト側で作成することにしました)
$ git clone https://github.com/mattintosh4/docker-qaac64 $ cd docker-qaac64 $ ./qaac_builder.sh
イメージを作成します。qaac は Wine 経由で実行するようになっているため、Wine のセットアップに多少時間がかかります。Wine は Ubuntu のリポジトリではなく WineHQ のリポジトリを使うようになっています。(後日、時間が出来たら依存関係の数を減らす予定)
$ docker build -t qaac64 .
qaac は GitHub の API から常に最新版の情報を取得するので最新版が落ちてきます。
iTunes のバージョンは 12.7.2 ですが、Apple の配信が終了すると使えなくなる可能性があります。その場合、iTunes64Setup.exe をブラウザでダウンロードし、qaac_builder.sh
と同じディレクトリに置いて iTunes64Setup.exe.sha1
を更新してもらえらば好きなバージョンが使えます。
$ sha1sum iTunes64Setup.exe > iTunes64Setup.exe.sha1
qaac64.exe を使う
docker images
でイメージが作成されていることを確認します。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE qaac64 latest c6e8b5ada977 6 hours ago 985 MB ubuntu xenial 00fd29ccc6f1 2 weeks ago 111 MB
コンテナ内で qaac を使ってエンコードをするわけですが、肝心のオーディオファイルはホスト側にあるので Docker のボリューム機能を使ってコンテナ内にホストのディレクトリをマウントさせる必要があります。
基本的な書式は下記の通りです。作業用ディレクトリ等を作成せずに使う場合はパスにスペースが混入する可能性があるので $PWD
部分を "$PWD"
としておいた方が安全かもしれません。--rm
を忘れるとエンコードの度にコンテナが増えていくので気をつけましょう。
(WINEPREFIX をイメージを作成する際に実行していたのですが、何故かそのあと qaac64.exe を実行するとアクセス出来ないというエラーになってしまうため毎回 WINEPREFIX の作成に数秒かかります)
docker run --rm -v $PWD:/mnt qaac64 wine qaac64.exe
以下、カレントディレクトリに BIN や CUE ファイルがある場合の例です。BIN は cdrdao で抽出した状態のもので、フォーマットは s16b
になります。
$ docker run --rm -v $PWD:/mnt qaac64 wine qaac64.exe --raw --raw-format s16b --raw-channels 2 --raw-rate 44100 cdda.bin
CUE シートを使う場合はオプションに --text-codepage 65001
(UTF-8の場合)を追加します。--fname-format
等でアーティスト、アルバム名の指定ができます。詳しくは qaac のヘルプを読んでください。
$ docker run --rm -v $PWD:/mnt qaac64 wine qaac64.exe --raw --raw-format s16b --raw-channels 2 --raw-rate 44100 --text-codepage 65001 cdda.cue
毎回 docker run と書くのが面倒な場合
~/.bashrc
などに関数を書いておくとよいです。
qaac64(){ docker run --rm -v "$PWD":/mnt qaac64 wine qaac64.exe "$@"; }