安装ThinkPHP5.1并在框架中使用FFmpeg视频处理工具遇到的问题和解决办法

2023-09-14 15:41:32

一:安装ThinkPHP5.1框架

问题一:
安装方法有很多,我这里使用composer安装的,但是遇到了问题,出现了报错
安装方法可是查看 https://www.kancloud.cn/manual/thinkphp5_1/353948

composer create-project topthink/think blog 5.1.x

PHP Warning:  putenv() has been disabled for security...........

解决办法:

修改PHP配置文件,将 putenv() 函数移除disable_functions即可

修改之前:

在这里插入图片描述

修改之后:去掉putenv

在这里插入图片描述

问题二:
这个问题解决了,还是遇到了下一个问题
报错:

The Process class relies on **proc_open**, which is not available on your PHP in ........

找到配置文件删除 proc_open
在这里插入图片描述
同理还有 exec,system

进行相同的删除之后保存,重启PHP服务,再执行安装命令即可。

二:FFmpeg

什么是FFmpeg?

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由MichaelNiedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。 FFmpeg编码库可以使用GPU加速。
引用:https://baike.baidu.com/item/ffmpeg/2665727

因公司项目需求需要对视频做处理,获取相关信息等,需要使用FFmpeg

首先需要在服务器中安装FFmpeg

centos7安装ffmpeg

sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

sudo yum install ffmpeg ffmpeg-devel -y

查看环境变量是否配置成功

ffmpeg -version

在这里插入图片描述
在ThinkPHP5.1框架中使用该扩展
在项目中使用Composer快速安装PHP-FFMpeg

composer require php-ffmpeg/php-ffmpeg

基本使用
注意:tp5需要全部添加斜杠,比如:

$ffmpeg = \FFMpeg\FFMpeg::create();

问题一:
但是出现了如下报错

Unable to load FFProbe

解决办法:进行程序运行目录的配置

使用 whereis ffmpeg 查看FFmpeg运行目录
在这里插入图片描述

$FFMpeg = \FFMpeg\FFMpeg::create([
        'ffmpeg.binaries' => '/usr/bin/ffmpeg',	//FFmpeg的运行目录
        'ffprobe.binaries' => '/usr/bin/ffprobe'	//ffprobe的运行目录
]);

问题二:

报错:

file_exists(): open_basedir restriction in effect. File(/usr/bin/ffprobe) is not within the allowed path(s)

解决办法:
参照:http://053086.com/106.html
方法一:
在网站设置里把‘防跨站攻击’勾选去掉: 将网站目录设置为/www/wwwroot/网站文件目录/public 运行目录设置为/ 去掉防跨站攻击(open_basedir)的对勾。
在这里插入图片描述
然后到软件管理——找到所安装的PHP——设置——重启即可:
在这里插入图片描述

方法二:

is not within the allowed path(s) 意思是没权限访问那个文件夹

解决方法:
每个网站路径下面都有一个 .user.ini 文件.
里面的内容为

open_basedir=/www/wwwroot/xxx.com/:/tmp/:/proc/

这个代表本网站可以访问的路径
如果需要添加其他路径.可以直接在后面添加即可,每个路径之间用:隔开
添加以后 重启下Nginx即可生效. 其他环境应该也都一样.

到此已经完成有关工作

但是:
在 TP 以前的版本都会提供些 系统常量 用于快捷操作

比如 上传图片需要的公共目录路径 但是 TP5.1 砍掉了这些
在这里插入图片描述
所以导致直接使用 ROOT_PATH 失效,FFmpeg save frame 失败

解决方法:

