
项目背景:
在微信的开发中,语音文件被保存到服务器中,方便浏览和播放. 但是,微信下载了amr格式,但是H5网页元素支持Mp3格式.
讨论该过程:
微信-》 JSSDK录音-》上传语音=>获取media_id =》下载语音(请参阅media_id)=》获取amr格式=》转码MP3
查看PHP代码
您可以在此处获取amr格式的文件.
转码过程:
谈论总体想法
1. 在服务器上安装ffmpeg
2. 使用ffmpeg -i命令将amr转换为mp3格式(这是当时用PHP代码编写的,可以使用系统功能执行)
3. 使用HTML5音频标签在网页上播放mp3文件
以下是操作细节:
首先,以cenos为例,在服务器上安装ffmpeg
参考此处:

重要的是要注意,在以下方法中,安装amrnb和amrwb时将为make链接请求3gp的URL,该URL通常不可用. 您可以使用crtl + c取消他的进程,而这两个不需要转换格式.
根据需求,您需要在Linux环境中将amr转换为mp3. 您可以直接使用Windows下第三方jar程序包封装的exe方法,但它不支持Linux. 实现,请根据教程进行尝试:
首先安装系统编译环境
yum install -y automake autoconf libtool gcc gcc-c ++ #CentOS
需要编译的源程序包
#yasm: 汇编程序,新版本的ffmpeg添加了汇编代码
wget
tar -xzvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./配置
制作
进行安装
#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
#Load配置
##最终写完配置后,终端运行ffmpeg命令,成功并显示已安装的扩展名,并且操作成功.
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: 加载共享库时出错: libmp3lame.so.0: 无法打开共享库文件: 没有这样的文件或目录”和其他类似的错误,解决方法是建立软链接:
附录2. 如果出现以下提示: ffmpeg: 加载共享库时出错: libavdevice.so.54: 无法打开共享对象文件: 没有此类文件或目录
您可以通过以下方式检查找不到ffmpeg的动态链接库:
ldd哪个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
#View链接库配置文件
more /etc/ld.so.conf | grep /usr/local/lib
##如果不包括在内,则需要编辑此文章以添加:
vi /etc/ld.so.conf
/usr/local/lib
/usr/local/lib64
#Run配置命令

ldconfig
关于ffmpeg简介:
FFmpeg是一种开源且免费的跨平台视频和音频流解决方案. 它属于免费软件,并且使用LGPL或GPL许可(取决于您选择的组件). 它提供了用于记录,转换和流式传输音频和视频的完整解决方案. 它包含非常高级的音频/视频编库libavcodec. 为了确保较高的可移植性和编质量,libavcodec中的许多编都是从头开始开发的. 它的官方网站是:
最后,一些内容引用
第二,使用ffmpeg命令
第一步之后,您可以使用ffmpeg --help来查看其是否正确安装. 如果没有,请检查是否忘记安装
使用转换的指令是ffmpeg -i 1.amr 2.mp3
会将1.amr转换为2.mp3
三,使用php执行linux命令ffmpeg
当然,文件的转换不能通过在服务器上运行linux命令来完成,因此我们使用php执行linux命令来处理amr文件
使用系统功能执行
PHP代码
view plain copy
$amr = './'.$vo['voice'];
$mp3 = $amr.'.mp3';
if(file_exists($mp3) == true){
// exit('无需转换');
}else{
$command = "/usr/local/bin/ffmpeg -i $amr $mp3";
system($command,$error);
}
仔细查看代码. 我使用/ usr / local / bin / ffmpeg来执行它,因为我不能使用php直接运行ffmpeg命令. 如果您的命令不在此目录中,则可以使用定位或查找来找到ffmpeg所在的目录
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-226328-1.html
要什么大国形象
是人的基本需要
我是农民我不懂理财