【总结】Ubuntu下ffmpeg自定义编译安装

Posted on Posted in 计算机5,534 views

零、环境

1、服务器采用腾讯云服务器[ dmidecode |more ]

    CPU:单核,最大 2000 MHz

    内存: 1 GB

2、系统

    Linux VM-122-135-ubuntu 3.13.0-36-generic

    #63-Ubuntu SMP Wed Sep 3 21:30:07 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

    root权限

3、软件版本

    ffmpeg-2.7.2

    nginx-1.8

    yasm-1.2.0

    essential-amd64-20071007

    amrnb-11.0.0.0

    amrwb-11.0.0.0

    fdk-aac-0.1.4

    libvorbis-1.3.5

    libtheora-1.1.1

    xvidcore-1.3.3

    last_stable_x264

    libvpx-1.4.0

    nginx_mod_h264_streaming-2.2.7

    nginx-rtmp-module

    ngx_cache_purge

    ckplayer6.7

4、目录结构

|---ffmpeg
       |---source     源文件目录
       |---web      页面目录
       |---install    安装目录

一、准备工作

1、跟新系统

apt-get update

2、卸载原有ffmpeg和h264

apt-get remove ffmpeg x264

3、修改系统路径

    因为是自定义安装到自身指定的目录ffmpeg/install目录,为了系统中直接使用,需要配置系统环境(原理和windows的环境目录path一样)。如果想直接安装到系统默认目录,则不需要配置,而且在第二节中所有依赖项的configure时,去掉–prefix设置。

# 查看当前PATH
echo $PATH
# 输出如:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

    为了方便,我们直接修改配置文件,而不是环境变量。对所有用户有效在etc/profile增加(单独so库可以使用etc/ld.so.conf文件配置)。如果只对当前用户有效在Home目录下的.bashrc或.bash_profile里增加。添加内容如下:

# 增加.so搜索路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/xiaoxia/biye/ffmpeg/install/share
# 增加.a搜索路径
export LIBRARY_PATH=$LIBRARY_PATH:/home/xiaoxia/biye/ffmpeg/install/lib
# 增加bin搜索路径
export PATH=$PATH:/home/xiaoxia/biye/ffmpeg/install/bin
# 增加GCC的include文件搜索路径
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/home/xiaoxia/biye/ffmpeg/install/include
# 增加G++的include文件搜索路径
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/home/xiaoxia/biye/ffmpeg/install/include

    然后通过以下命令更新:

# 更新路径:
source .bashrc
# 更新路径:
ldconfig

   或者对于单独的so类库可以直接加到系统配置:

#  添加系统类库
echo '/home/xiaoxia/biye/ffmpeg/install/lib'      >> /etc/ld.so.conf
ldconfig

二、依赖库安装

1、基础的libs

    gcc、make、bzip2、unzip、patch等基础程序和库需要安装,已经具备所以忽略。需要的可以参考如下:

apt-get install gcc make bzip2 unzip patch

    备注:gcc-编译器、make-负责项目组织、bzip2和unzip-负责(解)压缩、patch-负责打补丁相关。可能有些编解码库需要其他系统工具,可以按照需求来进行添加。

2、安装yasm

    Yasm是一个完全重写的NASM汇编。目前,它支持x86和AMD64指令集。

    在source目录下:

mkdir yasm && cd yasm 
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
tar zxvf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure --prefix=/home/xiaoxia/biye/ffmpeg/install
make && make install
# 检查是否安装成功
yasm --version

    yasm-1.2.0.tar.gz

3、安装Mplayer编码库(仅限于64位系统)

    为了方便,我们直接使用Mplayer的编码库

