【问题标题】:FFMPEG works from command line but not PHPFFMPEG 从命令行工作,但不是 PHP
【发布时间】:2013-08-19 05:20:54
【问题描述】:

我有一个奇怪的情况刚刚发生。 FFMPEG 不再从 PHP 执行,而是从命令行执行。

这正是命令的内容:

ffmpeg -i ../../uploads/ee78d5deb564901626067cc0008456ed.mp3 -ab 96k -y ../../uploads/mp3/ee78d5deb564901626067cc0008456ed_6203688.mp3

如何在 PHP 脚本中执行:

if(! exec("ffmpeg -i ".$target_path."".$hash_filename.".".$path_extension." -ab 96k -y ".$target_path."mp3/".$hash_filename."_".$session_ID.".mp3")){
    echo 'ffmpeg failed';
}

此命令确实有效,但不再有效。我最近更新了 plesk,但我非常怀疑这会影响到这一点。我认为我最近所做的唯一可能影响它的事情是将文件上传到子域。所以命令中文件所在和存储的目录是在文档根目录之外的目录中。但是,move_uploaded_file 函数有效,我已将 PHP ini 中的 open_basedir 更改为 webspace 根目录。

【问题讨论】:

  • 你可以尝试用 $error = array(); 输出错误exec("你的命令在这里", $error); var_dump($error);

标签: php ffmpeg exec


【解决方案1】:

tail -f /var/log/apache2/error_log

让我们知道您在那里看到了什么...根据您的平台进行调整...

这是为了灯(opensuse)

【讨论】:

    【解决方案2】:

    你可以试试 system() 命令。它会返回来自服务器的响应

    system("ffmpeg -i ".$target_path."".$hash_filename.".".$path_extension." -ab 96k -y ".$target_path."mp3/".$hash_filename."_".$session_ID.".mp3")
    

    如果当前版本的 php 不支持 ffmpeg,它将返回错误。

    您可以修改您的命令以获取具有正确路径的 ffmpeg。在我的情况下,它的工作方式类似于下面的代码

    exec("/usr/local/bin/ffmpeg -i ".$target_path."".$hash_filename.".".$path_extension." -ab 96k -y ".$target_path."mp3/".$hash_filename."_".$session_ID.".mp3"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-12
      • 2010-11-30
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 2018-01-31
      • 2011-07-04
      • 1970-01-01
      相关资源
      最近更新 更多