zoukankan      html  css  js  c++  java
  • linux下使用ffmpeg将amr转成mp3

    说明:
    AMR格式是智能手机上的常用音频文件格式,比MP3格式的压缩比大。同样时长的AMR文件大概是MP3的十分之一,所以在移动互联项目中应用比较广泛。但目前AMR格式在个人电脑上应用较少,所以目前大部门播放器都不支持AMR,为了解决这个问题我们打算在服务器端将AMR转成MP3,以便在个人电脑上通过浏览器的方式进行播放。最近公司一款基于移动互联网的产品有个短暂的录音(留言)功能,因为录音需要传输到服务器上,所以为了用户体验及节省用户流量,我们采用了AMR的语音格式。

    目前并没有找到合适的支持AMR转MP3的java的开发包,服务器环境为CentOS 6.2,所以我们采用了ffmpeg。
    FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。其官方网址为:http://www.ffmpeg.org/

    实现:
    1. 首先安装系统基础环境

    # yum install -y automake autoconf libtool gcc gcc-c++  //RHEL & CentOS 系列 # apt-get install automake autoconf libtool gcc gcc-c++  //Debian & Ubuntu 系列

     
    2. 编译所需源码包

    yasmhttp://yasm.tortall.net/Download.html(汇编器,新版本的ffmpeg增加了汇编代码) 
    lamehttp://lame.sourceforge.net/download.php(Mp3音频解码) 
    OpenCore AMRhttp://sourceforge.net/projects/opencore-amr 
    AmrNBhttp://www.penguin.cz/~utx/amr 
    AmrWBhttp://www.penguin.cz/~utx/amr 
    FFMpeghttp://ffmpeg.org/download.html  分别解压缩并编译上述源码包 
    # tar xzvf *.tar.gz # tar xjvf *.tar.bz2  解压后直接使用 
    # ./configure # make # make install 命令进行编译安装。
     编译FFMpef的时候稍微特殊一点: 
    # ./configure --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared # make # make install 
    # ldconfig  最后写入config后,终端运行ffmpeg命令,出现success和已安装的扩展,则运行成功。

     
    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) 
    如果类似于上面的输出内容,查找以上类库: 
    # 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 会发现全部在/usr/local/lib/下 查看链接库配置文件 
    # more  /etc/ld.so.conf | grep /usr/local/lib  
    如果不包含的话,需要编辑此文添加: /usr/local/lib /usr/local/lib64  
    运行配置命令 # ldconfig

    转自:http://linux.it.net.cn/e/Linuxit/2014/0828/3980.html
  • 相关阅读:
    C++ 算法03算法设计的常用思想
    C++ 算法02算法设计的基础
    C++ 算法01
    字符串Hash入门
    CSP2020总结
    关于树状数组的应用
    Cookies题解
    博客迁移
    斜率优化(转载)
    单调队列优化和决策单调性优化
  • 原文地址:https://www.cnblogs.com/jym-sunshine/p/6044708.html
Copyright © 2011-2022 走看看