音频压缩
官方脚本
可调用节点
v2.1.0
音频压缩 | 基于 FFmpeg 批量压缩音频,支持 MP3/AAC/OGG/OPUS/M4A 输出,档位式压缩强度,可调采样率与声道,一键右键批量、定时任务、节点联动,大幅减小音频文件体积
脚本能力
直接启动支持
右键启动支持
快捷键启动支持
超级复制启动不支持
定时任务支持
可被其他脚本调用是
依赖其他脚本否
图形化启动界面支持
基于 FFmpeg 引擎的音频压缩脚本,支持 MP3 / AAC / OGG / OPUS / M4A 五种输出格式,档位式压缩强度一键减小音频体积,支持批量处理、定时任务与节点联动。
核心特性
- 5 种输出格式:MP3 / AAC / OGG / OPUS / M4A 有损压缩
- 档位式压缩强度:轻度 / 标准 / 高效 / 强力 / 极致,自动映射目标码率,不用懂技术
- 自动生成启动界面:运行前弹出参数表单,压缩强度、格式、采样率、声道、输出目录一次配好
- 右键菜单一键压缩:选中音频 → 右键 → 一键批量压缩
- 全局快捷键:为脚本设置快捷键,选中音频按下即执行
- 批量处理:同时选中多个音频文件一次压缩
- 自定义输出目录:可指定输出位置,留空则保存到原文件所在目录
- 采样率 / 声道可调:原始 / 44.1kHz / 32kHz / 24kHz / 16kHz;立体声 / 单声道
- 智能跳过:已存在的文件自动跳过(可开启覆盖),绝不覆盖原文件
- 元数据保留:自动保留标题、艺术家、专辑等元数据
- 定时任务:配置到定时任务中无人值守自动压缩
- 节点联动:可被其他盒子脚本调用,回传输出路径与结果摘要
脚本演示

