代码之家  ›  专栏  ›  技术社区  ›  Dodinas

php exec()不使用ffmpeg

  •  4
  • Dodinas  · 技术社区  · 14 年前

    我正在尝试在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 回复  |  直到 8 年前
        1
  •  2
  •   geocar    8 年前

    Apache/Web用户是否可以访问 /home/johnboy/ffmpeg/ffmpeg ?也许是这样 /home/johnboy 是0700而不是0755?

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

    如果将脚本运行到php cli sapi,它的行为是否正确?即使以Apache用户的身份运行?

    做什么? strace -ff 显示Apache Web用户何时通过php cli运行php脚本?

        2
  •  4
  •   kapa    13 年前

    获取stderr将给出结果

    尝试

    ffmpeg -i inputfile [more_params] 2>&1
    
        3
  •  2
  •   Johan    13 年前

    使用这个

    $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");
    
        4
  •  1
  •   LukáÅ¡ Lalinský    14 年前

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

        5
  •  1
  •   deddihp    14 年前

    如果您想以这种方式执行某些操作,可能会出现一些问题。
    1。可能您有一些权限问题,Web服务器有处理系统某些执行的限制。
    2。可能您的路径文件不正确。
    三。您可以尝试使用shell_exec对系统执行。

    不管怎样,我要做的是让我的处决顺利进行, 我将编写两个包含消息传递的程序,例如客户机-服务器程序。 服务器将等待来自客户机的一些消息来执行某个命令(所有的命令,都不是权限问题)。在Web中,您所要做的就是调用客户机应用程序。

    我强调的是从Web和系统构建一些接口。它可以解决很多权限问题。

    希望能帮上忙。

        6
  •  0
  •   rook    14 年前

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

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

        7
  •  0
  •   Darren    12 年前

    启用安全模式,它将工作

        8
  •  0
  •   Mark    12 年前
    $output = shell_exec('/home/person/www/ffmpeg 2>&1');
    echo "<pre>$output</pre>";
    

    注意2>&1部分…