今天刚好碰到个需求,要在微信浏览器中实现录音,并在其他页面上播放。录音功能本身是JS SDK的功能,倒没啥问题,然而录音的文件保存下来是amr格式,而IOS的浏览器没法播放amr(据说微信浏览器的video标签可以播放,但没试成功),只能考虑在上传后自动将amr转换成mp3。问题本身不大,但是根据搜索的文章操作时却遇到不少问题,故记录下来。
服务端系统是CentOS,语言是PHP,实现这个过程主要就两步:
安装ffmpeg(确保ffmpeg与ffprobe命令可用)
PHP通过php-ffmpeg实现amr转换成mp3;
安装ffmpeg在CentOS上,最简单的办法是去官网()上下载最新的静态版本(Linux Static Builds),解压后即可使用。
如果通过yum安装会发现版本过低,转换不成功;而自己编译那就有得折腾了。
不论通过什么方式,安装成功后,都应该找个amr文件,测试下是否能转换成功:
$ffmpeg -i test.amr test.mp3 实现amr转换成mp3需求比较简单,可以自己调用exec命令实现转换,也可以使用第三方库完成转换,我使用的是PHP-FFMpeg(https://github.com/PHP-FFMpeg/PHP-FFMpeg)这个库。
安装与引用包是Composer的基础知识,也是现代WEB开发的基础,这里就不展开了。
一切就绪后,通过以下的例子代码就能完成amr到mp3的转换:
$ffmpeg = FFMpeg\FFMpeg::create(); $amr = $ffmpeg->open("test.amr"); $audio_format = new FFMpeg\Format\Audio\Mp3(); $amr->save($audio_format, "test.mp3"); 参考CentOS下yum安装ffmpeg(安装的版本过低,没法转换)