天天看点

微信公众号开发——通过ffmpeg解决amr文件无法播放问题

今天刚好碰到个需求,要在微信浏览器中实现录音,并在其他页面上播放。录音功能本身是

JS SDK

的功能,倒没啥问题,然而录音的文件保存下来是

amr

格式,而

IOS

的浏览器没法播放

amr

(据说微信浏览器的

video

标签可以播放,但没试成功),只能考虑在上传后自动将

amr

转换成

mp3

。问题本身不大,但是根据搜索的文章操作时却遇到不少问题,故记录下来。

服务端系统是

CentOS

,语言是

PHP

,实现这个过程主要就两步:

  1. 安装

    ffmpeg

    (确保

    ffmpeg

    ffprobe

    命令可用)
  2. PHP

    通过

    php-ffmpeg

    实现

    amr

    mp3

    ;

安装ffmpeg

CentOS

上,最简单的办法是去官网(

http://www.ffmpeg.com/

)上下载最新的静态版本(

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(安装的版本过低,没法转换)