プログラミング
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でホストされています。
クイックスタート
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は、エンコーディングとデコーディングの進捗バーをstderrに表示し、各Vorbisチューニングトライアルを個別に識別します。ログには--progress-linesを使用してください。バッチ進捗は、入力ファイル名でラベル付けされた個別の行を使用します。
インストール
パッケージマネージャーを使用するか、GitHubリリースからバイナリをダウンロードしてください。リリースtarballをビルドするには、./configure make sudo make install を実行してください。
プロジェクトはC99とCおよびmathライブラリのみを使用しています。src/opusの下のOpusパーサーはlibopusから派生しています。
設定オプション 効果
--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チューニングは、選択された各設定でファイル全体を評価します。宛先ファイルには最良の候補が保持され、トライアル中は最良の候補と現在の候補が最大で存在します。5メガバイトの音楽ファイルの結果を以下に示します。
レベル Vorbis Opus
-1 6.4 MB/sで8.3%小さくなる 4.2 MB/sで4.0%小さくなる
-9 2.9 MB/sで9.8%小さくなる 2.4 MB/sで4.8%小さくなる
注意点
エンコーダーは、不正なチェックサム、無効なページシーケンス、サポートされていないVorbis機能、または終了ページがないファイルなど、正確に再現できないファイルを拒否します。余分なパディングまたは代替のフロアサブクラス選択を持つVorbisパケットは、通常のフロアおよびレジデュアル圧縮を保持します。クラスワード補正とパディングは個別にモデル化されます。短縮されたパケット(パケットピーリング)は、適応バイトモデルを使用します。Opusサポートは、チャンネルマッピングファミリー0の1つのモノラルまたはステレオ論理ストリームに限定されます。OpusHeadおよびOpusTagsを含むパケットは61,440バイトに制限されます。拡張フレームヘッダーとパディングはこの制限内でサポートされます。連鎖したマルチチャンネルOpusファイルは拒否されます。拒否すると診断と終了ステータス1が生成されます。
終了ステータス コード 意味
0 成功
1 不正、サポートされていない、または認識されない入力
2 使用法エラー
3 ファイルアクセスエラー
4 内部エラー
バッチモードは、いずれかのファイルによって報告された最も高い非ゼロステータスを返します。
パフォーマンスとポータビリティ
各ファイルは1つのスレッドを使用し、シーク可能な入力ファイルと出力ファイルを必要とします。Vorbisモデルページは、遅延OS割り当てに依存せずに、使用時にのみ割り当てられます。サポートされているホストは、不合理な割り当てを拒否するために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に展開されます。