FFMPEG可以从命令行工作,但不能从PHP工作


FFMPEG works from command line but not PHP

我刚刚遇到了一个奇怪的情况。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函数是有效的,我已经将PHPini中的open_basedir更改为Web空间根。

tail-f/var/log/apache2/error_log

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

这是用于灯(打开)

您可以尝试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"))
相关文章: