前言
当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这个参数。
- 下载链接
- 解压,
tar -jxvf nasm-2.15.tar.bz2
- 安装
cd nasm-2.15.tar.bz2
./configure --prefix=nasm安装路径
make install
vi ~/.bashrc
末行添加 export PATH=nasm安装路径/bin:$PATH
source ~/.bashrc
x264
- 下载libx264(下载链接)
- 解压
tar -jxvf x264-master.tar.bz2
- 安装
cd x264-master
./configure --prefix=x264安装路径 --enable-shared --enable-static --enable-yasm
make 或 make -j8
make install
x265
- 下载libx265(下载链接)。如果网址挂了可能是仓库改名字了,进
https://bitbucket.org/multicoreware
搜x265找到对应仓库,进入仓库后在左侧菜单找到download下载最新的x265压缩包 - 解压
x265_3.5.tar.gz
- 安装
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
- 下载ffmpeg,下载链接
- 解压
tar -jxvf ffmpeg-snapshot.tar.bz2
- 安装,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
,有版本信息就是成功了,基本大功告成。
遇到的问题及解决办法
- 运行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
。 - 错误:
libx265.so.199: cannot open shared object file: No such file or directory
,解决办法:环境变量加入export LD_LIBRARY_PATH=x265安装路径/lib:$LD_LIBRARY_PATH
。 - 错误:
ERROR: x265 not found using pkg-config
,解决办法:加环境变量export PKG_CONFIG_PATH=x265安装路径/lib/pkgconfig
。 - 错误:
can not be used when making a shared object; recompile with -fPIC
,解决办法:make clean
,然后重新make。