设为首页 收藏本站
查看: 1519|回复: 0

[经验分享] PHP 将amr音频文件转换为mp3格式

[复制链接]

尚未签到

发表于 2017-12-29 13:58:10 | 显示全部楼层 |阅读模式
  说下整体思路
  1、服务器安装ffmpeg
  2、使用ffmpeg -i 指令来转换amr为mp3格式(这个到时候写在PHP代码中,使用exec函数执行即可)
  3、在网页端使用HTML5的audio标签来播放mp3文件
  下面是操作细节:

一、服务器安装ffmpeg以cenos为例
  此处参考:http://my.oschina.NET/ethan09/blog/372435
  需要特别注意的是,在下面的方法中,amrnb和amrwb的安装到make环节会请求3gp的一个网址,一般是请求不到的,可以用crtl+c取消他的进程,并且这两个不需要也是可以转换格式的
  接到需求要在Linux环境下将amr转换为mp3,windows下直接使用第三方jar包封装的exe方法即可,但不支持Linux,上网爬完资料说是用ffmpeg加上amr插件可以实现,根据教程尝试了一下:
  1. 首先安装系统编译环境
  

yum install -y automake autoconf libtool gcc gcc-c++  #CentOS  

  2. 编译所需源码包
  

#yasm:汇编器,新版本的ffmpeg增加了汇编代码  

  
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
  

  
tar -xzvf yasm-1.3.0.tar.gz
  

  
cd yasm-1.3.0
  

  
./configure
  

  
make
  

  
make install
  

  

  

  
#lame:Mp3音频解码
  

  
wget http://jaist.dl.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
  

  
tar -xzvf lame-3.99.5.tar.gz
  

  
cd lame-3.99.5
  

  
./configure
  

  
make
  

  
make install
  

  

  

  
#amr支持
  

  
wget http://downloads.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.3.tar.gz
  

  
tar -xzvf opencore-amr-0.1.3.tar.gz
  

  
cd opencore-amr-0.1.3
  

  
./configure
  

  
make
  

  
make install
  

  

  

  
#amrnb支持
  

  
wget http://www.penguin.cz/~utx/ftp/amr/amrnb-11.0.0.0.tar.bz2
  

  
tar -xjvf amrnb-11.0.0.0.tar.bz2
  

  
cd amrnb-11.0.0.0
  

  
./configure
  

  
make
  

  
make install
  

  

  

  
#amrwb支持
  

  
wget http://www.penguin.cz/~utx/ftp/amr/amrwb-11.0.0.0.tar.bz2
  

  
tar -xjvf amrwb-11.0.0.0.tar.bz2
  

  
cd amrwb-11.0.0.0
  

  
./configure
  

  
make
  

  
make install
  

  

  

  
#ffmpeg
  

  
wget http://ffmpeg.org/releases/ffmpeg-2.5.3.tar.bz2
  

  
tar -xjvf ffmpeg-2.5.3.tar.bz2
  

  
cd ffmpeg-2.5.3
  

  
./configure --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared
  

  
make
  

  
make install
  

  

  

  
#加载配置
  

  
#最后写入config后,终端运行ffmpeg命令,出现success和已安装的扩展,则运行成功。
  

  
ldconfig
  

  3.使用方法
  

ffmpeg -i 1.mp3 -ac 1 -ar 8000 1.amr  #MP3转换AMR  

  
ffmpeg -i 1.amr 1.mp3                 #AMR转换MP3
  

  附录:
  附录1. ffmpeg默认安装目录为“/usr/local/lib”,有些64位系统下软件目录则为“/usr/lib64”,编译过程中可能会出现
  “ffmpeg: error while loading shared libraries: libmp3lame.so.0: cannot open shared object file: No such file or directory”等类似的错误,解决办法是建立软链接:
  # ln -s /usr/local/lib/libmp3lame.so.0.0.0 /usr/lib64/libmp3lame.so.0
  附录2. 如果出现以下提示:ffmpeg: error while loading shared libraries: libavdevice.so.54: cannot open shared object file: No such file or directory
  可以通过如下方式查看ffmpeg的动态链接库哪些没有找到:
  

ldd `which ffmpeg`  

  
         libavdevice.so.54 => not found
  

  
         libavfilter.so.3 => not found
  

  
         libavformat.so.54 => not found
  

  
         libavcodec.so.54 => not found
  

  
         libswresample.so.0 => not found
  

  
         libswscale.so.2 => not found
  

  
         libavutil.so.51 => not found
  

  
         libm.so.6 => /lib64/libm.so.6 (0x00002ab7c0eb6000)
  

  
         libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ab7c100b000)
  

  
         libc.so.6 => /lib64/libc.so.6 (0x00002ab7c1125000)
  

  
         /lib64/ld-linux-x86-64.so.2 (0x00002ab7c0d9a000)
  

  
#如果类似于上面的输出内容,查找以上类库,会发现全部在/usr/local/lib/下
  

  
find /usr/local/lib/ | grep -E "libavdevice.so.54|libavfilter.so.3|libavcodec.so.54"
  

  
/usr/local/lib/libavfilter.so.3.17.100
  

  
/usr/local/lib/libavcodec.so.54.59.100
  

  
/usr/local/lib/libavdevice.so.54
  

  
/usr/local/lib/libavcodec.so.54
  

  
/usr/local/lib/libavfilter.so.3
  

  
/usr/local/lib/libavdevice.so.54.2.101
  

  

  

  
#查看链接库配置文件
  

  
more  /etc/ld.so.conf | grep /usr/local/lib
  

  
#如果不包含的话,需要编辑此文添加:
  

  
vi /etc/ld.so.conf
  

  
/usr/local/lib
  

  
/usr/local/lib64
  

  
#运行配置命令
  

  
ldconfig
  

  关于ffmpeg简介:
  FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。其官方网址为:http://www.ffmpeg.org
  最后,部分内容参照http://linux.it.Net.cn/e/Linuxit/2014/0828/3980.html

二、使用ffmpeg指令
  在进行完第一步后,可以使用ffmpeg --help来看看是否正确安装,如果没有的话,请检查是不是忘了make install
  使用转换的指令是ffmpeg -i 1.amr 2.mp3
  会把1.amr转换为2.mp3

三、使用php来执行linux指令ffmpeg
  对文件的转换当然不能是自己不停的去服务器里面运行linux指令的,所以我们采用php执行linux指令的办法来处理amr文件
  使用exec函数来执行
  

$amr = './'.$vo['voice'];  

$mp3 = $amr.'.mp3';  

  
if(($mp3) == true){
  
     // exit('无需转换');
  
}else{
  
     $command = "/usr/local/bin/ffmpeg -i $amr $mp3";
  
     ($command,$error);
  
}
  

  仔细看看代码,我这边是用的/usr/local/bin/ffmpeg来执行的,因为我使用php不能直接运行ffmpeg指令,如果你的指令不在这个目录下,可以使用locate或者find来查找ffmpeg所在目录

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-429353-1-1.html 上篇帖子: PHP爬虫 下篇帖子: php 运行脚本shell
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表