前言:笔者近期基于微信公众号开发一个类似于微信聊天中长按说话功能,这里就先说说录音结束后PHP对于录音数据的处理。暂时不讲述如何实现录音长按录音,开发教程各大网站也都有太多示例,后续会补充!
开发环境:centos 7.4
当前端将录音数据 serverId(返回音频的服务器端ID)传递给后端,后端利用下方接口获取微信服务器存储的录音数据。
http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=access_token&media_id=media_id
access_token 获取方式可以查询相对应的接口,media_id 即为前端传递过来的 serverId。
获取数据后将文件存储到自己服务器上,存储的音频格式为amr。接下来就是比较关键的地方了。
// 将 amr 文件格式转换成 mp3 格式
$filename = "example";
$amrFile = "./upload/voice/" . $filename . ".amr";
$mp3File = "./upload/voice/" . $filename . ".mp3";
// 调用PHP命令,将amr格式文件转换为mp3
$command = "ffmpeg -i " . $amrFile . " " . $mp3File . " 2>&1";
exec($command);
// 此刻在服务器中切换到项目对应的目录下,将发现有同名的mp3音频文件
// 再将最终生成的mp3文件名存入数据库,既可随时调用了,大功告成!
网上查询了其他方法,有些朋友是从微信接口获取的音频文件存储到其他平台上,貌似平台可以自动将音频格式转换为mp3,由于时间有限,并未尝试操作使用,有兴趣的朋友可以尝试下,给我反馈留言。希望能帮助到遇到同样问题的小伙伴们。