当我提供 ffmpeg 的绝对路径或通过编辑环境变量使其在全局范围内工作时,ffmpeg 可以在我的本地计算机上运行。
但在我的网站上它根本不起作用。我将 ffmpeg.exe、ffplay.exe 和 ffprobe.exe 上传到 public_html/
这是我的代码:
<?php
ini_set ('display_errors', 1);
ini_set ('display_startup_errors', 1);
error_reporting (E_ALL);
$image1 = "/home/mywebsitename/public_html/uploads2/1.png";
$image2 = "/home/mywebsitename/public_html/uploads2/2.png";
$ffmpeg = "/home/mywebsitename/public_html/ffmpeg";
$command = $ffmpeg." -i ".$image1." -vf scale=100:-2 ".$image2;
system($command);
?>
它应该使一个图像文件模仿另一个图像文件,同时在大小和质量上有一些差异。
我在 php.ini 文件中启用了系统功能,使其可以工作,并且不再出现错误。
我还将所有涉及的文件和文件夹(uploads2文件夹、1.png、2.png、ffmpeg程序)的权限更改为777,允许读取、写入和执行所有内容。
但是,没有任何输出,文件保持不变。如何让 ffmpeg 在我的网站上运行?
FFmpeg 需要安装在托管您网站的服务器上,并且您的用户帐户必须有权访问该服务器上的 FFmpeg。
您不能只在系统上上传
.exe
文件并期望它能够工作,因为它是 Windows 可执行文件,并且具有在 Windows 计算机上运行它所需的其他依赖项。您的网站可能在基于 Linux 的计算机上运行。
如果您使用共享网络托管计划,您可以询问您的网络托管提供商,看看他们是否可以为您提供对服务器上安装的 FFmpeg 实例的访问权限(这不太可能),或者您可以租用 VPS 并拥有完整的访问系统来安装和管理您需要的所有软件,包括 FFmpeg。
对于 PHP 中的图像处理,您还可以使用其他替代方案,例如广泛使用的
GD
和 Imagick
扩展,并且很可能已经安装在您的网站运行的环境中。 更多信息