zoukankan      html  css  js  c++  java
  • linux ffmpeg 源码安装教程

    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. 首先安装系统基础环境

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


    2. 编译所需源码包
    <pre>

    yasm:http://yasm.tortall.net/Download.html(汇编器,新版本的ffmpeg增加了汇编代码) wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
    lame:http://lame.sourceforge.net/download.php(Mp3音频解码) wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
    OpenCore AMR:http://sourceforge.net/projects/opencore-amr wget https://ncu.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.4.tar.gz
    AmrNB:http://www.penguin.cz/~utx/amr
    AmrWB:http://www.penguin.cz/~utx/amr
    FFMpeg:http://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和已安装的扩展,则运行成功。

    </pre>

    3.使用方法
    <pre>

    # ffmpeg -i 1.mp3 -ac 1 -ar 8000 1.amr //MP3转换AMR
    # ffmpeg -i 1.amr 1.mp3 //AMR转换MP3
    </pre>


    附录:
    附录1. ffmpeg默认安装目录为“/usr/local/lib”,有些64位系统下软件目录则为“/usr/lib64”,编译过程中可能会出现
    <pre>
    “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
    </pre>


    附录2. 如果出现以下提示:ffmpeg: error while loading shared libraries: libavdevice.so.54: cannot open shared object file: No such file or directory
    可以通过如下方式查看ffmpeg的动态链接库哪些没有找到:

    <pre>
    vi /etc/ld.so.conf

    加入:/usr/local/lib

    执行ldconfig
    </pre>


    <pre>
    [root@iZ238qupob7Z ffmpeg-3.2.2]# ffmpeg -i 22.amr 22.mp3
    ffmpeg version 3.2.2 Copyright (c) 2000-2016 the FFmpeg developers
    built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
    configuration: --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared
    libavutil 55. 34.100 / 55. 34.100
    libavcodec 57. 64.101 / 57. 64.101
    libavformat 57. 56.100 / 57. 56.100
    libavdevice 57. 1.100 / 57. 1.100
    libavfilter 6. 65.100 / 6. 65.100
    libswscale 4. 2.100 / 4. 2.100
    libswresample 2. 3.100 / 2. 3.100
    [amr @ 0xfde360] Estimating duration from bitrate, this may be inaccurate
    Input #0, amr, from '22.amr':
    Duration: 00:00:08.90, bitrate: 5 kb/s
    Stream #0:0: Audio: amr_nb (samr / 0x726D6173), 8000 Hz, mono, flt
    Output #0, mp3, to '22.mp3':
    Metadata:
    TSSE : Lavf57.56.100
    Stream #0:0: Audio: mp3 (libmp3lame), 8000 Hz, mono, fltp
    Metadata:
    encoder : Lavc57.64.101 libmp3lame
    Stream mapping:
    Stream #0:0 -> #0:0 (amr_nb (amrnb) -> mp3 (libmp3lame))
    Press [q] to stop, [?] for help
    22.amr: Input/output error
    size= 9kB time=00:00:08.93 bitrate= 8.4kbits/s speed= 174x
    </pre>


  • 相关阅读:
    Hibernate在自由状态和持久的状态转变
    JS日期时间选择器
    LevelDB初体验
    java多线程样例
    PHP 的解压缩ZipArchive中的extractTo()方法 LINUX+nginx环境中解压zip时文件丢失的问题
    JavaScript--基于对象的脚本语言学习笔记(三)
    什么是消息队列?
    android 环境使用smack 必须注冊的组件
    AssetManager asset的使用
    键盘过滤驱动
  • 原文地址:https://www.cnblogs.com/newmiracle/p/11872559.html
Copyright © 2011-2022 走看看