4

我已经使用 php 的 exec 来执行 FFmpeg 命令,但是当我在浏览器中打开它时它没有工作。但是当我在终端中运行这个 php 文件脚本时它工作正常。我的 php 安全模式已关闭。请帮我解决它。我的 php 代码是

<?php
$output=exec("ffmpeg -f image2 -i /home/phedra/imgs/image/img%03d.png -r 12 -s 610x489 /home/phedra/imgs/video/out.avi", $out);
echo $out;
echo $output;
?>
4

4 回答 4

6

尝试给出 ffmpeg 应用程序所在的完整路径。

例如

/usr/bin/ffmpeg

所以你的函数可能看起来像:

$output=exec("/usr/bin/ffmpeg -f image2 -i /home/phedra/imgs/image/img%03d.png -r 12 -s 610x489 /home/phedra/imgs/video/out.avi", $out);

您必须检查“ffmpeg”的位置。

于 2013-09-04T08:08:06.157 回答
3

我遇到了这个问题,结果证明这是 Apache 对公共目录的权限。

注意:我在 AWS 上运行 Ubuntu 14

安装 FFmpeg 后,我不得不将/var/www/*所有权更改为www-data.

sudo chown -R www-data:root /var/www

(这www-data是这里的重要部分)

然后我运行了以下代码,当我通过 URL (Apache) 访问它时它可以工作

// test.php

$run = system("/opt/ffmpeg/bin/ffmpeg -i /var/www/html/input.mp4 -vf scale=640:480 /var/www/html/output.mp4 &");

if($run) {
    echo "success";
} else {
    echo "failed";
}

/opt/ffmpeg/bin/ffmpeg是我的 FFmpeg 运行的地方。你的可能是/usr/bin/ffmpeg或其他的。您可以通过locate ffmpeg在命令行中键入并查看它为您提供的列表来找到它。

输入文件是一个公共 .mp4 文件,而 output.mp4 文件将位于同一位置。

在你的命令行中php test.php运行这个: - 工作 从你的浏览器运行这个:yourwebsite.com/test.php - 工作

于 2016-07-28T03:46:05.060 回答
0

请注意,如果您在 Windows 上,则必须使用 COMMAS。IE:

$output=exec('"/usr/bin/ffmpeg" -f image2 -i /home/phedra/imgs/image/img%03d.png -r 12 -s 610x489 /home/phedra/imgs/video/out.avi', $out);
于 2014-12-16T15:24:26.943 回答
0

就像@Arfeen 在他的回答中提到的那样,您应该使用 ffmpeg 的路径执行命令,但是,答案“/usr/bin/ffmpeg”中的给定路径并不总是相同的。

首先使用以下命令找到您的 ffmpeg:

which ffmpeg

我的结果是:

/usr/local/bin/ffmpeg

然后回到你的 php 代码并用 ffmpeg 的路径替换命令中的“ffmpeg”(在我的例子中是 /usr/local/bin/ffmpeg)。

于 2018-05-16T08:01:53.360 回答