安装方法
本脚本的运行环境、依赖组件及参数界面均依赖"不忙脚本盒子",建议仅通过盒子安装和使用本脚本。
前置条件:安装好 不忙脚本盒子
- 打开盒子 → 脚本市场 → 搜索 「音频压缩」
- 点击「安装」
✅ 盒子会自动配置 Python 环境、安装 FFmpeg,并为你提供右键、快捷键、定时任务、参数表单能力。
使用方式
- 直接启动
- 在盒子里点击「音频压缩」卡片
- 在弹出的参数表单中设置压缩强度、输出格式、采样率、声道、输出目录
- 点击「执行」即开始压缩;表单会记住上次的配置
- 右键启动
- 在文件管理器中选中音频文件(可多选)
- 右键 → 音频压缩 → 一键批量压缩
- 快捷键启动
- 在盒子里为脚本设置全局快捷键
- 选中音频文件,按下快捷键即可执行
- 定时任务
- 在盒子的定时任务中为「音频压缩」配置计划(来源文件 + 压缩参数)
- 到点自动无人值守压缩,结果自动记录
💡 使用提示
- 压缩强度:目标码率越大体积越小、音质越低。日常推荐「高效压缩 (128kbps)」,兼顾体积与音质
- 输出格式:MP3 兼容性最好;AAC / M4A 同码率下体积更小;OPUS 压缩率最高
- 声道:单声道体积约减半,语音类内容首选
- 覆盖模式:默认跳过已存在的输出文件;需要重新压缩时勾选「覆盖已存在文件」
节点脚本(开发者阅读)
「音频压缩」已声明为节点,可被其他盒子脚本通过联动调用:
import json, sys, requests
payload = json.load(open(sys.argv[1], encoding="utf-8"))
api_base = payload["environment"]["api_base"]
r = requests.post(f"{api_base}/api/link", json={
"script_id": "cb97b582-a0e7-4f22-8bf7-8e1b8134b0af",
"data": {"target_paths": ["C:/a.mp3"]},
"params": {"compression_level": "compress", "output_format": "mp3"},
}, timeout=3600)
body = r.json()
if not body.get("success"):
raise RuntimeError(body.get("message", "联动调用失败"))
result = body["result"]
if result.get("code") != 0:
raise RuntimeError(result.get("msg"))
print(result["output_paths"]) # 压缩成功的输出文件路径列表
print(result["summary"]) # 结果摘要(成功/跳过/失败数量)
返回业务键:
| 业务键 | 类型 | 说明 |
|---|---|---|
output_paths |
list | 压缩成功的输出文件路径列表 |
summary |
str | 结果摘要(成功/跳过/失败数量) |
🖥️ 环境要求
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows 10+(64 位) |
| 运行环境 | Python 3.8+、FFmpeg(盒子自动安装) |
本脚本已声明为节点,可被其他脚本通过「不忙脚本盒子」机制调用。完整配置见下方 TOML,其他脚本若需调用请严格按此配置构造请求。
bm-scripts-box-rc.toml
[bmscriptsbox]
[bmscriptsbox.info]
id = "cb97b582-a0e7-4f22-8bf7-8e1b8134b0af"
name = "音频压缩"
desc = "音频压缩 | 基于 FFmpeg 批量压缩音频,支持 MP3/AAC/OGG/OPUS/M4A 输出,档位式压缩强度,可调采样率与声道,一键右键批量、定时任务、节点联动,大幅减小音频文件体积"
version = "2.1.0"
icon = "./imgs/img.png"
[bmscriptsbox.runtime]
language = "python"
language_version = ">=3.8"
entry = "main.py"
terminal = "always"
binaries = [{name = "ffmpeg"}]
[bmscriptsbox.triggers.context_menu]
enabled = true
targets = ["files"]
filters = [".mp3", ".wav", ".flac", ".ogg", ".aac", ".wma", ".m4a", ".opus", ".ape", ".aiff", ".m4b", ".oga"]
[bmscriptsbox.triggers.shortcut]
enabled = true
input_type = "files"
filters = [".mp3", ".wav", ".flac", ".ogg", ".aac", ".wma", ".m4a", ".opus", ".ape", ".aiff", ".m4b", ".oga"]
[[bmscriptsbox.inputs]]
name = "target_paths"
label = "源文件"
type = "list"
pick = "files"
exts = [".mp3", ".wav", ".flac", ".ogg", ".aac", ".wma", ".m4a", ".opus", ".ape", ".aiff", ".m4b", ".oga"]
description = "要压缩的音频文件,支持多选批量处理"
[[bmscriptsbox.params]]
name = "compression_level"
label = "压缩强度"
type = "str"
default = "compress"
choices = ["light", "standard", "compress", "heavy", "extreme"]
choice_labels = { light = "轻度压缩 (256kbps)", standard = "标准压缩 (192kbps)", compress = "高效压缩 (128kbps)", heavy = "强力压缩 (96kbps)", extreme = "极致压缩 (64kbps)" }
description = "档位式压缩强度,对应目标码率;数值越大体积越小、音质越低"
[[bmscriptsbox.params]]
name = "output_format"
label = "输出格式"
type = "str"
default = "mp3"
choices = ["mp3", "aac", "ogg", "opus", "m4a"]
choice_labels = { mp3 = "MP3", aac = "AAC", ogg = "OGG", opus = "OPUS", m4a = "M4A" }
description = "压缩输出格式(有损格式)"
[[bmscriptsbox.params]]
name = "sample_rate"
label = "采样率"
type = "str"
default = "original"
choices = ["original", "44100", "32000", "24000", "16000"]
choice_labels = { original = "原始", "44100" = "44100 Hz", "32000" = "32000 Hz", "24000" = "24000 Hz", "16000" = "16000 Hz" }
description = "输出采样率,original 表示跟随输入"
[[bmscriptsbox.params]]
name = "channels"
label = "声道"
type = "str"
default = "original"
choices = ["original", "stereo", "mono"]
choice_labels = { original = "原始", stereo = "立体声", mono = "单声道" }
description = "输出声道,单声道体积约减半"
[[bmscriptsbox.params]]
name = "output_dir"
label = "输出目录"
type = "str"
default = ""
description = "输出目录路径,留空则输出到源文件所在目录"
[[bmscriptsbox.params]]
name = "overwrite"
label = "覆盖已存在文件"
type = "bool"
default = false
description = "已存在同名输出文件时,勾选则覆盖,否则自动跳过"
[[bmscriptsbox.outputs]]
name = "output_paths"
type = "list"
description = "压缩成功的输出文件路径列表"
[[bmscriptsbox.outputs]]
name = "summary"
type = "str"
description = "压缩结果摘要(成功/跳过/失败数量)"
[bmscriptsbox.node]
enabled = true
[bmscriptsbox.schedule]
enabled = true
[bmscriptsbox.params_form]
enabled = true
免责声明
所有脚本由用户通过开源仓库自行发布。本站仅提供索引服务,"不忙脚本盒子"仅提供展示与安装服务。请在使用前仔细核实脚本内容,作者不对其安全性、准确性及适用性作任何保证。