• ubuntu上安装ffmpeg


    安装包和主要步骤:

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

    RHEL & CentOS 系列:yum install -y automake autoconf libtool gcc gcc-c++

    Debian & Ubuntu 系列:apt-get install automake autoconf libtool gcc gcc-c++

    2. 下载最新的FFMpeg源码包

    FFMpeg官方下载地址:http://ffmpeg.org/download.html

    一般直接使用最新版本,下载完成后解压缩,进入源码文件夹,运行“./configure --help”查看帮助,这里主要是为了确认需要安装的扩展,有些扩展默认是已经开启的,有些是需要单独下载扩展源码包进行编译的。以我的需求为例,需要单独编译yasm、lame、OenCore AMR、AmrNB和AmrWB,其中lame是MP3解码器。

    3. 编译所需源码包

    从各个官方地址下载上述五种源码包,为了保证兼容最新版本的ffmpeg,请务必也下载最新版本的源码:

    yasm:http://yasm.tortall.net/Download.html

    lame:http://lame.sourceforge.net/download.php

    OenCore AMR:http://sourceforge.net/projects/opencore-amr

    AmrNB & AmrWB:http://www.penguin.cz/~utx/amr

    分别解压缩并编译上述源码包,直接使用“./configure && make && make install”即可。

    4. 编译FFMpef

    回到刚才的FFMpeg源码目录,打开所需扩展并且编译FFMpeg:

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

    make && make install

    ldconfig

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

    5. 可能遇到的问题

    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

    mv /usr/local/lib/libmp3lame.so.0.0.0 /usr/lib64/libmp3lame.so.0

    6. 使用方法

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

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

    遇到问题及解决:

    1. ERROR: libopenjpeg not found

    http://code.google.com/p/openjpeg/downloads/detail?name=openjpeg-1.5.1.tar.gz&can=2&q=

    下载openjpeg-1.5.1的代码,注意不要下载openjpeg-2.0的,否则ffmpeg跟openjpeg的接口不支持,编译会处错误。

    configure 
    make,make install

    找到头文件是在/usr/local/include/openjpeg-1.5.1下面,而ffmpeg在连接的时候,其实是/usr/local/include,所以提示说“ERROR: libopenjpeg not found”。将/usr/local/include/openjpeg-1.5.1下面的头文件“openjpeg.h”拷贝到/usr/local/include下面。

    1,x264也是有这个问题,x264.h这个文件要放在/usr/local/include下,而不是在/usr/local/下单独建个子目录放。 其他的库都是在make install的时候自己建的子文件夹。

    需要将libx264的库文件拷贝到/usr/local/lib下
    或者直接在configure的时候,改变路径,如下所示:
    ./configure --includedir=/usr/local/include --libdir=/usr/local/lib --enable-shared
    即可。

    2. ERROR:libfdk_aac not found

    http://sourceforge.net/projects/opencore-amr/?source=directory

    下载fdk-aac-0.1.1.tar.gz 

    执行 

    configure

    make

    make install

    3. ERROR:libilbc not found

    https://github.com/dekkers/libilbc

    git clone git://github.com/dekkers/libilbc.git

    解压

    安装cmake,如下所示

    sudo apt-get install cmake

    创建一个build目录,执行:

    cd build
    cmake ..           (这里的..意思是,如果是一个.表示CMakeLists.txt在当前路径下,两个..表示CMakeLists.txt在上一层目录下)

    cmake install ..
    make                (在build/bin下会找到可执行文件。)

    make install      (将生成的库拷贝到linux相关目录下)

    4. ERROR: libmp3lame >= 3.98.3 not found

    sudo apt-get install libmp3lame-dev

    5. ERROR: libopencore_amrnb not found

    sudo apt-get install libx264-dev libxvidcore-dev libopencore-amrwb-dev libopencore-amrnb-dev libfaad-dev libfaac-dev libmp3lame-dev 
    libtwolame-dev liba52-0.7.4-dev libcddb2-dev libcdaudio-dev libcdio-cdda-dev libvorbis-dev libopenjpeg-dev

    (5) git chone git://git.videolan.org/x264.git
    configure
    make && make install
    (6) ERROR: libvo_aacenc not found
    http://sourceforge.net/projects/opencore-amr/files/vo-aacenc/vo-aacenc-0.1.2.tar.gz/download
    (7) ERROR: libvo_amrwbenc not found
    http://sourceforge.net/projects/opencore-amr/files/vo-amrwbenc/
    (8) ERROR: libvpx decoder version must be >=0.9.1
    http://code.google.com/p/webm/downloads/detail?name=libvpx-v1.1.0.tar.bz2&can=2&q=
    (9)编译 ffplay 需要 libsdl1.2-dev 库:
    sudo apt-get install libsdl1.2-dev (10)ffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object file

    Solution:
    Search the file libavdevice.so.52 on the server using the ‘find’ command

    1
    # find / -name libavdevice.so.52

    You need to add the path to the directory the file is in, in the ‘ld.so.conf’ file. If for example the file is located under “/usr/local/lib” directory, execute

    1
    # vi /etc/ld.so.conf

    and add the following at the bottom of the file

     
    /usr/local/lib

    7. Encoder (codec id 86017) not found for output stream #0.0

    解决方案:http://diogomelo.net/blog/11/encoder-codec-id-86017-not-found-output-stream-00-compile-ffmpeg-yourself

  • 相关阅读:
    网易云课堂--妙味 《js基础课程》
    salesforce 零基础学习(五十八)通过sObject的field返回其对应的基础类型
    salesforce 零基础学习(五十七)Test 类中创建TestUser帮助类
    salesforce 零基础学习(五十六)实现getById
    salesforce 零基础学习(五十五)java通过SOAP方式定时访问某个文件然后插入到sObject中
    salesforce 零基础学习(五十四)常见异常友好消息提示
    salesforce 零基础学习(五十三)多个文件生成一个zip文件(使用git上封装的代码)
    salesforce 零基础学习(五十二)Trigger使用篇(二)
    salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)
    salesforce 零基础学习(五十)自定义View或者List以及查看系统原来的View或者List
  • 原文地址:https://www.cnblogs.com/tkppain/p/4461855.html
Copyright © 2020-2023  润新知