PHP exec()不使用ffmpeg

时间:2010-03-09 19:37:35

标签: php ffmpeg exec

我正在尝试在PHP中运行以下命令(在Ubuntu上):

<?php
 if (exec("/home/johnboy/ffmpeg/ffmpeg -i test1.mp4 -acodec aac -ab 128kb -vcodec mpeg4 -b 1220kb -mbd 1 -s 320x180 final_video.mov")) 
      { echo "Success"; }
      else { echo "No good"; }

我总是回应“不好”,没有创建文件。

有趣的是,如果我在Shell中运行相同的命令,它就可以运行,没问题。

此外,当我运行上面相同的代码,但替代“whoami”而不是ffmpeg的东西,它的工作原理。 (它回应了“成功”)

关于为什么这不起作用的任何想法?感谢。

8 个答案:

答案 0 :(得分:4)

让stderr给出结果

ffmpeg -i inputfile [more_params] 2>&1

答案 1 :(得分:2)

apache / web用户可以访问/home/johnboy/ffmpeg/ffmpeg吗?也就是说,也许/home/johnboy是0700而不是0755?

也许有资源限制会影响这样一个大型程序及其所有库的加载?

如果您将脚本运行到php cli sapi,它是否正常运行?即使以apache用户身份运行?

当apache web用户通过php cli运行php脚本时strace -ff显示什么?

答案 2 :(得分:2)

使用此

$ffmpeg = "ffmpeg Installed path";
$flvfile = "source video file with root path";
$png_path " "Destination video file with root path and file type";


exec("$ffmpeg -y -i $flvfile -vframes 1 -ss 00:01:60 
     -an -vcodec png -f rawvideo -s 110x90 $png_path");

答案 3 :(得分:1)

您正在使用文件名的相对路径。您确定在正确的目录中执行命令吗?

答案 4 :(得分:1)

如果你想以这种方式执行某些事情会有一些问题 1.也许你有一些权限问题,网络服务器有限制处理一些系统执行 2.也许您的路径文件不正确 3.您可以尝试使用shell_exec来执行系统执行。

无论如何,我要做的是让我的执行顺利进行, 我将编写2个程序,其中包含消息传递,例如客户端服务器程序。 服务器会等待来自客户端的一些消息来执行一些命令(所有命令,它都没有权限问题)。您在Web上所要做的就是致电您的客户端应用程序。

我强调的是从网络和系统构建一些界面。它会解决许可问题带来的很多问题。

希望这有帮助。

答案 5 :(得分:0)

函数exec()只返回输出的最后一行,我怀疑该命令的最后一行是空白的。如果你想要命令的全部内容,你应该使用shell_exec()。

还要跟踪命令的执行位置,尝试:print(shell_exec("pwd"));

答案 6 :(得分:0)

启用安全模式,它将起作用

答案 7 :(得分:0)

$output = shell_exec('/home/person/www/ffmpeg 2>&1');
echo "<pre>$output</pre>";

注意2&gt;&amp; 1部分......