5.1版本取消了所有的系统常量,原来的系统路径变量改为使用Env类获取(需要引入think\facade\Env

 "app_path=========".Env::get('app_path')."</br>";
 "root_path=========".Env::get('root_path')."</br>";
 "think_path=========".Env::get('think_path')."</br>";
 "config_path=========".Env::get('config_path')."</br>";
 "extend_path=========".Env::get('extend_path')."</br>";
 "vendor_path=========".Env::get('vendor_path')."</br>";
 "runtime_path=========".Env::get('runtime_path')."</br>";
 "route_path=========".Env::get('route_path')."</br>";
 "module_path=========".Env::get('module_path')."</br>";

所有问题都解决了!!!

更多推荐

GaussDB技术解读系列:性能调优

近日,在第14届中国数据库技术大会(DTCC2023)的GaussDB“五高两易”核心技术,给世界一个更优选择专场,华为数据库技术专家李士福详细解读了GaussDB性能调优的相关技术和应用实践。本篇为大家分享GaussDB性能调优的实践。主要包括三个部分,分别是性能调优的整体介绍,性能调优的关键技术,性能调优的应用实践

5.14 Set Feature Command

5.14SetFeatureCommandSetFeatureCommand规定了Feature的属性。SetFeatureCommand使用datapointer,CommandDword10,CommandDword11,CommandDword12,CommandDword13,CommandDword14和Co

B : DS顺序表--连续操作

Description建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)该类具有以下成员函数:构造函数:实现顺序表的初始化。插入多个数据的multiinsert(inti,intn,intitem[])函数,实现在第i个位置,连续插入来自数组item的n个数据,即从位置i开始插入多个数据。删除多个数据

vue3+element项目创建

一、创建vue3项目步骤要创建一个Vue3+ElementUI的项目,你可以按照以下步骤进行操作:1.确保你已经安装了Node.js和npm(Node.js的包管理器)。你可以在命令行中运行以下命令来检查它们是否已经安装:node-vnpm-v2.使用VueCLI来创建一个新的Vue项目。在命令行中运行以下命令:npm

一花落,万物生,AIGC为国货复兴注入新活力

在最近的商业新闻中,国货们发“花难财”的热度持续在涨,“花西子”曾经是中国国货的代表之一,以其独特的美妆产品而闻名于世。然而,近期因为李佳琦“79块钱哪里贵了”事件的原因,让不少网友扒出这支79的眉笔算下来一克竟要比黄金还贵,加上主播的出言嘲讽消费者,让大家纷纷开始抵制这个产品。“花西子”翻车之后,国货品牌在一夜之间占

【湖科大教书匠】计算机网络随堂笔记第1章(计算机网络概述)

目录1.1、计算机网络在信息时代的作用我国互联网发展状况1.2、因特网概述1、网络、互连网(互联网)和因特网2、因特网发展的三个阶段因特网服务提供者ISP(InternetServiceProvider)基于ISP的三层结构的因特网3、因特网的标准化工作4、因特网的组成边缘部分核心部分C/S和P2P:客户-服务器方式:

android 逆向去广告工具和流程

主要用到的软件:1、安卓修改大师:有很多功能,但有会员限制。好用的是字符查找后,可以在smali和java切换2、apktool:反编译、回编译工具。但是是命令行方式3、jadx-gui-1.4.7-no-jre-win反编译成java,非常好用4、AndroidKiller_v1.3.1:反编译有些不正常,签名后,在

SpringMVC

目录SpringMVC体系结构SpringMVC配置注解@Controller@RequestMapping@RequestParam@RequestBody@SessionAttributes@DateTimeFormat@ResponseBodySpringMVC体系结构(1)首先浏览器发送请求——>Dispatc

Linux的调试工具 - gdb(超详细)

Linux的调试工具-gdb1.背景2.开始使用指令的使用都用下面这个C语言简单小代码来进行演示:1.list或l行号:显示文件源代码,接着上次的位置往下列,每次列10行。2.list或l函数名:列出某个函数的源代码。3.r或run:运行程序。4.break或b行号:在某一行设置断点5.n或next:单条执行(类似vs

RK3568驱动指南|第五篇 中断-第42章 软中断实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和MaliG522EE图形处理器。RK3568支持4K解码和1080P编码,支持SATA/PCIE/USB3.0外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568支持安卓11和li

快速排序模拟实现

快速排序,时间复杂度为O(NlogN),属于排序中相对快的那一列,以下是快排的模拟实现:法一:左右指针交换法voidswap(int*x,int*y){inttmp=*x;*x=*y;*y=tmp;}//交换函数intgetmid(int*a,intleft,intright){intmid=(left+right)/

热文推荐