Linux系统手动编译安装FFmpeg与ffmpeg-php扩展完整指南
在Linux服务器上进行视频处理任务时,手动编译安装FFmpeg及其PHP扩展ffmpeg-php,是许多高级开发者和系统管理员偏爱的部署方式。这种方法虽然步骤较多,但能够提供更好的环境控制和版本定制能力。本文将详细解析完整的安装流程,并重点解决编译过程中常见的疑难问题。
首先,我们需要获取两个核心组件的源代码包:FFmpeg主程序和ffmpeg-php扩展模块。建议从官方或可靠的镜像源下载最新稳定版本:

#wget https://www.ffmpeg.org/releases/ffmpeg-export-snapshot.tar.bz2
#wget https://downloads.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2?use_mirror=ncu
第一步:编译安装FFmpeg主程序
获得源码包后,首先安装FFmpeg核心程序。遵循标准的Linux软件编译流程:解压、配置、编译、安装。
#tar -jxvf ffmpeg-export-snapshot.tar.bz2
#cd ffmpeg
#./configure --prefix=/usr/local/ffmpeg --disable-yasm --enable-shared
#make && make install
安装完成后,必须配置系统的动态链接库路径,确保应用程序能够正确找到FFmpeg的共享库文件:
#echo "/usr/local/lib" > /etc/ld.so.conf.d/ffmpeg.conf
#ldconfig -v
最后,通过运行版本检查命令验证FFmpeg是否安装成功。如果终端显示详细的版本信息和编译配置选项,则表明基础视频处理环境已准备就绪:
#/usr/local/ffmpeg/bin/ffmpegFFmpeg version SVN-r22144-snapshot, Copyright (c) 2000-2010 the FFmpeg developers
built on Mar 30 2010 23:53:53 with gcc 4.1.2 20080704 (Red Hat 4.1.2-46)
configuration: --prefix=/usr/local --enable-shared
liba vutil 50. 9. 0 / 50. 9. 0
liba vcodec 52.55. 0 / 52.55. 0
liba vformat 52.54. 0 / 52.54. 0
liba vdevice 52. 2. 0 / 52. 2. 0
libswscale 0.10. 0 / 0.10. 0
第二步:编译安装ffmpeg-php扩展模块
主程序安装成功后,接下来需要构建PHP与FFmpeg之间的桥梁——ffmpeg-php扩展。步骤类似,但此环节更容易出现编译错误。
#tar -jxvf ffmpeg-php-0.6.0.tbz2
#cd ffmepg-php
#/usr/local/php/bin/phpize
#./configure --with-php-config=/usr/local/php/bin/php-config --with-ffmpeg=/usr/local/ffmepg
#make && make install
在执行`make`命令时,很可能会遇到一系列错误提示,格式通常为“make: *** [xxx.lo] 错误 1”。这是ffmpeg-php扩展编译过程中的一个典型问题,其解决方案具有明确的规律性。
报错情况:make: *** [ffmpeg-php.lo] 错误 1
解决方案:
# mv ffmpeg-php.loT ffmpeg-php.lo
报错情况:make: *** [ffmpeg_movie.lo] 错误 1
解决方案:
# mv ffmpeg_movie.loT ffmpeg_movie.lo
报错情况:make: *** [ffmpeg_frame.lo] 错误 1
解决方案:
# mv ffmpeg_frame.loT ffmpeg_frame.lo
报错情况:make: *** [ffmpeg_errorhandler.lo] 错误 1
解决方案:
# mv ffmpeg_errorhandler.loT ffmpeg_errorhandler.lo
报错情况:make: *** [ffmpeg_tools.lo] 错误 1
解决方案:
# mv ffmpeg_tools.loT ffmpeg_tools.lo
问题的根源在于编译脚本未能正确重命名临时文件。编译过程中生成的`.loT`文件需要手动重命名为`.lo`文件。请根据报错顺序,逐一执行上述重命名操作,然后重新运行`make`命令,直至所有错误被修复,最终成功完成`make install`。
第三步:在PHP中配置并启用扩展
扩展模块编译安装完成后,只需在PHP的配置文件`php.ini`中添加一行配置即可激活ffmpeg-php扩展:
在php.ini中加入extension=ffmpeg.so
至此,整个手动编译安装流程全部结束。重启您的PHP服务(例如PHP-FPM、Apache或Nginx),即可在PHP脚本中调用FFmpeg库进行视频转码、截图、获取元信息等高级操作。尽管此过程比直接使用包管理器安装更为复杂,但它赋予了开发者对软件版本和编译参数的完全控制权,对于追求稳定性和定制化的生产服务器环境而言,是一种非常专业和可靠的部署方案。