mkdir essential && cd essential
wget -c http://www2.mplayerhq.hu/MPlayer/releases/codecs/essential-amd64-20071007.tar.bz2
tar xvjf essential-amd64-20071007.tar.bz2
mkdir /home/xiaoxia/biye/ffmpeg/install/lib/codecs
cp -Rvp essential-amd64-20071007/* /home/xiaoxia/biye/ffmpeg/install/lib/codecs

    essential-amd64-20071007.tar.bz2

4、安装amrnb

    AMRxx是一个对 3GPP Adaptive Multi-Rate Floating-point (AMR) 语音编码的共享库封装。AMR NB的语音带宽范围:300-3400Hz,8KHz采样。

mkdir amrnb && cd amrnb
wget http://www.penguin.cz/~utx/ftp/amr/amrnb-11.0.0.0.tar.bz2
# 访问不了可以直接通过下方链接下载
tar xvjf amrnb-11.0.0.0.tar.bz2
cd amrnb-11.0.0.0/
./configure --prefix=/home/xiaoxia/biye/ffmpeg/install --with-pic --enable-shared
make && make install

    amrnb-11.0.0.0.tar.bz2

5、安装amrwb

    AMR WB的语音带宽范围: 50-7000Hz,16KHz采样。和amrnb同样的方式安装。

mkdir amrwb && cd amrwb
wget http://www.penguin.cz/~utx/ftp/amr/amrwb-11.0.0.0.tar.bz2
# 访问不了可以直接通过下方链接下载
tar xvjf amrwb-11.0.0.0.tar.bz2
cd amrwb-11.0.0.0/
./configure --prefix=/home/xiaoxia/biye/ffmpeg/install --with-pic --enable-shared
make && make install

    amrwb-11.0.0.0.tar.bz2

6、安装fdk-aac

    aac音频编码器。

mkdir fdk-aac && cd fdk-aac
wget http://downloads.sourceforge.net/project/opencore-amr/fdk-aac/fdk-aac-0.1.4.tar.gz
tar zxvf fdk-aac-0.1.4.tar.gz
cd fdk-aac-0.1.4/
./configure --prefix=/home/xiaoxia/biye/ffmpeg/install --with-pic --enable-shared
make && make install

    fdk-aac-0.1.4.tar

7、安装libogg-dev

    ogg音频编码器。包含了负责处理Ogg Vorbis文件的通用例程。

mkdir libogg-dev && cd libogg-dev
wget http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.gz
tar zxvf libogg-1.3.2.tar.gz
cd libogg-1.3.2/
./configure --prefix=/home/xiaoxia/biye/ffmpeg/install --with-pic --enable-shared
make && make install

    libogg-1.3.2.tar.gz

8、安装libvorbis

    ogg Vorbis音频编码器。包含了一些使用Vorbis进行解码时所必需的基础函数。

mkdir libvorbis && cd libvorbis
wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.gz
tar zxvf libvorbis-1.3.5.tar.gz
cd libvorbis-1.3.5/
./configure --prefix=/home/xiaoxia/biye/ffmpeg/install --with-pic --enable-shared
make && make install

    libvorbis-1.3.5.tar.gz

9、安装vorbis-tools

    

10、安装libtheora

    Theora是开放而且免费的视频压缩编码技术。Firefox和Opera将通过新的HTML5元素提供了对Ogg/Theora视频的原生支持。

mkdir libtheora && cd libtheora
wget http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2
tar xvjf libtheora-1.1.1.tar.bz2
cd libtheora-1.1.1/
./configure --prefix=/home/xiaoxia/biye/ffmpeg/install --with-pic --enable-shared
make && make install

    libtheora-1.1.1.tar.bz2

11、安装xvidcore

    XviD 是一款开源的MPEG-4视频编解码器。

mkdir xvidcore && cd xvidcore
wget http://downloads.xvid.org/downloads/xvidcore-1.3.3.tar.gz
tar zxvf xvidcore-1.3.3.tar.gz
cd xvidcore/build/generic
./configure --prefix=/home/xiaoxia/biye/ffmpeg/install
make && make install

    xvidcore-1.3.3.tar.gz

12、安装一些格式转换常用的编码库

    这些库运行依赖于之前安装的编解码实现库,这些库中大多是一些头文件、开发调用接口、转换或者配置等内容。简单理解为lib一个是程序运行时需要的库(运行库), 而lib-dev是编译源码时需要的库(开发库)。

apt-get install libmp3lame-dev \
    libfaac-dev \
    libtheora-dev \
    libvorbis-dev \
    libopencore-amrnb-dev \
    libopencore-amrwb-dev \
    libxvidcore-dev

    

13、安装x.264

    是H.264视频编码器。

mkdir x264 && cd x264
wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
tar xvjf last_x264.tar.bz2
cd x264-snapshot-20151020-2245-stable/
./configure --prefix=/home/xiaoxia/biye/ffmpeg/install --enable-shared --enable-pic
make && make install

    last_stable_x264.tar.bz2

    

14、安装libvpx

    VP8编码解码器

mkdir libvpx && cd libvpx
wget http://webm.googlecode.com/files/libvpx-v1.4.0.tar.bz2
tar xvjf libvpx-v1.4.0.tar.bz2
cd libvpx-v1.4.0/
./configure --prefix=/home/xiaoxia/biye/ffmpeg/install --enable-shared --enable-pic
make && make install

    libvpx-1.4.0.tar.bz2

15、安装libopenh264

    和x.264一样,是h264编码器。

# 需要nasm、pkg-config支持
apt-get install nasm
apt-get install pkg-config
cd source
git clone https://github.com/cisco/openh264.git
cd openh264
vi Makefile 
# 修改24行,PREFIX=/home/xiaoxia/biye/ffmpeg/install
make && make install

    openh264-1.4.zip

其他音视频编解码库可以根据自身需求进行编译安装。下载地址可在 参考-3对应的连接查找。

三、安装FFMPEG

    ffmpeg安装关键在于编解码库和配置,根据自己的使用需求可以自己定义。

1、下载ffmpeg

mkdir ffmpeg && cd ffmpeg
wget http://ffmpeg.org/releases/ffmpeg-2.7.2.tar.bz2
tar xvjf ffmpeg-2.7.2.tar.bz2
cd ffmpeg-2.7.2

    ffmpeg-2.7.2.tar.bz2

2、配置

    配置时来确定使用哪些编解码器,本次配置如下:

./configure \
 --prefix=/home/xiaoxia/biye/ffmpeg/install \
 --enable-gpl \
 --enable-version3 \
 --enable-postproc \
 --enable-nonfree \
 --enable-shared \
 --enable-libfaac \
 --enable-libmp3lame \
 --enable-libopencore-amrnb \
 --enable-libopencore-amrwb \
 --enable-libtheora \
 --enable-libvorbis \
 --enable-libvpx \
 --enable-libx264 \
 --enable-libopenh264 \
 --enable-libxvid \
 --enable-ffserver \
 --enable-ffplay

    可能会有警告,可以忽略:

WARNING: pkg-config not found, library detection may fail.
WARNING: using libx264 without pkg-config

    问题1:ERROR: openh264 not found using pkg-config

    配置完成后,会自动列出将要应用的依赖等信息,可以根据这些信息核查。

3、编译安装

make
make install

4、测试

    在web目录下上传几个视频和音频文件,然后进行如下测试:

    A、利用ffmpeg推送flv待rtmp服务器

ffmpeg -re -i ./sea.flv -vcodec copy -acodec copy -f flv -y rtmp://xxxx:1935/live/livestream

    B、利用ffprobe获取mp3信息

ffprobe -v quiet -print_format json -show_format -show_streams ./audio.mp3

    1482147483219965.png

    C、利用ffmpeg转换视频文件格式从mp4转为flv

ffmpeg -i 230.mp4 -c:v libx264 -crf 24 mp42flv.flv

    1482148227618102.png

四、FFMPEG与NGINX做为媒体服务器

    3.4.A中测试和本节在下一篇文章中详细介绍。

    文章链接:https://blog.evanxia.com/2016/12/1225

参考

1、项目:https://git.oschina.net/evan-xia/x_1510_WebStream

2、http://blog.csdn.net/p081513083/article/details/46681541

3、http://www.th7.cn/system/lin/201507/122513.shtml

4、http://www.cnblogs.com/azraelly/archive/2012/12/31/2840541.html

5、http://www.cnblogs.com/wainiwann/p/4031129.html


转载标明出处:https://blog.evanxia.com/2016/12/1212