Centos7 安装FFmpeg踩坑记录

由于ffmpeg是一个视频编码和转码的工具,所以涉及到的编码和转码的C库非常多,可以针对我们所使用ffmpeg的场景来选择性编译安装,例如我需要将MP4切分为m3u8小文件,所以我需要使用到的命令如下:

ffmpeg -loglevel error -y -i Mp4视频绝对路径 -threads 5 -c:v libx264 -hls_time 20 -hls_list_size 0 -c:a aac -strict -2 -f hls xxx.m3u8
  • 常用的配置项解释

  • -loglevel error 定义日志的输出级别

  • -threads 定义线程数

  • -y 覆盖

可以看到很多转码编码的参数,这个具体用到具体了解即可,接下来如果想使用上述的解码和编码库,那么应该如何安装呢?

Centos7 安装FFmpeg踩坑记录_第1张图片

  1. 首先安装ffmpeg源码包,依旧是老三步

./configure
make
make install

install 完成后,配置到环境变量即可

      2. 上述命令是最基础的源码包编译安装的过程,当然针对ffmpeg没那么简单,如果想实现mp4转m3u8我们还需要安装很多依赖库。同时编译命令也需要换成下面这

./configure --prefix=/opt/app/ffmpeg --enable-version3 --enable-libvpx --enable-libmp3lame --enable-libvorbis --enable-libx264 --enable-libxvid --enable-shared --enable-gpl --enable-postproc --enable-nonfree --enable-avfilter --enable-pthreads
# --prefix:指定安装目录# --enable-xxxx:开启一系列的依赖
  1. 如果不出意外那么一定会出意外,报错各种依赖库缺少,下面我已经整理出来了大部分,大家可以缺什么,装什么,然后返回执行2中到configure即可

Centos7 安装FFmpeg踩坑记录_第2张图片

  • yasm

    • 下载地址:http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz

    • 安装方式:老三步

  • lame

    • 下载地址:https://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz

    • 安装方式:老三步

  • libogg

    • 下载地址:https://ftp.osuosl.org/pub/xiph/releases/ogg/libogg-1.3.5.tar.gz

    • 安装方式:老三步

    • echo /usr/local/lib >> /etc/ld.so.conf; ldconfig

  • libvorbis

    • 下载地址:http://downloads.xiph.org/releases/vorbis/libvorbis-1.1.2.tar.gz

    • 安装方式:老三步

  • nasm

    • 下载地址:https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz

    • 安装方式:老三步

  • x264

    • 下载地址:https://code.videolan.org/videolan/x264.git

    • 安装方式:git clone下来或者网络不好直接访问链接下载压缩包,然后继续老三步

    • configure时需要指定--enable-shared

  • libvpx

    • 下载地址:https://github.com/webmproject/libvpx/archive/v1.7.0/libvpx-1.7.0.tar.gz

    • 安装方式:cd 到解压目录,sed -i 's/cp -p/cp/' build/make/Makefile && mkdir libvpx-build && cd libvpx-build && ../configure --enable-shared --disable-static&& make && make install

  • 报错:ERROR: libxvid not found

  • xvidcore

    • 下载地址:http://downloads.xvid.org/downloads/xvidcore-1.3.5.tar.gz

    • cd build/generic/
    • 安装方式:老三步

  • 特殊问题一:如果安装了某个依赖库,但是configure ffmpeg的时候依旧还是报错,那么需要:echo /usr/local/lib >> /etc/ld.so.conf; ldconfig

  • 特殊问题二:当一切依赖库都已经安装完成,不再报错那个xxx依赖not found了之后,执行ffmpeg命令的时候又报错:

ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open shared object file: No such file or directory

第一步:通过命令查看一下ffmpeg的依赖:ldd ffmpeg,就会发现什么什么.so not found

第二步:搜索一下在哪:find / -name 'libavdevice.so.58',找到所在位置后只需要添加到全局环境变量即可,例如添加到/etc/profile,export LD_LIBRARY_PATH=xxx.so所在的那个目录,然后在执行一下source /etc/profile即可

第三步:在执行ffmpeg命令即可

问题一:

  1. 先检查一下是否存在,一般安装目录在:
    /usr/local/lib,配置文件在:/etc/ld.so.conf文件中,将该目录加入到共享库的配置文件中

  2. 将动态库文件加入配置:执行vi /etc/ld.so.conf,在"include ld.so.conf.d/*.conf"下方增加"/usr/local/lib"。

  3. 将ffmpeg下lib也添加进去/opt/app/ffmpeg/lib

  4. ldconfig

问题二:

Centos7 安装FFmpeg踩坑记录_第3张图片

报x264_bit_depth声明未找到的问题,导致编译失败。
应该是x264某个版本之后哪位大神将原来的x264_bit_depth改成了大写的X264_BIT_DEPTH。所以一个思路找到这个定义修改之前的某个版本的x264重新clone下来进行编译。后来发现还有另外一种方法更为简便,就是直接修改libx264.c文件,将此文件中的所有x264_bit_depth直接替换为X264_BIT_DEPTH,然后重新进行编译。

你可能感兴趣的:(#,其它工具单点部署,centos)