名古屋出身ソフトウェアエンジニアのブログ

FLAC 音源ライブラリを Opus にミラーリングする CLI ツール Flacopyus を公開しました

公開:
更新:

ロスレスの FLAC 音楽ライブラリをポータブルな Opus 版に変換する CLI ツール Flacopyus を PyPI に公開しました。 rsync ライクな差分同期で、大量のファイルも効率的に変換できます。

curegit/flacopyus: Mirror your FLAC audio library to a portable lossy Opus version
Mirror your FLAC audio library to a portable lossy Opus version - curegit/flacopyus

モチベーション

ロスレス音楽ライブラリは、元の音質を保持できる一方で、ファイルサイズが非常に大きくなりがちです。スマートフォンに持ち出すには容量が厳しいので、自宅保存にはロスレス、外出用にはコンパクトな複製を使うという運用をしたくなります。

Flacopyus は、このようなユースケースに対して、FLAC ライブラリをまるごと Opus にバッチ変換してミラーリングするツールです。

変換先に Opus を選定した理由は、FLAC と Opus はどちらも Vorbis Comment を使用しているため、アルバムアートを含むほぼすべてのメタデータを透過的に保持できるという利点のためです。また、Opus コーデックの低ビットレートにおける品質的優位性は言わずもがなです。

インストール

Python 3.14 以降が必要です。 pip でインストールできます。

pip install flacopyus

エンコードには opusenc バイナリを使用します。 Windows 向けにはパッケージに同梱されていますが、macOS や Linux では別途インストールが必要です。

# macOS (Homebrew)
brew install opus-tools
# Debian/Ubuntu
apt install opus-tools

使い方

メインの操作は sync コマンドです。ソースディレクトリの FLAC ファイルをエンコードして、宛先ディレクトリに Opus ファイルとしてミラーリングします。

flacopyus sync FLAC/ OPUS/ --bitrate 128

ライブラリに MP3 や M4A などのすでに不可逆圧縮されたファイルが混在している場合は、--copy オプションでそれらもコピーできます。

flacopyus sync FLAC/ OPUS/ --bitrate 128 --copy mp3 m4a

差分同期

Flacopyus は、ソースファイルの更新日時を変換後の Opus ファイルにコピーします。これにより、2 回目以降の実行では変更のあったファイルだけを再エンコードする差分同期が実現されます。冪等な操作なので、繰り返し実行しても安全です。

ソースから削除されたファイルを宛先側でも削除するには、--delete--delete-excluded オプションを使います。

flacopyus sync FLAC/ OPUS/ --bitrate 128 --delete-excluded --copy mp3 m4a

並列エンコード

大きなライブラリの場合は -P オプションで並列エンコードを有効にすると、(十分な CPU コアがあれば)処理を大幅に高速化できます。

flacopyus sync FLAC/ OPUS/ -P --bitrate 128 --delete-excluded --copy mp3 m4a

スレッド数を指定しない場合は、CPU コア数 − 1 が自動的に使われます。

所感

もともと自分自身の音楽ライブラリ管理のために作ったツールですが、同じような運用をしている人の助けになればと思い公開しました。 FLAC → Opus の変換は、メタデータの互換性が高くて相性が良いので、ぜひお試しください。