在“豆子工具”众多的功能里,音频转换(m4a 转 mp3) 是我使用频率最高、也最具有“个人救赎”色彩的一个。
起因:被软件更新“背刺”后的郁闷
这个功能的由来非常接地气:有一段时间,我需要频繁地将苹果手机录音产生的 m4a 格式文件转换成 mp3,因为当时某个必须使用的业务软件只认 mp3。
那时候我找遍了各种转换工具。最后发现某款主流音乐软件自带的转换功能挺好用。然而,好景不长,在一次软件自动更新后,这个功能竟然被砍掉了。我去搜老版本安装包,却发现根本找不到安全的下载路径。
那种“被绑架”的无奈感,相信每个工具控都深有体会。
进阶:大名鼎鼎的 ffmpeg
郁闷之后,我转向了技术人的终极方案——ffmpeg。
命令行虽然硬核,但确实强大到无以复加。一条简单的指令就能解决所有问题:ffmpeg -i input.m4a output.mp3
用了很长一段时间的命令行后,新的问题又来了:我总不能随时随地都带着电脑吧?如果我在外面,急需用手机转一个文件发给客户怎么办?
于是,我动了把 ffmpeg 搬进“豆子工具”的心思。
实现:极简架构下的“随时随地”
在小程序里实现这个功能,原理其实并不复杂,核心在于后端调度:
- 前端上传:小程序端选择
m4a文件,上传至服务器。 - 后端处理:后端使用 Go 语言接收文件,通过
exec模块调用服务器系统环境中的ffmpeg进程进行转换。 - 实时试听:为了保证体验,我在小程序里集成了一个音频播放器。转换前可以听一下是否选对了文件,转换后也可以即时试听确认效果。
- 即用即删:转换生成的文件在用户下载后会立即从服务器删除,既保护了隐私,也完全不占用宝贵的服务器存储空间。
感受:工具的本质是“自由”

自从这个功能上线后,我就彻底告别了 ffmpeg 命令行。
最爽的一点是随时随地:无论是在地铁上还是在户外,掏出手机,几秒钟就能完成格式转换。这种把强大工具揣在兜里的感觉,就是开发者最大的浪漫。
如果你也经常被各种音频格式限制折磨,或者对 Go 调用 ffmpeg 的具体代码实现感兴趣,欢迎在评论区交流。