Linux 下安装 FFmpeg 和 FFmpeg-php

▪ 环境

操作系统:CentOS 7.6
PHP 版本: 7.1.19

 

▪ FFmpeg 介绍

FFmpeg 是一个很强大的音视频处理工具,官网介绍 FFmpeg 是:一个完整的、跨平台的解决方案,可以记录、转换和传输音频和视频。FFmpeg既可以播放视频,也提供命令行工具来处理视频,另外还有强大的视频处理库用于开发,下面是以 Linux 为例介绍 FFmpeg 的安装流程的简单的命令行对视频进行转码操作,是 FFmpeg 中最最简单的入门内容。

FFmpeg 官网地址:http://ffmpeg.org/

 

▪ FFmpeg 安装

1、下载并安装

cd /usr/local/src
wget https://ffmpeg.org/releases/ffmpeg-4.2.3.tar.gz
tar -zxvf ffmpeg-4.2.3.tar.gz

cd ffmpeg-4.2.3
./configure --enable-shared --prefix=/usr/local/ffmpeg
make && make install

--enable-shared 参数据说是允许其编译产生动态库,在以后的编程中要用到这个几个动态库
--prefix 用于设置 FFmpeg 的安装目录,目前使用过来如果设置后再进行 ffmpeg-php 安装时会出现需要 --enable-shared

安装时异常:提示因为缺少 yasm 或者该包旧了,执行以下命令安装 yasm

yum -y install yasm

yasm 是一款汇编器,并且是完全重写了 nasm 的汇编环境,接收 nasm 和 gas 语法,支持x86和amd64指令集,所以这里安装一下 yasm 即可

2、安装之后运行

在 /usr/local/ffmpeg 会看到有如下几个目录

  1. bin 执行文件目录
  2. lib 静态,动态链接库目录
  3. include 编程用到的头文件
  4. share 文档目录

3、配置库目录到系统中

 

然后进入 bin 目录,执行 ./ffmpeg -version 查看当前版本的详细信息,默认情况下一般会报:

 

libavdevice.so.57: cannot open shared object file: No such file or directory ...

原因是 lib 目录未加载到链接到系统库中,系统库配置文件 /etc/ld.so.conf ,打开后你会发现里面引用了 /etc/ld.so.conf.d/ 下面所有的 *.conf 文件,所以我们只需执行以下命令:

 

vim /etc/ld.so.conf.d/ffmpeg.conf 

然后添加一行内容:

/usr/local/ffmpeg/lib 

之后保存并退出,然后执行 ldconfig 使配置生效,现在再次执行 ./ffmpeg -version 显示就正常了。

 

ldconfig 是一个动态链接库管理命令,其目的为了让动态链接库为系统所共享
ldconfig 的主要用途:默认搜寻/lilb和/usr/lib,以及配置文件/etc/ld.so.conf内所列的目录下的库文件

4、配置执行文件到系统中

 

然后我们可以将这个 bin 目录添加至环境变量中以保证任何时候在任何目录中都能使用 ffmpeg 命令,操作步骤如下:

 

ln -s  /usr/local/ffmpeg/bin/ffmpeg  /usr/bin

 

▪ ffmpeg-php 安装

 

不推荐安装:虽然能成功安装,并能在PHP中获取视频相关信息,但是经测试当导出帧图片时,会失败!

 

FFmpeg 安装完成以后,我们就能正常使用 ffmpeg 命令处理视频的相操作,同时 PHP 中也可以通过 exec() 函数执行 ffmpeg 的相关命令(前提需要修改 php.ini 配置文件,开放 exec 命令权限)。
当然除了 exec() 执行 ffmpeg 外,我们还可以通过安装 PHP 扩展,然后在 PHP 中直接通过 FFmepg 专用函数的方式进行使用。

ffmepg-php 官方扩展网站为 ffmpeg-php.sourceforge.net 。但是由于官方已经停止了维护,所以 PHP 7.0 以上已经无法兼容,基本无法编译成功。经过艰苦的查找,终于找到了第三方修改过的扩展,官方介绍其兼容 PHP 5.6 和 7.2,经过我的测试 PHP 7.1 也能正常通过编译,仓库地址为:https://github.com/TownNews/ffmpeg-php,PHP扩展编译方式如下:

cd /usr/local/src
git clone https://github.com/TownNews/ffmpeg-php

cd ffmpeg-php
cp /usr/local/ffmpeg/include/* ./ -R   // 拷贝 FFmpeg 相关包含文件,否则 make 会提示缺少文件

/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-ffmpeg=/usr/local/ffmpeg --enable-skip-gd-check

make

如果没有加 --enable-skip-gd-check,那么在安装完成后 phpinfo() 显示中会出现:ffmpeg-php gd support..disabled
如果添加了 --enable-skip-gd-check,那么在安装完成后 phpinfo() 显示中会出现:ffmpeg-php gd support..enabled

完成编译以后,就需要配置 PHP 的扩展加载,操作方式如下:

// 拷贝扩展文件到 PHP 的扩展目录
// 扩展目录具体可以查看 php.ini 获取,此处我的默认扩展目录为:/usr/local/php/ext/
cp modules/ffmpeg.so /usr/local/php/ext/

// 编辑 php.ini 配置
vim /usr/local/php/etc/php.ini

在 PHP 配置文件中添加:extension=ffmpeg.so

完成后重启 PHP 即可

systemctl restart php-fpm.service

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值