在“豆子工具”众多的功能里,音频转换(m4a 转 mp3) 是我使用频率最高、也最具有“个人救赎”色彩的一个。

起因:被软件更新“背刺”后的郁闷

这个功能的由来非常接地气:有一段时间,我需要频繁地将苹果手机录音产生的 m4a 格式文件转换成 mp3,因为当时某个必须使用的业务软件只认 mp3

那时候我找遍了各种转换工具。最后发现某款主流音乐软件自带的转换功能挺好用。然而,好景不长,在一次软件自动更新后,这个功能竟然被砍掉了。我去搜老版本安装包,却发现根本找不到安全的下载路径。

那种“被绑架”的无奈感,相信每个工具控都深有体会。

进阶:大名鼎鼎的 ffmpeg

郁闷之后,我转向了技术人的终极方案——ffmpeg

命令行虽然硬核,但确实强大到无以复加。一条简单的指令就能解决所有问题:
ffmpeg -i input.m4a output.mp3

用了很长一段时间的命令行后,新的问题又来了:我总不能随时随地都带着电脑吧?如果我在外面,急需用手机转一个文件发给客户怎么办?

于是,我动了把 ffmpeg 搬进“豆子工具”的心思。

实现:极简架构下的“随时随地”

在小程序里实现这个功能,原理其实并不复杂,核心在于后端调度

  1. 前端上传:小程序端选择 m4a 文件,上传至服务器。
  2. 后端处理:后端使用 Go 语言接收文件,通过 exec 模块调用服务器系统环境中的 ffmpeg 进程进行转换。
  3. 实时试听:为了保证体验,我在小程序里集成了一个音频播放器。转换前可以听一下是否选对了文件,转换后也可以即时试听确认效果。
  4. 即用即删:转换生成的文件在用户下载后会立即从服务器删除,既保护了隐私,也完全不占用宝贵的服务器存储空间。

感受:工具的本质是“自由”

音频格式转换

自从这个功能上线后,我就彻底告别了 ffmpeg 命令行。

最爽的一点是随时随地:无论是在地铁上还是在户外,掏出手机,几秒钟就能完成格式转换。这种把强大工具揣在兜里的感觉,就是开发者最大的浪漫。

如果你也经常被各种音频格式限制折磨,或者对 Go 调用 ffmpeg 的具体代码实现感兴趣,欢迎在评论区交流。