balrogg:恶魔般压缩(最高15%)无损 Vorbis/Opus 重新压缩器

Lobsters Hottest 工具

摘要

balrogg 是一个命令行工具,可无损重新压缩 Ogg Vorbis 和 Opus 文件,将其大小减少最高15%,其中 Vorbis 文件减少8-12%,Opus 文件减少3-8%。

<p><a href="https://lobste.rs/s/gebudu/balrogg_demonically_compacting_up_15">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/09/03 14:04

iczelia/balrogg

来源:https://github.com/iczelia/balrogg

balrogg

balrogg 可对 Ogg Vorbis 和 Opus 文件进行无损重压缩。压缩后的归档文件通常比 .ogg 文件小 8-12%,比 .opus 文件小 3-8%。
balrogg 采用 GNU GPL 第三版许可证。详情参见 COPYING。
问题反馈请提交至 Kamila Szewczyk。
项目托管于 GitHub。

快速开始

balrogg e music.ogg music.blr
balrogg d music.blr music.ogg
balrogg -b e *.ogg *.opus

e 表示压缩,d 表示解压。balrogg 会自动检测编解码器。使用 -b 参数时,系统将利用可用的 CPU 核心和内存并行处理所有后续文件。编码时自动添加 .blr 扩展名;解码时则移除该扩展名。较大的输入文件将优先处理。

安装方法

可通过系统包管理器安装,或从 GitHub Releases 下载二进制文件。
若需构建发行版压缩包,请执行:

./configure
make
sudo make install

本项目使用 C99 标准,仅依赖 C 标准库和数学库。
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 的解压速度相同。
针对 5MB 音乐文件的测试结果:

级别VorbisOpus
-1体积缩小 8.3%,处理速度 6.4 MB/s体积缩小 4.0%,处理速度 4.2 MB/s
-9体积缩小 9.8%,处理速度 2.9 MB/s体积缩小 4.8%,处理速度 2.4 MB/s

注意事项

编码器会拒绝无法精确复现的文件,包括:校验和错误、无效页序列、不支持的 Vorbis 特性或缺少最终流结束页的文件。
Opus 支持范围限于单一单声道/立体声音频流(通道映射族 0)。不支持链式或多声道 Opus 文件。
拒绝处理时将输出诊断信息并以状态码 1 退出。

退出状态

状态码含义
0成功
1格式错误、不支持或无法识别的输入
2用法错误
3文件访问错误
4内部错误

批处理模式将返回所有文件中最高的非零状态码。

性能与可移植性

每个文件使用独立线程处理,输入数据与归档文件均存储于内存。5MB 的 Vorbis 文件在 -4 级别下约需 40MB 内存,-9 级别下约需 70MB。由于模型初始化开销,处理小文件时单位字节速度较慢。
支持的主机会应用 2GiB 进程内存限制以拒绝不合理分配。可通过 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 工具链,需配备 DPMI 主机(如 CWSDPMI)的 i386 系统:

./configure --host=i586-pc-msdosdjgpp CC=i586-pc-msdosdjgpp-gcc
make

DOS 批处理模式会修改文件扩展名并串行处理。song.ogg 会先转为 song.blr,解压时根据格式转为 song.ogg 或 song.opu(Opus 格式)。

相似文章

GetCompress

Product Hunt

GetCompress 是一个无损媒体压缩工具,无需切换上下文。

MediaOptim

Product Hunt

MediaOptim 是一款本地压缩图片、视频和音频的工具,无需上传文件即可节省存储空间。