なぜ flac2all を使うのか
そのコアで、flac2all はラッパーとスケジューリングプログラムの両方です。それは、FLACファイルのリストを受け取り、トランスコード処理をキューに入れ、管理するために、様々なコーデックを使用します。
このアプローチの一つの利点は、flac2allが単一のエンコーダーに依存しないことです。つまり、あなたが使いたいと思うかもしれない新しいフォーマットに、簡単にプログラムを適応させることができるということです。たとえば、通常のAACと一緒に、カスタムのFraunhofer FDK AACエンコーダをインストールすることができます。 最後に、flac2allはあなたのFLACコレクションのフォルダ構造を保持するので、このプログラムを使用している間、アーカイブのディレクトリをやり直す必要はないのです。これらの機能により、flac2all は、あなたの FLAC コレクションを異なるフォーマットで素早く簡単に再作成する方法を探している場合、便利なユーティリティとなります。flac2all のインストール
flac2all をインストールする前に、インストール後に衝突が起きないように、依存関係を全て取得することが重要です。
sudo apt install python3 flac python3-pip python3-zmq python3-notcurses lame opus-tools
次に、Python 固有のパッケージマネージャである pip を使って flac2all をダウンロードし、追加のソフトウエアをインストールします。pipを使用するには、以下のコマンドを実行します。
pip3 install --user flac2all
これは、現在のユーザーの".local “ディレクトリにflac2allをインストールします。そのため、マルチユーザーシステムを使用している場合、他のユーザーはプログラムを実行することができません。
flac2allを実行するには、".bash_profile “ファイルに次の行を追加することによって、あなたのマシンのPATH変数に”.local “ディレクトリを追加します。PATH=$PATH:/home/$USER/.local/bin/を追加します。
エクスポート PATH
最後に、再起動するか、現在のセッションからログアウトして、新しい設定を適用します。その後、flac2all -h
を実行して、プログラムが正しくインストールされていることを確認できます。
flac2all を使ってオーディオをトランスコードする
flac2allの開発者はプログラムをできるだけシンプルにするように設計しました。例えば、FLAC ディレクトリを1つのフォーマットにトランスコードするための構文は、以下のようになります。
flac2all mp3 -o ./output ./royalty-free
- flac2all” の後の最初の要素は、トランスコードしたい形式をハイライトしています。この例では、FLAC フォルダを MP3 に変換しています。
- 2番目の要素には、現在のトランスコードジョブのオプションが含まれています。ここでは、
-o
オプションは flac2all に、すべての MP3 ファイルを “output” フォルダに送るように指示します。 - 最後に、3番目の要素は、FLACファイルのソースフォルダを示します。私の場合は、“royalty-free” フォルダです。
複数のフォーマットへのトランスコード
flac2all を使って、ファイルを複数のフォーマットに並行してトランスコードすることもできます。これは、アーカイブを異なるフォーマットを要求するプレーヤーに転送したい場合に便利です。
例えば、私の “royalty-free” フォルダを MP3 と Opus の両方にトランスコードするために、次のコマンドを実行することができます。flac2all mp3,opus -o ./output ./royalty-free
複数フォーマットのトランスコードは、単一フォーマットのトランスコードよりも時間がかかることに注意してください。なぜなら、flac2all はディレクトリ内の各ファイルを、あなたが指定したすべてのフォーマットでエンコードするからです。私の場合、MP3とAACをトランスコードすると、MP3だけをトランスコードするよりも2倍の時間がかかります。
カスタムのトランスコードジョブを作成する
単純なトランスコードを作成することとは別に、flac2allでエンコーダの動作を微調整することが可能です。これは、アーカイブのコピーを特定のオーディオ品質にしたい場合に特に便利です。例えば、次のコマンドを見てください。
flac2all mp3 --lame-options='b 320' -o ./output ./royalty-free
このコマンドは、LAME MP3エンコーダを使って、私の「royalty-free」フォルダを一定のビットレート320kでトランスコードするようプログラムに指示します。
また、マルチフォーマットトランスコードのカスタムジョブを作成することもできます。例えば、次のコマンドはflac2allにMP3とOpusのカスタムトランスコードを作成するよう指示します。flac2all mp3,opus --opus-options='downmix-mono' --lame-options='b 320' -o ./output ./royalty-free
flac2all トランスコード クラスタの作成
flac2all を1台のコンピュータで使うこともできますが、複数のシステムにプログラムを広げることも可能です - トランスコード処理をスピードアップするための実用的なソリューションです。次のリソースが準備されていることを確認してください。
- 互いに直接接続できる 2 台以上のマシン。
- マスターflac2allプロセスは、ワーカークライアントに既存のデータを処理するように指示するだけなので、すべてのマシンからアクセスできるNAS。
- マスタープロセスとそのワーカークライアント間の信頼できるネットワーク接続
これらの要因を知った上で、このチュートリアルでは、2台のUbuntu 22.04マシン間で小さなflac2allクラスターを作成することに焦点を当てます。
ネットワークマウントのセットアップ
開始するために、ネットワークストレージのマウントを作成します。これには、使いやすく、ほとんどのLinuxディストリビューションで利用可能なSSHFSを使用するつもりです。
まず、使用するすべてのマシンに SSHFS をインストールします。sudo apt install ssh sshfs
次に、SSHFSのマウント先となるフォルダを作成します。ワーカーマシンのホームディレクトリに「royalty-free」フォルダを作成します。
mkdir /home/$USER/royalty-free
次に、「royalty-free」ディレクトリを以下のコマンドで各ワーカーマシンにマウントしてください。
sshfs -o allow_other,default_permissions $USER@192.168.68.10:/home/$USER/royalty-free /home/$USER/royalty-free
flac2all クラスタの開始
これで、マスタープロセスを実行して、flac2allに -m
と -C
フラグの両方を追加することで、トランスコードクラスターを開始することができます。
flac2all lame,aac -m -C --lame-options='b 320' -o /home/$USER/output /home/$USER/royalty-free
通常のflac2allとは異なり、マスタープロセスを作成してもトランスコードセッションは開始されません。ファイルをトランスコードするためには、ワーカーマシン上で以下のコマンドを実行して、ワーカーをマスタープロセスに接続する必要もあります。
flac2all_worker 192.168.68.10
一旦行われると、ワーカークライアントはマスタープログラムに接続するヘッドレスプロセスを作成します。その後、待機している一握りのワーカーを見つけると、flac2allはすぐに開始します。
よくある質問
flac2all が音声ファイルを処理した後、終了しません。どうすればこの問題を解決できますか?
これは flac2all と Python の依存関係に衝突があるときに起こります。flac2allとその依存関係の変更を反映させるために、インストールを更新することによって、それを解決してください。pip install –user –upgrade flac2all` を実行し、flac2all をアップグレードしてください。
flac2all が “FileNotFound” エラーを投げています。私のインストールは壊れているのでしょうか?
いいえ!この問題は、プログラムがトランスコードしたいフォーマットのエンコーダを検出できないときに発生します。
例えば、Opusエンコーダなしでflac2all opus [...]
を実行すると、“FileNotFound” エラーが発生します。この問題は、ffmpeg をインストールすることで解決できます。これは、一般的なオーディオエンコーダのほとんどをインストールすることができる、総合的なプログラムです。sudo apt install ffmpeg` を実行して、ffmpeg をシステムに追加してください。
ワーカープロセスが SSHFS マウントにあるメディアを見つけられませんでした。flac2all が壊れているのでしょうか?
いいえ。これは通常、マスタープロセスとそのワーカーの間のディレクトリの不一致によって起こります。トランスコードクラスターが動作することを確認するには、メディアフォルダーとSSHFSマウントのルートの両方で pwd
を実行して、各マシン間のファイルパスが同じであることを確認します。