Balrogg: 損失なしでVorbis/Opusファイルを最大15%圧縮するツール
Balrogg: Demonically compacting (up to 15%) lossless Vorbis/Opus recompressor (github.com)
要約
Balroggは、Ogg VorbisおよびOpusオーディオファイルを損失なしで再圧縮するコマンドラインツールです。これにより、元のファイルサイズから最大15%の圧縮率を実現します。インストールはパッケージマネージャーまたはGitHubリリースから可能で、C99で記述されており、libopusのパーサーを流用しています。特定のファイル形式や機能には制限がありますが、ポータブルなビルドも提供されています。
全文翻訳
balrogg
balroggはOgg VorbisおよびOpusファイルをロスレスで再圧縮します。アーカイブは通常、.oggファイルより8-12%小さく、.opusファイルより3-8%小さくなります。
v2.0に達するまで、リリースは後方互換性も前方互換性もありません。
balroggはGNU GPLバージョン3の下でライセンスされています。詳細はCOPYINGを参照してください。問題の報告はKamila Szewczyk k@iczelia.netまで。プロジェクトはhttps://github.com/iczelia/balroggでホストされています。
ディスカッション:
- HN - Balrogg: Demonically compacting (up to 15%) lossless Vorbis/Opus recompressor
- FileForums - balrogg: lossless Vorbis/Opus recompressor
クイックスタート
balrogg e music.ogg music.blr
balrogg d music.blr music.ogg
balrogg -b e *.ogg *.opus
balrogg --progress -9 e music.ogg music.blr
eは圧縮、dは展開です。balroggはコーデックを検出します。-bを使用すると、残りのパスは利用可能なコアとメモリを使用して処理されます。エンコードは.blrを付加し、デコードは削除します。入力が大きいファイルから先に処理されます。
-pまたは--progressは、エンコードおよびデコードのために標準エラー出力にプログレスバーを表示し、各Vorbisチューニング試行を個別に識別します。ログには--progress-linesを使用してください。バッチプログレスは、入力ファイル名でラベル付けされた個別の行を使用します。
インストール
パッケージマネージャーを使用するか、GitHub Releasesからバイナリをダウンロードしてください。リリースtarballをビルドするには、以下を実行します。
./configure
make
sudo make install
プロジェクトはC99とCおよびmathライブラリのみを使用します。src/opus下のOpusパーサーはlibopusから派生しています。
| Configureオプション | 効果 |
|---|---|
--enable-sanitizers | テストのためにASanとUBSanを有効にする |
--disable-simd | ポータブルミキサーのみをビルドする |
--with-windows-target=win95 | i486上でWindows 95をターゲットにする(MinGW、32ビット) |
Gitチェックアウトからビルドする場合は、まず./bootstrapを実行してください。これにはautoconfとautomakeが必要です。
労力
-1から-9で労力を選択します。デフォルトは-9です。-4までは、各レベルでレジデュアルモデルステージが追加され、デコードに影響します。より高いレベルはパラメータ検索を拡張するだけなので、-4から-9は同じ速度でデコードされます。Vorbisチューニングは、選択された各設定でファイル全体を評価します。最良の候補が宛先ファイルに保持され、試行中は最良の候補と現在の候補が最大で存在します。
注意点
エンコーダーは、不正なチェックサム、無効なページシーケンス、またはサポートされていないVorbis機能を含む、正確に再現できないファイルを拒否します。連鎖されたVorbisファイルは、リンク間でアダプティブモデルを共有します。ストリームカットなど、次のリンクが始まる前に終了したリンクは、完全なパケットで終了する場合にサポートされます。
追加のパディングまたは代替フロアサブクラス選択を持つVorbisパケットは、通常のフロアおよびレジデュアル圧縮を保持します。クラスワード補正およびパディングは個別にモデル化されます。短縮されたパケット(パケットピーリング)は、アダプティブバイトモデルを使用します。
Opusサポートは、チャンネルマッピングファミリー0のモノラルまたはステレオ論理ストリームに限定されます。オーディオパケットおよびOpusHeadは61,440バイトに制限されており、拡張フレームヘッダーとパディングはその制限内でサポートされます。OpusTagsパケットは最大120 MiBまで可能で、バウンドされたバッチで処理されます。マルチチャンネルOpusファイルは拒否されます。拒否は診断と終了ステータス1を生成します。
終了ステータス
| コード | 意味 |
|---|---|
| 0 | 成功 |
| 1 | 不正な形式、サポートされていない、または認識されない入力 |
| 2 | 使用法エラー |
| 3 | ファイルアクセスエラー |
| 4 | 内部エラー |
バッチモードは、いずれかのファイルによって報告された最も高い非ゼロステータスを返します。
パフォーマンスとポータビリティ
parallel (79.3 MB, 1047 files) newmusic_piano3.ogg (2.5 MB)
tool | e/time | ratio (size) | mem | e/time | ratio (size) | mem
1.3 -1 | 1.61 s | 90.4% (75,256kB) | 15M | 0.38 s | 83.3% (2,221kB) | 6M
-2 | 1.78 s | 89.2% (74,259kB) | 16M | 0.69 s | 79.4% (2,118kB) | 7M
-3 | 1.91 s | 88.9% (74,035kB) | 17M | 0.77 s | 79.2% (2,113kB) | 8M
-4 | 1.99 s | 88.6% (73,743kB) | 17M | 0.82 s | 78.9% (2,106kB) | 8M
-5 | 4.19 s | 88.3% (73,506kB) | 17M | 2.67 s | 78.6% (2,095kB) | 9M
-6 | 6.17 s | 88.2% (73,421kB) | 17M | 4.27 s | 78.3% (2,089kB) | 10M
-7 | 8.12 s | 88.2% (73,417kB) | 17M | 5.84 s | 78.3% (2,089kB) | 11M
-8 | 10.06 s | 88.2% (73,411kB) | 17M | 7.50 s | 78.3% (2,089kB) | 11M
-9 | 14.15 s | 88.2% (73,393kB) | 17M | 10.60 s | 78.3% (2,088kB) | 11M
1.2 -1 | 1.63 s | 90.4% (75,274kB) | 15M | 0.42 s | 83.3% (2,221kB) | 7M
-2 | 1.85 s | 89.2% (74,276kB) | 15M | 0.77 s | 79.4% (2,118kB) | 7M
-3 | 1.97 s | 89.0% (74,052kB) | 17M | 0.82 s | 79.2% (2,113kB) | 8M
-4 | 2.06 s | 88.6% (73,761kB) | 17M | 0.90 s | 78.9% (2,106kB) | 8M
-5 | 4.24 s | 88.3% (73,524kB) | 17M | 2.78 s | 78.6% (2,095kB) | 9M
-6 | 6.31 s | 88.2% (73,438kB) | 17M | 4.55 s | 78.3% (2,089kB) | 10M
-7 | 8.39 s | 88.2% (73,435kB) | 17M | 6.25 s | 78.3% (2,089kB) | 11M
-8 | 10.65 s | 88.2% (73,428kB) | 17M | 8.00 s | 78.3% (2,089kB) | 11M
-9 | 15.11 s | 88.2% (73,428kB) | 17M | 11.73 s | 78.3% (2,089kB) | 11M
1.1 -1 | 0.93 s | 90.4% (75,270kB) | 11M | 0.45 s | 83.3% (2,221kB) | 6M
-2 | 1.30 s | 89.2% (74,272kB) | 11M | 0.84 s | 79.4% (2,118kB) | 7M
-3 | 1.41 s | 88.9% (74,048kB) | 13M | 0.90 s | 79.2% (2,113kB) | 8M
-4 | 1.64 s | 88.6% (73,757kB) | 13M | 0.96 s | 78.9% (2,106kB) | 8M
-5 | 4.39 s | 88.3% (73,520kB) | 13M | 3.01 s | 78.6% (2,095kB) | 10M
-6 | 6.89 s | 88.2% (73,434kB) | 13M | 5.00 s | 78.3% (2,089kB) | 10M
-7 | 9.44 s | 88.2% (73,431kB) | 13M | 6.84 s | 78.3% (2,089kB) | 10M
-8 | 11.92 s | 88.2% (73,424kB) | 13M | 8.56 s | 78.3% (2,089kB) | 10M
-9 | 16.75 s | 88.2% (73,424kB) | 13M | 12.22 s | 78.3% (2,089kB) | 10M
1.0 -1 | 0.92 s | 90.4% (75,238kB) | 37M | 0.43 s | 83.3% (2,221kB) | 12M
-2 | 1.25 s | 89.2% (74,241kB) | 37M | 0.86 s | 79.4% (2,118kB) | 12M
-3 | 1.40 s | 88.9% (74,017kB) | 38M | 0.91 s | 79.2% (2,113kB) | 13M
-4 | 1.63 s | 88.6% (73,726kB) | 38M | 1.00 s | 78.9% (2,105kB) | 13M
-5 | 5.68 s | 88.3% (73,489kB) | 46M | 3.13 s | 78.6% (2,095kB) | 46M
-6 | 9.66 s | 88.2% (73,404kB) | 47M | 5.07 s | 78.3% (2,089kB) | 46M
-7 | 13.30 s | 88.2% (73,401kB) | 47M | 7.00 s | 78.3% (2,089kB) | 46M
-8 | 16.91 s | 88.2% (73,394kB) | 47M | 9.02 s | 78.3% (2,089kB) | 46M
-9 | 24.04 s | 88.2% (73,394kB) | 48M | 13.08 s | 78.3% (2,089kB) | 48M
各ファイルは1つのスレッドを使用し、シーク可能な入力ファイルと出力ファイルを必要とします。サポートされているホストは、不合理な割り当てを拒否するために2 GiBのプロセスメモリキャップを適用します。BLR_MEMCAPをMiB単位で別のサイズに設定するか、キャップを無効にするには0に設定します。
アーカイブはホスト間でポータブルです。Windowsビルドは次のようにMinGWを使用します。
./configure --host=x86_64-w64-mingw32 CC=x86_64-w64-mingw32-gcc LDFLAGS=-static
make
Windows 95ビルドは、小さなKERNEL32ランタイムを使用し、i486をターゲットにします。
./configure --host=i686-w64-mingw32 --with-windows-target=win95 \
CC=i686-w64-mingw32-gcc LDFLAGS=-static
make && make win95-check
win95-checkは、ローダーベースライン、PEフラグ、およびKERNEL32インポートを検証します。MS-DOSビルドはDJGPPを使用し、CWSDPMIのようなDPMIホストを持つi386が必要です。
./configure --host=i586-pc-msdosdjgpp CC=i586-pc-msdosdjgpp-gcc
make
DOSバッチモードは拡張子を置き換え、シリアルに実行します。song.oggはsong.blrになり、その後song.oggまたはOpusの場合はsong.opuに展開されます。