PHP视频处理器安装环境搭建
背景缘由
开发过程中,客户需要上传视频的时候,要求获取视频中的某一帧图片作为界面展示。目前已知PHP已有视频处理器扩展(php-ffmpeg)可直接使用,安装使用后发现,php-ffmpeg对服务环境有一定的依赖,故此将此实践分享出来,供大家参考!
服务搭建
代码环境安装”php-ffmpeg/php-ffmpeg” 扩展包
composer require php-ffmpeg/php-ffmpeg
liunx环境服务器安装ffmpeg
- 将文件依赖包【ffmpeg-4.2.2.tar.bz2】,上传到/opt目录下
- 解压文件
tar -jxvf ffmpeg-4.2.2.tar.bz2
- 进入解压目录
cd ffmpeg-4.2.2
- 编译安装
./configure --disable-x86asm --enable-shared && make && make install
- 退出到 /opt 目录
cd /opt
- 修改用户组权限
chown -R www:www ffmpeg-4.2.2
- 编辑可视查看版本
vim /etc/ld.so.conf
// 在里面加入一句 /opt/ffmpeg-4.2.2
- 使其生效 执行命令
ldconfig
- 查看版本信息
ffmpeg
(如果能正常查看表示安装成功) - 需要使用该功能,需要在php.ini中 disable_functions 将
proc_open,proc_get_status
两个函数放开 - 在nginx服务器配置中增加可访问目录
vim /usr/local/nginx/conf/fastcgi.conf fastcgi_param PHP_ADMIN_VALUE "open_basedir=/home/wwwroot/:/tmp/:/proc/:/mnt/data/:/opt/ffmpeg-4.2.2/"; // 主要新增: :/opt/ffmpeg-4.2.2/
- 重启服务器及php-fpm
/etc/init.d/php-fpm restart
使用案例
/**
* 获取视频的某一帧图片
*
* @name getVideoFrameOfImage
*/
public static function getVideoFrameOfImage($resource, $second)
{
// 资源文件路径
$fileInfo = pathinfo($resource);
$fileNameNoSuffix = $fileInfo['filename'];
$dirname = $fileInfo['dirname'];
if (Config::get('app.ffmpeg')) {
$ffmpeg = FFMpeg::create(Config::get('app.ffmpeg'));
} else {
$ffmpeg = FFMpeg::create();
}
$video = $ffmpeg->open($resource);
$frameName = $dirname . '/' . $fileNameNoSuffix . '.jpg';
$video->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds($second))->save($frameName);
return $frameName;
}
配置获取(当前展示的windows的,liunx的配置全路径的可执行文件即可):
// (windows)视频压缩软件安装配置
'ffmpeg' => [
'ffmpeg.binaries' => 'D:\ffmpeg-20200301-1281399-win64-static\ffmpeg-20200301-1281399-win64-static\bin\ffmpeg.exe',
'ffprobe.binaries' => 'D:\ffmpeg-20200301-1281399-win64-static\ffmpeg-20200301-1281399-win64-static\bin\ffprobe.exe'
],
// (liunx)视频压缩软件安装配置
'ffmpeg' => [
'ffmpeg.binaries' => '/opt/ffmpeg-4.2.2/ffmpeg',
'ffprobe.binaries' => '/opt/ffmpeg-4.2.2/ffprobe'
],
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 3年前 自动加精
推荐文章: