天天看点

linux非root用户从源码编译安装ffmpeg及添加h264(AVC)和265(HEVC)支持前言安装步骤遇到的问题及解决办法

目录

  • 前言
  • 安装步骤
    • yasm
    • nasm
    • x264
    • x265
    • ffmpeg
  • 遇到的问题及解决办法

前言

当linux用户没有root权限时,可通过源码编译安装ffmpeg等工具,通过手动设置安装路径实现安装到用户指定目录下。然而ffmpeg的linux源码是不包含x264和x265编码器的,一旦处理到h264或h265的视频的时候就会报错,因此需要手动下载安装相应的库。本文记录了我的安装过程以及踩过的坑。

安装步骤

yasm

1.下载链接

2. 解压

tar -xzvf yasm-1.3.0.tar.gz

3. 安装

cd yasm-1.3.0
./configure --prefix=yasm安装路径
make 或 make -j8
make install
vi ~/.bashrc
末行添加 export PATH=yasm安装路径/bin:$PATH
source ~/.bashrc
           

nasm

该步骤可选,如果装 x264提示

Found no assembler Minimum version is yasm-1.2.0. If you really want to compile without asm, configure with --disable-asm

了,就回来装nasm吧,我看了x264的configure文件才发现里面没有enable-yasm这个参数。

  1. 下载链接
  2. 解压,

    tar -jxvf nasm-2.15.tar.bz2

  3. 安装
cd nasm-2.15.tar.bz2
./configure --prefix=nasm安装路径
make install
vi ~/.bashrc
末行添加 export PATH=nasm安装路径/bin:$PATH
source ~/.bashrc
           

x264

  1. 下载libx264(下载链接)
  2. 解压

    tar -jxvf x264-master.tar.bz2

  3. 安装
cd  x264-master
./configure --prefix=x264安装路径  --enable-shared --enable-static --enable-yasm
make 或 make -j8
make install
           

x265

  1. 下载libx265(下载链接)。如果网址挂了可能是仓库改名字了,进

    https://bitbucket.org/multicoreware

    搜x265找到对应仓库,进入仓库后在左侧菜单找到download下载最新的x265压缩包
  2. 解压

    x265_3.5.tar.gz

  3. 安装
cd x265_3.5/build/linux
#注意这里会进入交互模式,按照界面下方的文字指导操作,注意修改安装路径,修改后按c键进行设置,再按g键生成。
./make-Makefiles.bash
make 或 make -j8
make install

vi ~/.bashrc
末行添加 export PKG_CONFIG_PATH=x265安装路径/lib/pkgconfig 和 export LD_LIBRARY_PATH=x265安装路径/lib:$LD_LIBRARY_PATH
source ~/.bashrc 

           

注意:这里如果没加环境变量

export PKG_CONFIG_PATH=x265安装路径/lib/pkgconfig

会报错

ERROR: x265 not found using pkg-config

,没加

export LD_LIBRARY_PATH=x265安装路径/lib:$LD_LIBRARY_PATH

会报错

libx265.so.199: cannot open shared object file: No such file or directory

ffmpeg

  1. 下载ffmpeg,下载链接
  2. 解压

    tar -jxvf ffmpeg-snapshot.tar.bz2

  3. 安装,ffmpeg的make相当慢…
cd ffmpeg-snapshot
./configure --prefix=ffmpeg安装路径 --enable-shared --enable-nonfree --enable-libfreetype --enable-yasm --enable-libx264 --enable-libx265 --enable-gpl --enable-pthreads --extra-cflags=-I/x264安装路径/include --extra-ldflags=-L/x264安装路径/lib --extra-cflags=-I/x265安装路径/include --extra-ldflags=-L/x265安装路径/lib
make 或 make -j8
make install
vi ~/.bashrc
末行添加 export PATH=ffmpeg安装路径/bin:$PATH 和 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:ffmpeg安装路径/lib
source ~/.bashrc
           

然后打印一下

ffmpeg --version

,有版本信息就是成功了,基本大功告成。

遇到的问题及解决办法

  1. 运行ffmpeg处理视频时,如果遇到

    Error while opening encoder for output stream #0.0 - maybe incorrect parameters such as bit_rate, rate, width or height

    ,有可能是输出包含音频流和视频流,但是没有对音频流进行编码,解决方法:在ffmpeg命令里加入

    -acodec copy

    。eg:

    ffmpeg -i input.mkv -vf scale=720:-1 -acodec copy -threads 12 output.mkv

  2. 错误:

    libx265.so.199: cannot open shared object file: No such file or directory

    ,解决办法:环境变量加入

    export LD_LIBRARY_PATH=x265安装路径/lib:$LD_LIBRARY_PATH

  3. 错误:

    ERROR: x265 not found using pkg-config

    ,解决办法:加环境变量

    export PKG_CONFIG_PATH=x265安装路径/lib/pkgconfig

  4. 错误:

    can not be used when making a shared object; recompile with -fPIC

    ,解决办法:

    make clean

    ,然后重新make。

继续阅读