comfyui_media_toolbox
Audio/video load and format-conversion nodes for ComfyUI. Reads and writes only inside the ComfyUI input/output directories; every path is resolved with realpath and confirmed with commonpath, so absolute paths, '..' traversal and outside symlinks are rejected. Extract the audio track from a video, trim long media by time range, export several formats in one run with parameters auto-adapted to the source, instant same-format passthrough with no re-encoding, a standalone video parameter report, and built-in compliance checks for mainstream Chinese music platforms. English UI by default; a Simplified Chinese translation is available from Interface - Language. Files are read from the ComfyUI input directory (drag and drop, or the upload button on the load nodes) and written to the output directory under a relative prefix. Report text follows the interface language by default and can be pinned per node.
Nodes (5)
It opens the mp4 and hands you the audio
The scissors ComfyUI's video loader forgot
Four formats in one run, plus a Chinese streaming spec sheet
One render, five containers, one ffmpeg call
Read the parameters of a VIDEO you didn't create
ComfyUI 音视频工具箱
一套面向 ComfyUI 的音频 / 视频加载与格式转换自定义节点。 核心特点:一次运行产出多种格式、参数自动适配源文件、同格式转换零成本直出, 并内置国内主流音乐平台的合规校验。
中文文档 · English documentation
界面语言
界面默认英文,内置简体中文翻译,可在 ComfyUI 设置的 Interface → Language 中切换,节点名、参数名、下拉选项与提示文字全部跟随切换。
报告文字的语言由各节点上的 报告语言 控制,默认「跟随界面语言」,
也可强制中文或英文。
节点一览
| 节点 | 作用 |
|---|---|
| Load Audio (Advanced) | 加载 input 目录里的音频 / 视频中的音频,支持长音频截断 |
| Save Audio (Platform Export) | 一次产出 WAV / MP3 / FLAC / OPUS,并做平台合规校验 |
| Load Video (Advanced) | 加载 input 目录里的视频,支持长视频截断 |
| Save Video (Format Converter) | 一次产出 MP4 / MKV / WEBM / AVI / MOV |
| Video Report | 只看参数报告、不导出文件时使用 |
音频与视频的加载 / 保存逻辑完全一致:加载节点负责「读进来 + 可选截断」, 保存节点负责「按目标格式写出去」,两者直连即为格式转换。
文件从哪里来
插件只读写 ComfyUI 的 input 与 output 两个目录,不会访问其它任何位置。
这是刻意的设计:节点不接受任意本地路径,避免被当成读取本机任意文件的入口。
要把本机文件用进来,有两种方式:
- 拖拽:把文件直接拖到 ComfyUI 画布上,ComfyUI 会复制一份到
input目录 - 节点内上传:加载节点上的上传按钮会把文件存进
input目录, 并自动填好文件名;选好后无需运行即可试听 / 预览
加载节点还带一个 Refresh 按钮,用于刷新下拉列表——
ComfyUI 运行期间新增到 input 目录的文件,刷新后就能选到。
下拉列表会递归子目录,直接填 子目录/文件名 即可。
保存位置
两个保存节点的 文件名前缀 都是 output 目录下的相对路径,
例如 video/格式转换 会存成 output/video/格式转换_00001.mp4。
末尾的 _00001 是防覆盖用的递增序号,重复运行不会覆盖已有文件。
视频节点一次产出多个格式时,各格式共用同一个序号,便于成组对应。
绝对路径与 .. 会被拒绝。
安装
安装分两步:① 把插件放进 ComfyUI → ② 确认 ffmpeg 依赖。装好后重启 ComfyUI 即可在节点列表的 Audio / Video 分类下看到节点。
第 ① 步:安装插件(三选一)
方式 A:ComfyUI-Manager 一键安装(最简单,强烈推荐新手)
前提:你的 ComfyUI 已安装 ComfyUI-Manager(大多数整合包默认已带)。
- 启动 ComfyUI,浏览器打开界面
- 点右上角 Manager(管理器)
- 点 Install Custom Nodes(安装自定义节点)
- 在搜索框输入
comfyui_media_toolbox - 找到本项目(Media Toolbox),点右侧 Install
- 安装完成后点 Restart(重启),或手动关闭再启动 ComfyUI
方式 B:git 命令安装
进入 ComfyUI 的 custom_nodes 目录后执行:
cd custom_nodes
git clone https://github.com/jesse890423/comfyui_media_toolbox.git
国内网络较慢时,用 GitCode 镜像地址(每日自动同步,无需翻墙):
git clone https://gitcode.com/jesse0423/comfyui_media_toolbox.git
然后重启 ComfyUI。
方式 C:下载压缩包手动放置
- 点本页面上方绿色 Code 按钮 → Download ZIP,下载源码压缩包
- 解压,得到文件夹
comfyui_media_toolbox-main - 把它重命名为
comfyui_media_toolbox(去掉-main后缀) - 整个文件夹移动到 ComfyUI 的
custom_nodes目录下 - 重启 ComfyUI
找到你的 custom_nodes 目录
不同安装方式的路径不同,custom_nodes 始终在 ComfyUI 根目录下:
| 你的 ComfyUI 版本 | custom_nodes 路径示例 |
|---|---|
| Windows 便携版 | ComfyUI_windows_portable\ComfyUI\custom_nodes\ |
| 手动 / git 安装 | ComfyUI\custom_nodes\ |
| ComfyUI Desktop | 设置中可打开所在目录,或在 Manager 里用方式 A 安装 |
安装后的最终结构应为:
ComfyUI/
└── custom_nodes/
└── comfyui_media_toolbox/ ← 本仓库全部内容放在这里
├── __init__.py
├── nodes.py
├── video_nodes.py
├── web/
├── locales/
└── workflows/
注意:不要出现
comfyui_media_toolbox/comfyui_media_toolbox/的双层嵌套, 这是解压安装最常见的错误。若节点没出现,先检查是不是多套了一层文件夹。
安装后自检
重启 ComfyUI 后,在画布空白处右键 → Add Node(添加节点), 在分类 Audio 或 Video 下应能看到 5 个节点:
- Load Audio (Advanced)、Save Audio (Platform Export)
- Load Video (Advanced)、Save Video (Format Converter)
- Video Report
看得到即表示安装成功。若看不到,请查看第 ② 步与下方「常见问题」。
第 ② 步:依赖说明
| 依赖 | 来源 | 说明 |
|---|---|---|
| av (PyAV) | ComfyUI 核心自带 | 用于解码音视频,无需安装 |
| numpy / torch | ComfyUI 核心自带 | 无需安装 |
| ffmpeg | 见下方说明 | 格式转换、转码、混流必需 |
关于 ffmpeg
ffmpeg 不是 ComfyUI 便携版自带的,格式转换 / 转码功能需要它。节点按以下顺序自动查找:
- 环境变量
FFMPEG_BINARY - 环境变量
IMAGEIO_FFMPEG_EXE - Python 包
imageio-ffmpeg自带的二进制 - 系统
PATH
多数情况你无需任何操作:绝大多数 ComfyUI 安装(含官方 Windows 便携版)都已预装
imageio-ffmpeg,它自带一份可用的 ffmpeg。想确认是否就绪,运行下面命令,能打印出
一个 .exe 路径就说明已经装好了,可直接跳到「快速开始」:
Windows 便携版(在本仓库同级目录 ComfyUI_windows_portable 下打开命令行):
python_embeded\python.exe -c "import imageio_ffmpeg; print(imageio_ffmpeg.get_ffmpeg_exe())"
手动 / git 安装版(在已激活的 ComfyUI 虚拟环境里):
python -c "import imageio_ffmpeg; print(imageio_ffmpeg.get_ffmpeg_exe())"
如果上面命令报错,说明缺少 ffmpeg,用下面的方式补齐(任选其一)。关键是 装到 ComfyUI 所用的那个 Python 环境里,而不是系统随便一个 Python。
方式一:pip 安装(推荐,最简单)
-
Windows 便携版:
python_embeded\python.exe -m pip install imageio-ffmpeg -
其他版本(先激活 ComfyUI 环境):
python -m pip install imageio-ffmpeg
方式二:手动下载完整 ffmpeg
- 到官方构建页下载:gyan.dev(Windows)或 BtbN(跨平台)
- 解压后,把
bin目录加入系统PATH;或设置环境变量FFMPEG_BINARY指向其中的ffmpeg.exe - 重启 ComfyUI
请使用完整版 ffmpeg。精简版可能缺少 H.265 / VP9 / AV1 或音频编码器, 会导致转码报错。gyan.dev 的「ffmpeg-release-full」与 BtbN 的默认构建功能完整。
仍然不确定? 直接运行本仓库自带的检测,它会打印节点实际找到的 ffmpeg:
python _smoke_test.py
第一行 ffmpeg = ... 即结果;显示 ffmpeg = None 就是没找到,按方式一/二补齐。
提示:视频 / 音频节点缺少 ffmpeg 时会明确提示「未找到 ffmpeg」,不会静默失败。
常见问题
Q:装完在节点列表里找不到节点?
先确认没有双层嵌套文件夹(见上文注意),再确认 __init__.py 在
comfyui_media_toolbox 文件夹第一层。仍不行就看 ComfyUI 启动窗口是否有
[Media Toolbox] 相关报错。
Q:转换时报「未找到 ffmpeg」?
按第 ② 步装 ffmpeg。注意一定装到 ComfyUI 使用的 Python 环境里
(便携版是 python_embeded),不是随便一个系统 Python。
Q:能加载但转码报错、或产出文件打不开?
多半是用了精简版 ffmpeg,缺少相应编码器。换 gyan.dev 的 full 版本或
pip install imageio-ffmpeg。
Q:下拉列表里看不到刚放进 input 的文件? 点加载节点上的 Refresh 按钮。ComfyUI 只在启动时扫描一次目录, 运行期间新增的文件需要刷新才会出现。
Q:界面语言怎么切换? ComfyUI 设置里的 Interface → Language。节点界面与报告文字都会跟随, 报告语言也可在节点上单独指定。
快速开始
插件目录的 workflows/ 下提供了两个可直接加载的示例工作流:
示例_音频格式转换.json— 加载音频 → 保存音频示例_视频格式转换.json— 加载视频 → 保存视频
两个工作流内都附有中文使用说明注释。
核心特性
1. 只碰 input 与 output 目录
插件的所有文件操作都限定在 ComfyUI 的 input 与 output 目录内,
每个路径都会先经 realpath 规范化、再用 commonpath 确认没有逃出这两个目录。
绝对路径、.. 穿越、以及指向目录外的符号链接都会被拒绝。
上游传下来的源文件路径同样按白名单处理:只有落在 input / output / temp
之内才会被使用。指向其它机器的写法(\\server\share\…)在任何文件系统调用
之前就被拒绝——在 Windows 上,哪怕只是判断一下它是否存在,都会立即发起 SMB
会话并把当前登录用户的凭据交给那台机器。
需要把本机文件用进来时,用画布拖拽或节点内的上传按钮即可。
2. 视频文件直接当音频用
音频加载节点能直接读 mp4 / mkv / mov / avi / webm / flv / ts 等视频文件, 自动提取其中的音轨,不必先从剪映之类的软件导出音频再导入。
3. 长媒体截断
加载节点提供三种截断方式,下拉项自带说明:
| 选项 | 含义 | 需要填的参数 |
|---|---|---|
| 不截断(使用完整音频) | 完整使用 | 无 |
| 只取开头一段(0 秒 → 截取时长) | 从 0 秒开始取一段 | 截取时长(秒) |
| 只取中间一段(起点 → 终点) | 取任意区间 | 起点(秒)、终点(秒) |
| 从起点一直到结尾(起点 → 末尾) | 从某点到结束 | 起点(秒) |
音频与视频节点的截断逻辑一致。
4. 参数自动适配
保存节点中标注「自动(跟随源)」的参数会跟随源文件:
- 音频:采样率、声道、WAV 位深、MP3 / OPUS 码率
- 视频:分辨率、帧率、视频编码、音频处理策略
以音频为例,源为无损 44.1kHz / 16bit / 立体声时,导出 MP3 会自动使用 320kbps。
5. 同格式零成本直出
目标格式与源格式一致、且所有参数都是「自动」时,节点会直接复制源文件, 不重新编码,几乎瞬间完成。报告 / 摘要中会标记为「直出」。
直出的前提是源文件确实位于 input / output / temp 内。这个路径来自上游
节点的输出(提交的 prompt 里也可能自带),一旦它指向这三个目录之外,节点就不
去碰它,改用内存里的波形重新编码,报告里会写明原因。
注意:视频节点若使用了截断,或指定了分辨率 / 帧率 / 编码器,则会正常转码。
6. 一次产出多种格式
勾选多个目标即可一次运行完成,多个目标共用一次 ffmpeg 调用,比分多次转换更快。
7. 平台合规校验(音频)
「保存音频(平台发布)」内置国内主流平台预设(汽水音乐、网易云音乐、QQ音乐、 酷狗音乐、抖音、快手、哔哩哔哩),会校验格式、采样率、位深、码率、声道与文件大小, 并给出是否满足的结论。选择「自定义」可手动填写要求,选择「不校验」则只出文件。
节点参数速查
加载音频(增强) / 加载视频(增强)
| 参数 | 说明 |
|---|---|
| 音频文件 / 视频文件 | 从 ComfyUI input 目录选择,可直接填 子目录/文件名 |
| 音轨序号 / 视频流序号 | 多音轨 / 多流文件时使用哪一条,0 为第一条 |
| 截断方式 | 见下方「长媒体截断」 |
| 起点(秒) / 终点(秒) / 截取时长(秒) | 配合截断方式使用 |
| 报告语言 | 跟随界面语言 / English / 中文 |
保存音频(平台发布)
| 参数 | 说明 |
|---|---|
| 文件名前缀 | output 目录下的相对路径 |
| 导出WAV / 导出MP3 / 导出OPUS / 保留FLAC | 勾选需要的格式 |
| WAV位深 / MP3码率 / OPUS码率 / 采样率 / 声道 | 「自动(跟随源)」或指定值 |
| 平台预设 | 平台名称 / 自定义 / 不校验 |
| 文件大小上限MB | 合规校验用的单文件体积上限 |
| 报告语言 | 跟随界面语言 / English / 中文 |
保存视频(格式转换)
| 参数 | 说明 |
|---|---|
| 文件名前缀 | output 目录下的相对路径 |
| 导出MP4 / 导出MKV / 导出WEBM / 导出AVI / 导出MOV | 勾选需要的格式 |
| 视频编码 | 自动 / H.264 / H.265 / VP9 / AV1 / VP8 / MPEG-4 |
| 画质CRF | 数值越小越清晰、体积越大 |
| 分辨率 | 保持原始,或按标注尺寸等比缩放 |
| 帧率 | 保持原始,或指定数值 |
| 音频处理 | 保留原音频 / 自动兼容 / 移除 / 强制转码 |
| 音频码率 | 音频转码码率 |
| 报告语言 | 跟随界面语言 / English / 中文 |
自动模式下,若源编码与目标容器不兼容(例如 H.264 转 WEBM),会自动回退到 该容器的推荐编码器(WEBM → VP9),避免产出无法播放的文件。
兼容性说明
- 视频节点输出 ComfyUI 原生
VIDEO类型,可与官方视频节点互连 - 视频转码依赖 ffmpeg 编码器可用性。
imageio-ffmpeg自带的构建已包含 libx264 / libx265 / libvpx-vp9 / libaom-av1 与常见音频编码器 - 若上游节点输出的视频不是文件型输入(非本插件加载节点), 转码会先将其序列化为内存缓冲,效率较低,建议优先用「加载视频(增强)」
- 上传、刷新、试听 / 预览均在浏览器侧完成,跨平台可用
开发
仓库内附带两个冒烟测试脚本,会自行用 ffmpeg 生成素材并放进 input 目录,
直接运行即可验证核心功能:
python _smoke_test.py # 音频节点
python _video_test.py # 视频节点
两者都会在结尾打印通过 / 失败统计。脚本会自动向上查找 ComfyUI 根目录, 也可显式指定:
COMFY_ROOT=/path/to/ComfyUI python _smoke_test.py
许可证
本项目为原创开源项目。作者依 MIT 许可授权他人使用、复制、修改、合并、发布与再分发, 但分发或发布衍生作品时必须保留原作者署名与版权声明。 详见 NOTICE,其中亦列明了第三方组件(PyAV / NumPy / PyTorch / FFmpeg)的著作权归属。