惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
D
DataBreaches.Net
D
Docker
云风的 BLOG
云风的 BLOG
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
Martin Fowler
Martin Fowler
U
Unit 42
Engineering at Meta
Engineering at Meta
IT之家
IT之家
Vercel News
Vercel News
B
Blog RSS Feed
人人都是产品经理
人人都是产品经理
博客园 - Franky
博客园 - 【当耐特】
Stack Overflow Blog
Stack Overflow Blog
G
Google Developers Blog
MongoDB | Blog
MongoDB | Blog

豆沙工作室

不想(二)十七岁 小点阵字 Get an Oscilloscope [11ty] 增量式地刷新 CDN 缓存 站起来,为你的成果答辩吧 公理还是定理? [11ty] 处理资产文件的 CDN 缓存问题 [11ty] 无障碍设计:正确地标识图和表 停止 Mac 上的时间机器备份 从 Gitea 迁移到 Forgejo 评论里的私信消息 记得清理你的日志文件 招魂 Annihilation [11ty] 使用 Pagefind 实现静态站点的搜索 直面死亡 [11ty] 修复 RSS 里的数学公式 看到了一个神奇的 UA PreFound:10B - 四次击键 一点小小的 AI 震撼 PreFound:10A - 文本之外,还有(绘)文字 PreFound:09 - 色彩运算子 计算机不予申辩 Re-Game 2.0 Addendum C - Press START PreFound:08 - 动效与仿射 PreFound:07 - 图片拼贴报 PreFound:06 - 漫游雪花海 PreFound:05 - 写出到屏幕 And Trek I Will PreFound:04 - 举起渲染器
杰理 WTS 格式音频转换和打包
dousha99 · 2026-08-14 · via 豆沙工作室

tldr: .mp3/.wav -(ffmpeg)-> .pcm -(wtgv2_encode.exe)-> .wts -(packres.exe) -> .cfg

一般而言,你应该使用 JLStudio 那个玩意从提示音选项卡中直接生成资源文件的。但如果你的用例比较特殊(比如多项目共享同一个仓库),那么就得自己跑整个流程。

以下是根据 JLStudio 的行为通过 Procmon 抓事件分析得出的过程。这个过程可能随着后续更新而有所修改。

这些工具都需要你想办法能安装 JLStudio. 你可以没有任何 SDK 授权,主要是里面的工具文件 C:\JLStudio\tools\JLTools 需要使用。除了 ffmpeg.exe 是原版 FFmpeg 以外,其他的工具在网上似乎都没有公开提供。

首先,将你的音频文件转成 16kHz 的裸 PCM, 格式为小端序 16bit 有符号数。这个部分可以通过 FFmpeg 做,或者你也可以自己写一个程序来搞。用 FFmpeg 转换的指令为:

ffmpeg.exe -y -i audio.mp3 -f s16le -acodec pcm_s16le -ac 1 -ar 16000 audio.pcm

WAV 格式的音频同理,只需要替换输入文件名,保留其他参数即可。

得到 PCM 数据后,再调用 wtgv2_encode.exe 把它编码成杰里的 WTS 格式:

wtgv2_encode.exe audio.pcm audio.wts o.raw 16000 16000 20 0 0

其中,各个参数的推测意义如下:

参数位置意义备注
1输入文件名可以是一个绝对路径
2输出文件名可以是一个绝对路径,如果目标已经存在,则它会被覆写
3???固定为 o.raw, 暂时没抓到其他的情况
4输入采样率?目前观察到的值固定是 16000, 不确定是否支持其他采样率
5输出采样率?同上;设备端是否支持其他采样率也需要调查
6???固定为 20, 暂时没抓到其他情况
7???固定为 0, 暂时没抓到其他情况
8压缩偏好0 表示质量优先;1 表示大小优先

得到 WTS 文件后,还需要将其打包成 .cfg 文件才能喂给烧录器下载。使用 packres.exe 即可:

packres.exe -n audio -o audio.cfg audio.wts:audio.wts

其中,-n 参数指定一个名称(至于这个名称是啥作用我还在摸索),-o 参数指定输出文件名;之后的每一项参数都是一个由冒号分隔的打包条目,冒号左手侧是资源文件路径,右手侧是机上文件名称。

注意到:packres.exe 会拒绝文件名超过 11 个字节的文件。所以在之前的生成 WTS 的步骤中,输出文件名的长度必须控制在 11 个字节以内。

考虑到命令行最大参数限制,packres.exe 还额外接受从 .txt 中按行读取音频文件。考虑如下的文件 audios.txt

D:\work\jl\proj\res\audio1.wts|audio1.wts
D:\work\jl\proj\res\audio2.wts|audio2.wts

则可以通过以下命令指示 packres.exe 按此文件打包音频:

packres.exe -n audio -o audio.cfg -pipe-sep -utf8-list -list audios.txt

其中,-pipe-sep 指定使用 | 分隔打包指令;如果你要使用绝对路径的话,一定要加这个参数;-utf8-list 指定输入的文件是 UTF-8 编码的,这个主要是为了应对潜在的非 ASCII 路径问题,可按情况选择加或者不加;-list 参数指定输入列表文件的路径。