之前在“我的ffmpeg爬坑之路”里用的是shell脚本一键安装的,现在我有新需求了,需要压缩视频,由于有的视频很大,有200M,播放很卡(PS:而且服务器配置低),于是我需要对视频进行压缩,而且清晰度也不能太差,于是我找到下面的一个命令:
ffmpeg -i original_video.mp4 -c:v libx265 -x265-params crf=18:preset=placebo yasuo_video.mp4
结果报错:
我百度了一下,说是ffmpeg编译的时候缺少 x265编码库,于是我就安装x265编码库,同时也安装了libx264
安装步骤:
一 安装libx264
libx264 需要使用nasm依赖,所以先安装nasm
$ wget https://www.nasm.us/pub/nasm/releasebuilds/2.14/nasm-2.14.tar.gz
$ cd nasm-2.14
$ ./configure
#第一次安装执行如下命令:
$ make && sudo make install
#如果安装过执行如下命令:
$ sudo make clean && make && sudo make install
安装libx264
$ git clone https://code.videolan.org/videolan/x264.git
$ cd x264
// 如果不将include和lib安装在/usr/local目录,之后运行ffmpeg命令时可能仍然报错误
$ ./configure --prefix=/usr/x264/ --includedir=/usr/local/include --libdir=/usr/local/lib --enable-shared
#第一次安装执行如下命令:
$ make && sudo make install
#如果安装过执行如下命令:
$ sudo make clean && make && sudo make install
二 编译安装x265
wget https://download.videolan.org/videolan/x265/x265_3.2.tar.gz --no-check-certificate
tar -zxvf x265_3.2.tar.gz
cd x265_3.2
cd build/linux
./make-Makefiles.bash
make
make install
三 重新编译ffmpeg
$ wget http://ffmpeg.org/releases/ffmpeg-4.2.2.tar.bz2
$ taf -jxvf ffmpeg-4.2.2.tar.bz2
$ cd ffmpeg-4.2.2
//提示:--enable-(依赖扩展名) 自己需要那些依赖则加哪些依赖 以下是个例子
$ ./configure --prefix=/home/user/app/ffmpeg --enable-gpl --enable-version3 --enable-pthreads --enable-shared --enable-libmp3lame --enable-libx264 --enable-pic --enable-libfdk-aac --enable-openssl --enable-nonfree
//以下是我自己的实例
./configure --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared --enable-gpl --enable-libx264 --enable-libx265
#第一次安装执行如下命令:
$ make && sudo make install
#如果安装过执行如下命令:
$ sudo make clean && make && sudo make install
$ ldconfig
关键点说明:
1 ldconfig 一定要执行这个命令。
ldconfig命令 的用途主要是在默认搜寻目录/lib
和/usr/lib
以及动态库配置文件/etc/ld.so.conf
内所列的目录下,搜索出可共享的动态链接库(格式如lib.so),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。缓存文件默认为/etc/ld.so.cache
,此文件保存已排好序的动态链接库名字列表,为了让动态链接库为系统所共享,需运行动态链接库的管理命令ldconfig,此执行程序存放在/sbin
目录下。
ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令。
2 如果不知道之前ffmpeg编译用的参数,可以通过ffmpeg -version查看
3 应用到网站需要在PHP×设置中取消掉 scandir,exec、system、shell_exec函数。
遇到的错误总结:
1 缺少pkg-config
解决:编译安装pkg-config wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz 2 ffmpeg老版本报错:libavcodec/libx264.c:892:9: error: ‘x264_bit_depth‘ undeclared (first use in this function)
解决: 我版本ffmpeg-2.5.3,换成ffmpeg-4.2.2.就好了
3 ffmpeg -version报错
解决方法:执行ldconfig命令
4 ffmpeg -i 输入文件名 -c:v libx265 -x265-params crf=18 output/输出文件名.mp4 报错
解决方法:安装x265就可以