最近服务器升级到了centos7.6版本,升级后发现过去的一部分软件安装方式在新版本中用起来很麻烦,而且很多软件在centos7.6中因为缺少库文件的支持(或者被新版本替换)而导致安装失败。因此本篇笔记不在于ffmpeg的安装,而在于更换软件源。ffmpeg的安装仅仅是个例子。
在此之前波波尝试了将软件源更新为阿里镜像、网易镜像,均发现相关库文件较少,最起码执行“yum list *ffmpeg*”的时候发现ffmpeg的库文件是没有的。
第一步:在CentOS 7上启用Nux Dextop repo
它是第三方RPM存储库,包含许多用于CentOS版本的流行多媒体相关软件包。只有在服务器中启用了EPEL repo时,此repo才起作用。安装方法如下:
- yum -y install epel-release
- // ---centos7执行下面两行---
- rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
- rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
- // ---centos6执行下面两行---
- rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
- rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm
第二步:安装ffmpeg
- yum install ffmpeg ffmpeg-devel -y
安装完成我们可以在命令行键入“ffmpeg -h”查看下帮助菜单,找一个测试视频转码试试。具体命令不再细说。
除了这种安装方式之外,我们当然还可以用最保守的编译安装。不过说实话有时候找支持库真浪费时间。
- #安装必要的依赖库
- yum install autoconf automake bzip2 cmake freetype-devel gcc gcc-c++ git libtool make mercurial pkgconfig zlib-devel cmake hg numactl numactl-devel freetype freetype-devel freetype-demos
建一个目录用于存放ffmpeg的源代码,比如/data/ffmpeg_resource。用git cloune或wget或curl获取ffmpeg的源代码。
先安装相关支持库。
- #编译前先卸载我们刚刚的yum安装
- yum remove ffmpeg ffmpeg-devel nasm -y
- cd /data/ffmpeg_sources //切换目录
- #安装nsam
- curl -O -L http://www.nasm.us/pub/nasm/releasebuilds/2.13.02/nasm-2.13.02.tar.bz2
- tar xjvf nasm-2.13.02.tar.bz2
- cd nasm-2.13.02
- ./autogen.sh
- ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
- make
- make install
- #安装yasm
- curl -O -L http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
- tar xzvf yasm-1.3.0.tar.gz
- cd yasm-1.3.0
- ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
- make
- make install
- #安装libx264
- git clone --depth 1 http://git.videolan.org/git/x264
- cd x264
- PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
- make
- make install
- #安装libx265
- hg clone https://bitbucket.org/multicoreware/x265
- cd /data/ffmpeg_sources/x265/build/linux
- cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
- make
- make install
- #安装libfdk_aac
- cd /data/ffmpeg_sources
- git clone --depth 1 https://github.com/mstorsjo/fdk-aac
- cd fdk-aac
- autoreconf -fiv
- ./configure --prefix="$HOME/ffmpeg_build" --disable-shared
- make
- make install
- #安装libmp3lame
- curl -O -L http://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
- tar xzvf lame-3.100.tar.gz
- cd lame-3.100
- ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm
- make
- make install
- #安装libopus
- cd ..
- curl -O -L https://archive.mozilla.org/pub/opus/opus-1.2.1.tar.gz
- tar xzvf opus-1.2.1.tar.gz
- cd opus-1.2.1
- ./configure --prefix="$HOME/ffmpeg_build" --disable-shared
- make
- make install
- #安装libogg
- cd /data/ffmpeg_sources
- curl -O -L http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.gz
- tar xzvf libogg-1.3.3.tar.gz
- cd libogg-1.3.3
- ./configure --prefix="$HOME/ffmpeg_build" --disable-shared
- make
- make install
- #安装libvorbis
- cd /data/ffmpeg_sources
- curl -O -L http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.gz
- tar xzvf libvorbis-1.3.5.tar.gz
- cd libvorbis-1.3.5
- ./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-shared
- make
- make install
- #安装libvpx
- cd /data/ffmpeg_sources
- wget https://github.com/webmproject/libvpx/archive/v1.7.0.tar.gz
- tar zxvf v1.7.0.tar.gz
- mv libvpx-1.7.0 libvpx
- cd libvpx
- ./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-shared
- make
- make install
虽然波波分享了编译安装的方法,但比起yum安装还是建议大家选第一种,编译真是太浪费时间,现在是下午16:37折腾了差不多1天了。中间还重装了一次服务器系统。
接下来编译安装FFMPEG:
- cd /data/ffmpeg_sources
- curl -O -L https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
- tar xjvf ffmpeg-snapshot.tar.bz2
- cd ffmpeg
- PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
- --prefix="$HOME/ffmpeg_build" \
- --pkg-config-flags="--static" \
- --extra-cflags="-I$HOME/ffmpeg_build/include" \
- --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
- --extra-libs=-lpthread \
- --extra-libs=-lm \
- --bindir="$HOME/bin" \
- --enable-gpl \
- --enable-libfdk_aac \
- --enable-libfreetype \
- --enable-libmp3lame \
- --enable-libopus \
- --enable-libvorbis \
- --enable-libvpx \
- --enable-libx264 \
- --enable-libx265 \
- --enable-nonfree
- make -j6 && make install
- hash -r
终于折腾完了,记得hash -r这一行一定要加上。否则识别不了。