Centos下安装只需要参考这篇官方教程即可:Compile FFmpeg on CentOS
注意可以通过本机先git下载后上传到服务器上,防止被墙,部分无法下载或者下载缓慢可用迅雷下载,比如libogg和ffmpeg-snapshot.tar.bz2
本机环境是Centos6.8 minimal 64位,说下在原教程上需要注意的几个地方:
一、关闭SELINUX
sed -i 's/SELINUX=enforcing/#SELINUX=enforcing/g' /etc/selinux/config sed -i 's/SELINUXTYPE=targeted/#SELINUXTYPE=targeted/g' /etc/selinux/config sed -i '$a SELINUX=disabled' /etc/selinux/config setenforce 0
二、libopus git clone很慢,注意等待
三、尽量用最新版本
libvorbis版本应该有更新,用最新版本,其他组件也到官方看下,用最新的版本
libvorbis
四、libvpx:这个步骤有坑:###
- 用官方上的
./configure
参数根本无法编译通过,最后换成了下方的(加了参数--enable-shared
):
./configure --prefix="$HOME/ffmpeg_build" --disable-examples --enable-shared
- libvpx的google的git地址无法下载(已fq也无法clone成功),换成了github的(是同步的):
git clone --depth 1 https://github.com/webmproject/libvpx.git
cd /usr/local/src/libvpx-v1.3.0 ./configure --prefix=/usr/local/libvpx --enable-shared --enable-vp9
- 如果还是无法编译通过就使用yum安装
yum install libvpx.x86_64 libvpx-devel.x86_64
五、ffmpge安装后无法找到库
安装完成后,如果输入 ffmpeg -h
提示无法找到 libvpx.so.4
,需要将 /root/ffmpeg_build/lib
加入到动态库清单:
vi /etc/ld.so.conf.d/ffmpeg.conf #将 /root/ffmpeg_build/lib 添加进去保存 ldconfig #生效
编译安装ffmpge的时候,记得使用make -j多核编译
六、参考资料
- https://www.v2ex.com/t/201662
- php调用FFmpeg的问题
- PHP调用FFmpeg视频截图
- FFmpeg获取视频播放时长
- 视频播放进度条无法拖动
- PHP+ FFmpeg自动转码H264标准Mp4文件
- FFmpeg转码使用多核
- 参数参考
七、ffmpeg命令使用
#转码,尺寸640*480,会自动保持比例,-y表示覆盖已经存在的文件、-v quiet表示静默、-threads 2表示使用多核、-preset后面的参数表示压缩的速度,参考最后一个参考资料 ffmpeg -y -v quiet -threads 4 -i test.VOB -c:v libx264 -preset veryfast -movflags faststart -strict -2 -s 640x480 test.mp4 #截图,截取3秒处的图,尺寸320*240 ffmpeg -i test.VOB -y -f mjpeg -ss 3 -t 0.001 -s 320x240 test.jpg
记得将php用户加入sudo下方有说明,PHP调用记得在命令后面加 &
防止脚本被挂起
$cmd = "sudo /root/bin/ffmpeg -y -v quiet -threads 4 -i test.VOB -c:v libx264 -movflags faststart -strict -2 -s 640x480 test.mp4 > /dev/null 2>&1 &"; pclose(popen($cmd,"r"));
如果不想将PHP-fpm用户加入sudo,在最后编译安装ffmpge的时候将--bindir="$HOME/bin"
改成 --bindir="/usr/local/bin"
看看,待测试